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);
    }
void undoAdd ( Link newLink ) throws ObjectManagerException { final String methodName = "undoAdd" ; if ( Tracing . isAnyTracingEnabled ( ) && trace . isEntryEnabled ( ) ) trace . entry ( this , cclass , methodName , new Object [ ] { newLink } ) ; if ( newLink . next == null ) { tail = newLink . previous ; } else { Link nextLink = ( Link ) newLink . next . getManagedObject ( ) ; nextLink . previous = newLink . previous ; } if ( newLink . previous == null ) { head = newLink . next ; } else { Link previousLink = ( Link ) newLink . previous . getManagedObject ( ) ; previousLink . next = newLink . next ; } availableHead = head ; skipToBeDeleted ( ) ; decrementSize ( ) ; owningToken . objectStore . reserve ( ( int ) - reservedSpaceInStore , false ) ; if ( Tracing . isAnyTracingEnabled ( ) && trace . isEntryEnabled ( ) ) trace . exit ( this , cclass , methodName ) ; }
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