code: protected synchronized ManagedObject setManagedObject(ManagedObject managedObject)
                      throws ObjectManagerException
      {
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this, cclass
                          , "setManagedObject"
                            + "managedObject=" + managedObject + "(ManagedObject)"
                            + toString()
                              );
  
          ManagedObject managedObjectSet; // For return.
          // Has any ManagedObject ever been associated with tis Token?
          if (managedObjectReference == null) {
              // Nothing currently known so use the version given.
              managedObject.owningToken = this; // PM22584 Set the owning token first
              managedObjectReference = new java.lang.ref.WeakReference(managedObject);
              managedObjectSet = managedObject;
          } else {
              ManagedObject existingManagedObject = (ManagedObject) managedObjectReference.get();
              if (existingManagedObject == null) { // Is it still accessible? 
                  managedObject.owningToken = this; // PM22584 Set the owning token first
                  managedObjectReference = new java.lang.ref.WeakReference(managedObject);
                  managedObjectSet = managedObject;
              } else { // In memory and accessible.    
                  // During recovery another object already recovered may have refered 
                  // to this one causing it to already be resident in memory. 
                  // Replace what we already have with this version.
                  existingManagedObject.becomeCloneOf(managedObject);
                  managedObjectSet = existingManagedObject;
              } // if (existingManagedObject == null).
          } // if(managedObjectReference == null).
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this, cclass
                         , "setManagedObject"
                         , new Object[] { managedObjectSet });
          return managedObjectSet;
      }
docs: Associate a new ManagedObject with this token. If there is already
  a managedObject associated with the Token it is replaced by making it a clone of the
  new ManagedObject so that existing references to the old ManagedObject becone
  refrences to the new one.
  
  @param ManagedObject to be associated with this Token.
  @return ManagedObject now associated with this Token.
  @throws ObjectManagerException