class Top def sum as int is virtual return 1 def product as int return 2 get something as int return 1 class Bottom inherits Top def sum as int return base.sum + 2 def product as int return base.product * 3 get something as int return base.something * 2 class A def method as int return 1 get prop as int return 1 class B inherits A # testing the "base" definitions being overloads def over(i as int) as int return i def over(s as String) as int return 0 class C inherits B # def over(i as int) as int # return base.over(i) + i # testing the "base" definitions being in a grandparent instead of a parent class: def method as int return base.method + 1 get prop as int return base.prop + 1 class Test def main is shared b as Bottom = Bottom() assert b.sum==3 assert b.product==6 assert b.something==2 c as C = C() # assert c.over(2)==4 assert c.method==2 assert c.prop==2