code: private synchronized void deleteEntry(Entry entry,
                                            Transaction transaction)
                      throws ObjectManagerException {
          final String methodName = "deleteEntry";
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this, cclass, methodName, new Object[] { entry,
                                                                  transaction });
  
          // managedObjectsToAdd.clear(); // Not used.
          managedObjectsToReplace.clear(); // Reset from last time.
          tokensToNotify.clear(); // Reset from last time.
          reservedSpaceInStore = (int) storeSpaceForRemove();
  
          rbDelete(entry);
  
          // We have changed the size at least.
          managedObjectsToReplace.add(this);
          // Harden the updates. Release some of the space we reserved earlier,
          // when we deleted the entry, or, if we are backing out, when we added it.
          // Releasing the reserved space ensures that the replace will succeed.
          tokensToNotify.add(entry.getToken());
          transaction.optimisticReplace(null,
                                        new java.util.ArrayList(managedObjectsToReplace),
                                        null, // No tokens to delete.
                                        new java.util.ArrayList(tokensToNotify),
                                        -logSpaceForDelete);
          // Release any surplus space we reserved in the store.
          // During recovery we don't do this because we will not have reserved the space anyway.
          if (transaction.getObjectManagerStateState() != ObjectManagerState.stateReplayingLog)
              owningToken.objectStore.reserve(-(int) reservedSpaceInStore, false);
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this, cclass, methodName);
      }
docs: Finalise removal of an Entry from the tree.
  
  We have already logged the deletion of the Entry so we now need to rechain those Entries
  currently refering to it and rebalance the tree. This may be redriven at recovery so we
  need to detect if the entry has already been removed from the tree so that we don't
  disrupt other entries in error.
  
  @param entry to be removed from the structure of the tree.
  @param transaction controling the update.
  @exception ObjectManagerException