Member predicate OverridableAccessor::getAnUltimateImplementor

Gets a callable that (transitively) implements this interface callable, if any. That is, either this interface callable is immediately implemented by the result, or the result overrides (transitively) another callable that immediately implements this interface callable.

Note that this is generally not equivalent with

result = getAnImplementor()
result = getAnImplementor().(OverridableCallable).getAnOverrider+()`

as the example below illustrates:

interface I { void M(); }

class A { public virtual void M() { } }

class B : A, I { }

class C : A { public override void M() }

class D : B { public override void M() }

If this callable is I.M then A.M = getAnUltimateImplementor() and D.M = getAnUltimateImplementor(). However, it is not the case that C.M = getAnUltimateImplementor(), because C is not a sub type of I.

Accessor getAnUltimateImplementor()