The back-reference can either be stored in the parent object or it can be passed dynamically as an additional argument of forwarded messages. The first approach is called the stored pointer model, the second one is called the passed pointer model [8]. Applying the passed pointer model to our example yields:
3#3
Now invocations of method a() and b() on an
instance of class C both return the string "C". Note that
we had to add the method b1() to interface IB and
relax the visibility status of method b1() from protected to
public, thus generally exposing details that should be known only to
subclasses / child classes.
This translation cannot be substantially improved using Java 1.1
features such as nested classes, reflection, etc. A
detailed discussion and usability evaluation of the passed pointer model
and the stored pointer model can be found in [20].