With introduction of type maps and type selectors homogenous became a misnomer. Drop "homogenous" in favor of "typed" with default value true and
change homogenous=true to typed=false annotation. Typed would mean that the type shall be explicitly provided by elements and false would mean that
it will be computed from reference type and type map/selector annotations. Or use reference-type annotation with string value "reference" indicating
that type shall be taking from EReference - the same as homogenous. Replace isHomogenous with isTyped (with negation).