I'm going to parameterize error type of TransformResult, and the result type will be replaced with Result<TransformedExpression, E>.