A Composite design pattern composes objects into tree structures.
Clients operate uniformly on leaves and composite nodes
The tree structure may be non-mutable and built via constructors
Alternatively, the tree structure may be mutable, and built via Add and Remove operations