!7 cprint { class A { swappable S x() { ret "a"; } } class B extends A { swappable S x_inner() { ret super.x_base(); } S x_base() { ret "b" + x_inner(); } } start-thread { assertEqualsVerbose("a", new A().x()); assertEqualsVerbose("ba", new B().x()); // override the whole x() method new B c; c.x = () -> "c"; assertEqualsVerbose("c", c.x()); // override the A.x() method while keeping B's added logic c = new B; c.x_inner = () -> "c"; assertEqualsVerbose("bc", c.x()); } }