private void rotateRight( final Node node ) {
        final Node left = node.mLeft;
        if( left == null ) {
            return;
        }

        node.mLeft = left.mRight;
        left.mRight = node;

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

        if( node == mRoot ) {
            mRoot = left;
            left.mParent = null;
            node.mParent = left;

        } else {
            left.mParent = node.mParent;
            node.mParent = left;

            if( node == left.mParent.mRight ) {
                left.mParent.mRight = left;
            } else {
                left.mParent.mLeft = left;
            }
        }

        // Interval tree: Must update mMaxStop valuse.
        // "left" is now the top of subtree previously rooted under "node" and
        // thus inherits maxStop.
        left.mMaxStop = node.mMaxStop;

        // "node" needs to check the mMaxStop values of it's children.
        if( node.mMaxStop != node ) {
            node.mMaxStop = node;

            if( node.mRight != null ) {
                node.mMaxStop = maxStopNode( node.mMaxStop, node.mRight.mMaxStop );
            }

            if( node.mLeft != null ) {
                node.mMaxStop = maxStopNode( node.mMaxStop, node.mLeft.mMaxStop );
            }
        }
    }