code: public void afterMaterialization(IndirectionHandler handler, Object materializedObject)
      {
          try
          {
              Identity oid = handler.getIdentity();
              if (log.isDebugEnabled())
              log.debug("deferred registration: " + oid);
              if(!isOpen())
              {
                  log.error("Proxy object materialization outside of a running tx, obj=" + oid);
                  try{throw new Exception("Proxy object materialization outside of a running tx, obj=" + oid);}catch(Exception e)
                  {
                  e.printStackTrace();
                  }
              }
              ClassDescriptor cld = getBroker().getClassDescriptor(materializedObject.getClass());
              RuntimeObject rt = new RuntimeObject(materializedObject, oid, cld, false, false);
              lockAndRegister(rt, Transaction.READ, isImplicitLocking(), getRegistrationList());
          }
          catch (Throwable t)
          {
              log.error("Register materialized object with this tx failed", t);
              throw new LockNotGrantedException(t.getMessage());
          }
          unregisterFromIndirectionHandler(handler);
      }
docs: this callback is invoked after an Object is materialized
  within an IndirectionHandler.
  this callback allows to defer registration of objects until
  it's really neccessary.
  @param handler the invoking handler
  @param materializedObject the materialized Object