--isvoid Class A{ r:C; s:D; u:Bool; a():Bool{ { isvoid new C; -- undefined type let a:Bool <- isvoid r in a<- isvoid (new C); u <- isvoid (new A); isvoid (r); isvoid(new D); while isvoid(1) loop isvoid(r) pool; if isvoid(r) then isvoid(s) else isvoid(r) fi; u <- case isvoid(s) of q:Int => isvoid(q); y:Bool => isvoid(y); esac; s.f(isvoid(true)); s.d(isvoid(1)); s.d(isvoid(s.f(true))); s.d(isvoid(s.g(true))); } }; }; Class D inherits C{ c(i:Int):Bool { true }; d(i:Bool):Bool { true }; }; Class C{ f(k:Bool):Bool { true }; g(k:Bool):Int { 1 }; }; Class Main{ main():Object{ 1 }; };