class A {
var x:int;
function f():int {1}
method m(i:int) returns (j:int) {
var j [j > 0];
}
}
class B refines C {}
class C refines D {}
class D refines A {
transforms m(i:int) returns (j:int, k:int)
{
*
}
}
class X {
method m() returns (c: bool)
{
c := true;
}
}
class Y refines X {
refines m() returns (c: bool, d: bool)
{
c := false;
}
}