we actually need to follow all of types (reversible and irreversible) in follow, follow_all_ofs is now follow_reversible_ofs and only reduced reversible of types, it also does not follow typedefs (this allows to replace proper In replacement in typedefs, when building using calls it's important to distinguish between of types and other types when unifying them with the first function parameter, that's why we need to use a different follow function here
of unification must have a higher priority then TType unification
add some type constructor tests