private boolean searchDownForPrevIntersectionNode( Node node, K key, Object[] ret ) {
        while( true ) {
            int c = mComp.compareMinToMax( node.mKey, key );
            if( c < 0 ) {
                // Node does not occur completely after mKey.

                // Check if right subtree might intersect mKey.
                if( node.mRight != null && mComp.compareMinToMax( key, node.mRight.mMaxStop.mKey ) < 0 ) {
                    node = node.mRight;
                    continue;
                }

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

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

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