public boolean remove( Object entry ) {
            if( entry == null ) { return false; }

            Map.Entry<K, V> e = (Map.Entry<K, V>)entry;

            Node<K, V> node = findKeyNode( e.getKey() );
            if( node == null || mComp != null && mComp.compareTo( node.mValue ) != 0 ) { return false; }

            V va = e.getValue();
            V vb = node.mValue;
            if( va != vb && (va == null || !va.equals( vb )) ) { return false; }

            removeNodeCompletely( node, true );
            return true;
        }