type
Base = object of RootObj
A = ref object of Base
B = ref object of Base
method outer(obj: Base) {.base.} =
echo "outer"
obj.inner()
method inner(obj: Base) {.base.} =
quit "to override!"
method inner(a: A) =
echo "inner A"
method inner(b: B) =
echo "inner B"
var a: A
var b: B
a.outer()
b.outer()