Define an abstract class that supports object representation in character form
Nodes of different colours represent the following:
Solid arrows point from a submodule to the (sub)module which it is descended from. Dashed arrows point from a module or program unit to modules which it uses.