private boolean searchUpForPrevIntersectionNode( Node node, K key, Object[] ret ) {
        if( node.mLeft != null && mComp.compareMinToMax( key, node.mLeft.mMaxStop.mKey ) < 0 ) {
            // Request download search on left node.
            ret[0] = node.mLeft;
            return false;
        }

        while( node.mParent != null ) {
            if( node == node.mParent.mLeft ) {
                node = node.mParent;

            } else {
                node = node.mParent;

                // If we're coming from the right, then we've not checked for an
                // intersection
                // with the current node.
                if( mComp.compareMinToMax( key, node.mKey ) < 0 &&
                    mComp.compareMinToMax( node.mKey, key ) < 0 )
                {
                    ret[0] = node;
                    return true;
                }

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

        // Search is complete and unsuccesful.
        ret[0] = null;
        return true;
    }