private Node<K, V> findNodeThatContains( Object obj ) {
        if( obj == null ) { return null; }

        final V value = (V)obj;

        if( mValueComparator != null ) {
            Comparator<? super V> comp = mValueComparator;
            Node<K, V>            node = firstEquivalentAll( comp, value );

            if( node == null ) { return null; }

            do {
                if( value.equals( node.mValue ) ) { return node; }

                node = nextNodeAll( node );
            } while( node != null && comp.compare( value, node.mValue ) == 0 );

        } else {
            Comparable<V> comp = (Comparable<V>)value;
            Node<K, V>    node = firstEquivalentAll( comp );

            if( node == null ) { return null; }

            do {
                if( value.equals( node.mValue ) ) { return node; }

                node = nextNodeAll( node );
            } while( node != null && comp.compareTo( node.mValue ) == 0 );
        }

        return null;
    }