I need to develop the following class of diagrams: 
I wrote the code, but, you have problems with the reference to round units.
The XmlFileManager class contains:
unit XmlFileManager; interface uses xmldom, XMLIntf, msxmldom, XMLDoc, SysUtils, DateUtils, Classes, Dialogs, XmlEnpManager; type TXmlFileManager = class private [...] xmEnp: TXmlEnpManager; xmEnpInicial: TXmlEnpManager; xmEnpFinal: TXmlEnpManager; [...] end.
Abstract class, XmlNodeManager:
unit XmlNodeManager; interface uses xmldom, XMLIntf, msxmldom, XMLDoc, SysUtils, DateUtils, Classes, Dialogs, XmlFileManager; type TXmlNodeManager = class protected { sgy alias para strategy } sgyIterator: Integer; sgyContext: TXmlFileManager; sgyAttributes: TStringList; sgyNode: IXMLNode; [...] end.
And a specific XmlEnpManager class:
unit XmlEnpManager; interface uses xmldom, XMLIntf, msxmldom, XMLDoc, SysUtils, DateUtils, Classes, Dialogs, XmlNodeManager; type TXmlEnpManager = class (TXmlNodeManager) public constructor Create(aContext: TXmlFileManager); overload; override; constructor CreateInicial(aContext: TXmlFileManager); reintroduce; overload; constructor CreateFinal(aContext: TXmlFileManager); reintroduce; overload; [...] end.
Build failed with error:
[dcc32 Fatal Error] XmlNodeManager.pas (7): F2047 Circular block link to "XmlFileManager"
Any ideas how to solve this problem?