A CausallyReflectiveMetastructure...
Is a metastructure -- it is code about code, not code about content.
Is reflective -- it describes itself, rather than something else.
Is causal -- a change to the metastructure changes the behavior of the system, as opposed to simply breaking the description.
Java has a ReflectiveMetastructure?, in that programs can query the system for information about classes, methods, members and so on. The Java metastructure is, however, generally not causally reflective. If you succeed at changing a Java class object, you generally succeed at breaking the system.
Many early ObjectOrientedDatabases were like this.
Smalltalk and some lisp systems have a CausallyReflectiveMetastructure. When I change the contents of a CompiledMethod? (carefully!), the system behavior actually changes.