ElTypeRef is in that inheritance-line the last class and not an abstract class.
Same for ElConstraintExpression, ElUnaryOperator and ElBinaryOperator
My editor complains not having done this.

ElTypeRef is in that inheritance-line the last class and not an abstract class.
Same for ElConstraintExpression, ElUnaryOperator and ElBinaryOperator
My editor complains not having done this.

Good catch - fixed now.
You should also add effective_type() to BmmContainerType for about the same reasons
Again right; the change is now up.
Keep the good thing rolling, found another one 
flattenedTypeList() must be implemented in BmmTupleType and BmmSignature
Also fixed 