add ExpressionTransformer class
add leaf expression transformers
[refactor] hide generator stuff from the compiler
add missing inheritances
[refactor] move utility methods to more specific transformers
[refactor] rename method
[refactor] unify types of members