code: public void optimisticReplace(java.util.List managedObjectsToAdd,
                                    java.util.List managedObjectsToReplace,
                                    java.util.List managedObjectsToDelete,
                                    java.util.List tokensToNotify)
                      throws ObjectManagerException {
          internalTransaction.optimisticReplace(managedObjectsToAdd,
                                                managedObjectsToReplace,
                                                managedObjectsToDelete,
                                                tokensToNotify,
                                                this,
                                                0);
      }
docs: <p>
  Perform a number of optimistic replace updates to ManagedOjects but writes and single log record with a list of
  objects to replace. Optimistic replace does not required the ManagedObject to be in locked state, it can be in
  Added,Locked,Replaced,Deleted,Ready states and be used by another transaction However, it is up to the code
  updating the object to correctly reverse the changes at the time any backout of this transaction occurs. Because
  the transaction is not locked no before immage of the object is kept. Unlike standard replace we do not need to
  hold the update out of the ObjectStore until commit time because the updating code is responsible for reversing the
  effects of the update. These compensating changes can be made after the transaction has prepared.
  </p>
  <p>
  The advantage of this method is that all of the updated objects are handled together, so that they all make it into
  the log for restart. If they were added to the log separately we might fail and see some of them at restart and not
  others This allows objects such as lists to make several associated changes without having to worry about
  compensating for the intermediate states.
  </p>
  
  @param managedObjectsToAdd List of ManagedObjects to add or null if there are none.
  @param managedObjectsToReplace List of ManagedObjects to be Optimistically replaced, or null if there are none.
  @param managedObjectsToDelete List of ManagedObjects to delete, or null if there are none.
  @param tokensToNotify List of tokens to be notified once the replace is logged, or null if there are none.
  @throws ObjectManagerException