--isvoid Class A{ r:Undef; s:D; a():Int{ { isvoid new Undef; -- undefined type let a:Undef <- isvoid r in a<- isvoid (new Undef); r <- isvoid (new Undef); isvoid (undef); isvoid(new D); isvoid(new Undef); while isvoid(1) loop isvoid(r) pool; if isvoid(r) then isvoid(s) else isvoid(q) fi; case isvoid(s) of q:Int => isvoid(q); y:Undef => isvoid(y); esac; s.f(isvoid(true)); s.c(isvoid(1)); s.d(isvoid(1)); s.c(isvoid(s.f(true))); s.d(isvoid(s.f(true))); s.c(isvoid(s.g(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 }; };