In the department of wishful thinking:
In the department of wishful thinking: type TElement = class(TSomeClass) Sibling: TElement; end; type LinkAttribute = class(TCustomAttribute) FLink: TElement; constructor Create(aLink:TElement); end; TContainer = class X1: TElement; [Link(X1)] // Y1: TElement; X2: TElement; [Link(X2)] // Y2: TElement; end; It would be nice if attributes could reference class/record local fields or properties. I know - it would put a lot of load on the compiler / linker. If the compiler was two pass, order would not be important. Since the compiler is single pass - perhaps something like TContainer = class [Link(forward Y1)] X1: TElement; Y1: TElement; [Link(forward Y2)] X2: TElement; Y2: TElement; end; could be an option as well. #MoreDeclarationLessCode