Object-oriented programming makes use of a two-level classfication hierarchy; there are objects (instances) and their classes (types). Multi-Level Programming supports an unbounded number of classification levels, including metatypes, meta-metatypes, etc.
Multi-Level Programming was inspired by Multi-Level Modeling which in turn is a variation on metamodeling. Unlike classic metamodeling, which can be found in languages like CLOS as well, the idea is not to define language semantics but to model the problem domain with multiple levels of classification.
In addition to affording control over the standard programming level, multi-level programming can open up the door for exploring ways to avoid parametric polymorphism via using simple classification only.
Thomas Kühne and Daniel Schreiber
"Can Programming be Liberated from the Two-Level Style? — Multi-Level Programming with DeepJava"
ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages and Applications: OOPSLA'07, October 21–25, Montréal, Canada, 2007
Bernd Neumayr, C. Schuetz
"DeepRuby: Extending Ruby with Dual Deep Instantiation"
Proceedings of MODELS 2017 Satellite Events, CEUR Workshop Proceedings, Vol-2019, ISSN 1613-0073, 2017.