Module GroupPointers { Group Zeta { X=10, Y=20, A$=" ok" Dim A(10)=1 Module ShowX10 { Print .X*10, .A$ .Y++ } } Print Zeta.A(3) L=Zeta ' a copy of Zeta to L M->Zeta ' using weak reference inside N->(Zeta) ' using real pointer, to a copy of Zeta Link Zeta to P ' P is a reference of Zeta List ! \\ we get a list (not at that order): Zeta[Group],L[Group], P[Group], M*[Group], N*[Group], plus all members of Zeta,L, P \\ M and N have no operating members, Interpreter make them at demand (using the pointer, for temporary use) Modules ? \\ We get a list: Zeta.ShowX10, L.ShowX10, P.ShowX10 \\ Also we don't have operating modules for M and N, but at demand we get them (for temporary use) P.A(2)+=10 Print P.A(2)=Zeta.A(2) ' True because its member is a reference Print L.A(2)=1 ' True Print M=>A(2)=Zeta.A(2) 'True Print N=>A(2)=Zeta.A(2) 'False Print N=>A(2)=L.A(2) ' True N->0& ' Null N->M ' pointers can point to another group. Print N=>A(2)=11 N=>ShowX10 Print Zeta.Y=21 } GroupPointers