Lots of cycle-reference goodness. -- in.cue -- [!~"^[.]"]: c a: b b: [string]: int c: a: int [string]: c a: b b: [string]: int c: a: int -- out/eval/stats -- Leaks: 0 Freed: 7 Reused: 2 Allocs: 5 Retain: 2 Unifications: 7 Conjuncts: 59 Disjuncts: 9 -- out/eval -- (struct){ a: (struct){ a: (int){ int } } b: (struct){ a: (int){ int } } c: (struct){ a: (int){ int } } } -- out/compile -- --- in.cue { [!~"^[.]"]: 〈0;c〉 a: 〈0;b〉 b: { [string]: int } c: { a: int } [string]: 〈0;c〉 a: 〈0;b〉 b: { [string]: int } c: { a: int } }