code: protected synchronized void optimisticReplaceFromCheckpoint(ManagedObject managedObject,
                                                                  Transaction transaction)
                      throws ObjectManagerException {
          final String methodName = "optimisticReplaceFromCheckpoint";
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this, cclass, methodName, new Object[] { managedObject,
                                                                  transaction });
  
          // Make the ManagedObject ready for an optimisticReplace operation.
          // Nothing went wrong during forward processing!
          managedObject.preOptimisticReplace(transaction);
  
          // Only persistent objects are recovered from a checkpoint in the log!
          setState(nextStateForInvolveOptimisticPersistentObject);
          // The objects are now included in the transaction.
          includedManagedObjects.put(managedObject.owningToken, managedObject);
  
          // The ManagedObject was previously forced to the the ObjectStore, give it a low log
          // and managedObject sequence number so that any later operation will supercede this one.
          // The loggedSerialisedBytes will be unchanged, possibly null for this Token.
          // If there already a logSequenceNumber known for this token it must have been put
          // there after the checkpoint start and has already been superceded.
          if (!logSequenceNumbers.containsKey(managedObject.owningToken)) {
              logSequenceNumbers.put(managedObject.owningToken,
                                     new Long(0));
              managedObjectSequenceNumbers.put(managedObject.owningToken,
                                               new Long(0));
          }
  
          // Redrive the postObtimisticReplace method for the ManagedObject.
          managedObject.postOptimisticReplace(transaction, true);
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this, cclass, methodName);
      }
docs: <p>
  Reinstate the state of an ManagedObject to be optimistaclly replaced after reading
  a TransactionCheckpointLogRecord.
  </p>
  
  @param managedObject to be optimistically replaced.
  @param transaction the external Transaction.
  @throws ObjectManagerException