private boolean searchDownForPrevSupersetNode( Node node, K key, Object[] ret ) {
        while( true ) {
            // Check if current node is beyond mKey.
            int c = mComp.compareMins( key, node.mKey );

            if( c >= 0 ) {
                // Descend right subtree if it might have a superset node.
                if( node.mRight != null && mComp.compareMaxes( key, node.mRight.mMaxStop.mKey ) <= 0 ) {
                    node = node.mRight;
                    continue;
                }

                // Check if current node contains mKey.
                if( mComp.compareMaxes( key, node.mKey ) <= 0 ) {
                    ret[0] = node;
                    return true;
                }
            }

            // Check left subtree if it might have superset node.
            if( node.mLeft != null && mComp.compareMaxes( key, node.mLeft.mMaxStop.mKey ) <= 0 ) {
                node = node.mLeft;
                continue;
            }

            // Request upward search from current node.
            ret[0] = node;
            return false;
        }
    }