Programming paradigm that allows a program to inspect and modify its own structure and behavior at runtime.
Generality: 702