The problem is that Attribute names must be the same type, even if the Attributes are on different entities. Also, an Entity name cannot be used as an Attribute of a different type (like String or Integer) on a different Entity. This is a restriction of the reference compiler el. The problem is that we use the attribute types to drive the parser, but at compile time we don't
know for sure the context that will be in place. The solution is that attributes can almost be considered to exist separately from Entities, and they get assigned to Entities.
For example, if you have entities CLIENT, and CASE, then the following will give you errors:
Client name String main rw
Client case String main rw <<== ERROR: case can't be a string
Case name Integer main rw <<== ERROR: name is string on Client
Case number Integer main rw