class cl1 { method m1 {args} { .... code ... } } class cl2 { inherit cl1 method m1 {args} { .... code ... } method m2 {args} { m2 ; # this calls cl2 m2 # should be mapped to: my m2 } } class cl3 { inherit cl2 method m1 {args} { .... code ... } method m2 {args} { .... code ... } method m3 {args} { m2 ; # this calls cl3 m2 (and not cl2 m2 !) # should be mapped to: my m2 } } class cl4 { inherit cl3 method m4 {args} { m2 ; # this calls cl3 m2 # should be mapped to: my m2 cl2::m2 ; # this calls cl2 m2 # should be mapped to: my cl2::m2 cl2::m1 ; # this calls cl2 m1 # should be mapped to: my cl12::m1 cl2::cl1::m1 ; # this calls cl1 m1 # should be mapped to: my cl2::cl1::m1 }