code: public void retrieveAllReferences(Object pInstance) throws PersistenceBrokerException
      {
          if (logger.isDebugEnabled())
          {
          	logger.debug("Manually retrieving all references for object " + serviceIdentity().buildIdentity(pInstance));
          }
          ClassDescriptor cld = getClassDescriptor(pInstance.getClass());
          getInternalCache().enableMaterializationCache();
          // to avoid problems with circular references, locally cache the current object instance
          Identity oid = serviceIdentity().buildIdentity(pInstance);
  //        boolean needLocalRemove = false;
          if(getInternalCache().doLocalLookup(oid) == null)
          {
              getInternalCache().doInternalCache(oid, pInstance, MaterializationCache.TYPE_TEMP);
  //            needLocalRemove = true;
          }
          try
          {
              referencesBroker.retrieveReferences(pInstance, cld, true);
              referencesBroker.retrieveCollections(pInstance, cld, true);
  // arminw: should no longer needed since we use TYPE_TEMP for this kind of objects
  //            // do locally remove the object to avoid problems with object state detection (insert/update),
  //            // because objects found in the cache detected as 'old' means 'update'
  //            if(needLocalRemove) getInternalCache().doLocalRemove(oid);
              getInternalCache().disableMaterializationCache();
          }
          catch(RuntimeException e)
          {
              getInternalCache().doLocalClear();
              throw e;
          }
      }
docs: Retrieve all References (also Collection-attributes) of a given instance.
  Loading is forced, even if the collection- and reference-descriptors differ.
  @param pInstance the persistent instance to work with