code: public void postReplace(Transaction transaction,
                              boolean logged)
                      throws ObjectManagerException
      {
          final String methodName = "postReplace";
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this, cclass, methodName, new Object[] { transaction,
                                                                  new Boolean(logged) });
  
          // Note that we do not replace the object to the object store here as we have not
          // yet forced the log to disk and we dont keep a before image in the ObjecStore. 
          if (logged) {
              setState(nextStateForReplace); // Make the state change.
          } else {
              owningToken.objectStore.reserve(-latestSerializedSizeDelta, false);
              latestSerializedSize = latestSerializedSize - latestSerializedSizeDelta;
          } // if(logged).  
            // preReplace did not take a lock so no need to consider unlocking it.
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this, cclass, methodName);
      }
docs: Driven when the object is replaced in an object store within a transaction. The object must have previously been
  locked.
  
  A subclass may override this method to do its owd replace processing after the log has been written.
  
  @param transaction controling the replacement.
  @param logged true if transaction logging of the replace was successful.
  @throws ObjectManagerException