namespace A { typedef here[T] = (A[T]^ next, T^ stuff, int item); int something(A[T]^ entry) { T^ thing = entry^.stuff; A[T]^ nextentry = entry^.next; int item1 = nextentry^.item; typedef RingBuffer = (count size, A[T]^ first); var RingBuffer rb = (123, entry); rb.first = entry; int item2 = rb.first^.item; typedef Generic[U] = (int x, A[T]^ a, T^ b, Generic[U]^ c, U^ d); var Generic[T] g; g.x = 123; g.a = entry; g.b = thing; g.c = @g; g.d = thing; int item3 = g.a^.item; return g.c^.x; } }