graph TD subgraph "Framework Layer" A[Entity
Abstract Base] B[Simulator~T~
Abstract with Template Method] C[EntityReader~T~
Abstract] D[IEntityFactory~T~
Interface] E[IEntityIterator~T~
Interface] end subgraph "Morg Specialisation" F[Morg
Inherits Entity] G[Dish
Inherits Simulator~Morg~] H[MorgReader
Inherits EntityReader~Morg~] I[MorgFactory
Implements IEntityFactory~Morg~] end subgraph "Strategy Pattern" J[IMovementStrategy] K[IFeedingStrategy] L[MovementStrategyPaddles] M[MovementStrategyOozes] N[FeedingStrategyAbsorbs] O[FeedingStrategyEnvelops] end subgraph "Decorator Pattern" P[FileReader] Q[CSVReader] R[MorgReader] end A --> F B --> G C --> H D --> I E --> S[EntityIterator~T~] F --> J F --> K J --> L J --> M K --> N K --> O P --> Q Q --> R R --> H I --> F I --> J I --> K