type TNode = class; TList = class node: TNode; end; TNode = class a: T; lst: TList; end; begin var n := new TNode; n.a := 1; var lst := new TList; lst.node := n; n.lst := lst; assert(n.a = 1); assert(lst.node.a = 1); end.