We use recursion to abstract the super-class, which means everything can be treated as an Object and recursion over the structure is handled by polymorphism.

could be or .
- gives a Composite (Design Pattern) with tree-shaped object graphs
- produces list-shaped object graphs for a number of purposes such as decorators or chain-of-responsibility.