private Node<K, V> lowerAll( V value ) {
        if( value == null ) { return null; }

        Node<K, V> node = mAllRoot;
        Node<K, V> ret  = null;

        if( mValueComparator != null ) {
            Comparator<? super V> comp = mValueComparator;

            while( node != null ) {
                int c = comp.compare( value, node.mValue );

                if( c <= 0 ) {
                    node = node.mAllLeft;
                } else {
                    ret = node;
                    node = node.mAllRight;
                }
            }

        } else {
            Comparable<? super V> comp = (Comparable<? super V>)value;

            while( node != null ) {
                int c = comp.compareTo( node.mValue );

                if( c <= 0 ) {
                    node = node.mAllLeft;
                } else {
                    ret = node;
                    node = node.mAllRight;
                }
            }
        }

        return ret;
    }