Nodes of different colours represent the following:
Solid arrows point from one derived type to another which extends
(inherits from) it. Dashed arrows point from a derived type to another
type containing it as a components, with a label listing the name(s) of
said component(s). Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.