In BmmClass we have to abstract functions: isPrimitive and isAbstract. They are declared optional, but in BmmEntity, where they are derived from, they are declared as mandatory.
I think this is not allowed and also unclear what is meant here, I think it would be better to make the functions mandatory too.
This is also in BmmType, where isAbstract is missing, but isPrimitive is mandatory. The missing isAbstract is not an error because it can be implemented in derived classes from BmmType (I did not check the scheme so far to see if this is done.), but for clarity, I would also have isAbstract abstracted in BmmType.
In fact, the only reason for existing of BmmEntity is those two functions, it is also possible to remove this class entirely. (it is more complex then needed this way)