package test native testFail(string msg) native testSuccess() module A int x function setX(int x) this.x = x function getX() returns int return x module B use A module C use A class D use B use C override function setX(int x) B.setX(x) override function getX() returns int return B.getX() init D d = new D() d.setX(4) if d.getX() != 4 testFail("foo fail") testSuccess() endpackage