void rbDelete(Entry z)
                    throws ObjectManagerException {
        AbstractTreeMap.Entry y = z.getLeft() == null || z.getRight() == null ? z : successor(z);
        AbstractTreeMap.Entry x = y.getLeft() != null ? y.getLeft() : y.getRight();
        // Splice out y. 
        boolean yWasLeftChild = false;
        boolean yWasRightChild = false;
        if (x != null)
            x.setParent(y.getParent());
        if (y.getParent() == null)
            setRoot(x);
        else if (y == y.getParent().getLeft()) {
            y.getParent().setLeft(x);
            yWasLeftChild = true;
        } else {
            y.getParent().setRight(x);
            yWasRightChild = true;
        }
        modCount++;

        boolean yOldColor = y.getColor();
        Entry yOldParent = (Entry) y.getParent();
        // Put y where z is.
        if (y != z) {
            move(y, z);
        }

        if (!yOldColor && root != null) {
            if (x == null) {
                // Z has been replaced with y we can make use of it as a temporary placeholder
                // for the deleted node and fixup based on that.
                if (yOldParent == z)
                    z.setParent(y);
                else
                    z.setParent(yOldParent);
                z.setColor(false); /* BLACK */
                if (yWasLeftChild)
                    yOldParent.setLeft(z);
                if (yWasRightChild)
                    yOldParent.setRight(z);
                fixup(z);
                if (yWasLeftChild)
                    yOldParent.setLeft(null);
                if (yWasRightChild)
                    yOldParent.setRight(null);
            } else
                fixup(x);
        }
        size--;
    }
void rbDelete ( Entry z ) throws ObjectManagerException { AbstractTreeMap . Entry y = z . getLeft ( ) == null || z . getRight ( ) == null ? z : successor ( z ) ; AbstractTreeMap . Entry x = y . getLeft ( ) != null ? y . getLeft ( ) : y . getRight ( ) ; boolean yWasLeftChild = false ; boolean yWasRightChild = false ; if ( x != null ) x . setParent ( y . getParent ( ) ) ; if ( y . getParent ( ) == null ) setRoot ( x ) ; else if ( y == y . getParent ( ) . getLeft ( ) ) { y . getParent ( ) . setLeft ( x ) ; yWasLeftChild = true ; } else { y . getParent ( ) . setRight ( x ) ; yWasRightChild = true ; } modCount ++ ; boolean yOldColor = y . getColor ( ) ; Entry yOldParent = ( Entry ) y . getParent ( ) ; if ( y != z ) { move ( y , z ) ; } if ( ! yOldColor && root != null ) { if ( x == null ) { if ( yOldParent == z ) z . setParent ( y ) ; else z . setParent ( yOldParent ) ; z . setColor ( false ) ; if ( yWasLeftChild ) yOldParent . setLeft ( z ) ; if ( yWasRightChild ) yOldParent . setRight ( z ) ; fixup ( z ) ; if ( yWasLeftChild ) yOldParent . setLeft ( null ) ; if ( yWasRightChild ) yOldParent . setRight ( null ) ; } else fixup ( x ) ; } size -- ; }
deleteEntry().