parent
New()
var/parent/child/child = new .child()
child
New()
This creates an infinite cross-reference loop when it shouldn't. the . path operator should be getting processed here first from __TYPE__, which in this context is /parent.
It appears that somehow the compiler is interpreting child to be a reference to the variable we're creating, rather than an upward path search as intended.
Weirdly, this only happens when declaring a var:
parent
New()
var/parent/child/child
child = new .child()
child
New()
This compiles fine.