@property INode parentNode();
@property IDocument ownerDocument();
interface IDocument: INode {}
interface IEntityReference: INode {}
class DOMImplementation(T)
abstract class Node: INode
@property Node parentNode() { return null; }
@property Document ownerDocument() { return null; }
@property bool readonly() { return true; }
abstract class NodeWithChildren: Node {}
class Document: NodeWithChildren, IDocument {}
class EntityReference: NodeWithChildren, IEntityReference
@property bool readonly() { return true; }
alias aaa = DOMImplementation!string;