| Thoughts on the semantics of reflection and metalevel-crossing semantics: |
| ------------------------------------------------------------------------- |
| |
| A class in NGPM shall itself be an object. Therefore, it must be |
| possible to write a literal that denotes a class. |
| |
| There is an association "InstanceOf" linking any object to its |
| class. Since the "Object" class does not expose any features, all |
| classes conform to it. Therefore, all objects are permissible to be |
| linked to their class using the InstanceOf association. |
| |
| All metaobjects as modeled in the metamodel appear as regular objects |
| in the programming model. Many of them may be read-only during |
| program runtime. |
| |
| The class object for class Class has itself as its type. |
| |
| The Block type can as well be instantiated, and an instance of type |
| Block is just a runtime object whose class is Block. So are Statement, |
| Assignment, Variable, ... |
| |
| For many of these types corresponding literals are required to represent |
| values of the type. |