code: public void postOptimisticReplace(Transaction transaction,
                                        boolean logged)
                      throws ObjectManagerException
      {
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this,
                          cclass,
                          "postOptimisticReplace",
                          new Object[] { transaction,
                                        new Boolean(logged) });
          if (logged) {
              setState(nextStateForOptimisticReplace); // Make the state change.
          } else {
              owningToken.objectStore.reserve(-latestSerializedSizeDelta, false);
              latestSerializedSize = latestSerializedSize - latestSerializedSizeDelta;
          } // if (logged).  
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this,
                         cclass,
                         "postOptimisticReplace");
      }
docs: Driven when the object is optimistically replaced in an object store
  within a transaction.
  
  A subclass may override this method to do its own optimisticReplace processing after the log
  has been written.
  
  @param transaction controling the replacement.
  @param logged true if transaction logging of the optimisticReplace was successful.
  @throws ObjectManagerException