type
Base = ref object of RootObj
A = ref object of Base
B = ref object of Base
proc inner(obj: Base) =
echo "to override"
proc outer[T](obj: T) =
mixin inner
echo "outer"
obj.inner()
proc inner(obj: A) =
echo "inner A"
proc inner(obj: B) =
echo "inner B"
var a: A
var b: B
a.outer()
b.outer()