Resolve name clashes by generalising API return types
As described in the comments of issue #279 (closed) and in issue #242 (closed) name clashes may lead to unusable code getting generated.
This happens as many API methods only use model elements' names for naming. If multiple model elements share the same name across MGLs and if their MGLs have some kind of import/inheritance relationship this may lead to duplicate method names with different return types.
Whenever this occurs only one method with a generalised return type should be created. The return type should be the most common super type of all types involved in the name clash.