docs: public void add(ManagedObject managedObject,
                      boolean requiresCurrentCheckpoint)
                      throws ObjectManagerException
      {
          final String methodName = "add";
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this,
                          cclass,
                          methodName,
                          new Object[] { managedObject, new Boolean(requiresCurrentCheckpoint) });
  
          // At recovery make sure the Token is in memory, if the Token was newly allocated it will already be in memory.   
          Token inMemoryToken = (Token) inMemoryTokens.putIfAbsent(new Long(managedObject.owningToken.storedObjectIdentifier)
                                                                   , managedObject.owningToken);
          if (inMemoryToken == null) {
              synchronized (sequenceNumberLock) {
                  // During recovery processing we may be given a sequence number to replace an object which never completed
                  // an add operation in the previous run so make sure we do not reuse such a number again.
                  if (managedObject.owningToken.storedObjectIdentifier > sequenceNumber) {
                      sequenceNumber = Math.max(managedObject.owningToken.storedObjectIdentifier, sequenceNumber);
                      if (Tracing.isAnyTracingEnabled() && trace.isDebugEnabled())
                          trace.debug(this,
                                      cclass,
                                      methodName,
                                      new Object[] { "sequenceNumber now", new Long(sequenceNumber) });
  
                  } // if (tokenToStore.storedObjectIdentifier > sequenceNumber).
              } // synchronized (sequenceNumberLock).
  
          } else {
              // The inMemoryToken must be the same Token.
              if (inMemoryToken != managedObject.owningToken) {
  
                  ReplacementException replacementException = new ReplacementException(this,
                                                                                       managedObject,
                                                                                       managedObject.owningToken,
                                                                                       inMemoryToken);
                  ObjectManager.ffdc.processException(this,
                                                      cclass,
                                                      methodName,
                                                      replacementException,
                                                      "1:473:1.31");
                  if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
                      trace.exit(this,
                                 cclass,
                                 "add",
                                 new Object[] { replacementException,
                                               managedObject,
                                               managedObject.owningToken,
                                               inMemoryToken });
  
                  throw replacementException;
              } // if (inMemoryToken != managedObject.owningToken).
          } // if (inMemoryToken == null). 
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this,
                         cclass,
                         methodName);
      }