code: void undoAdd(Link newLink)
                      throws ObjectManagerException {
          final String methodName = "undoAdd";
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this, cclass, methodName, new Object[] { newLink });
  
          // Detach this Link from the list.
          if (newLink.next == null) { // Are we the tail of list?
              tail = newLink.previous;
          } else { // Not tail of the list.
              // Join up the backwards Link.
              Link nextLink = (Link) newLink.next.getManagedObject();
              nextLink.previous = newLink.previous;
          } // if at tail of list.
  
          if (newLink.previous == null) { // Are we the head of list?
              head = newLink.next;
          } else { // Not head of the list.
              // Join up the forwards Link.
              Link previousLink = (Link) newLink.previous.getManagedObject();
              previousLink.next = newLink.next;
          } // if at head of list.
  
          // Reset the availableHead.
          availableHead = head;
          skipToBeDeleted();
          decrementSize(); // Adjust list length. 
  
          // Give back all of the remaining space.
          owningToken.objectStore.reserve((int) -reservedSpaceInStore, false);
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this, cclass, methodName);
      }
docs: Reverse the action of addition to the list,
  used after an add has failed to log anything.
  Does not perform any logging.
  The caller must be synchronized on List.
  
  @param newLink to be removed from the list.
  @throws ObjectManagerException