function isRangeTest(node){var left=node.left,right=node.right;/**
             * Determines whether node is of the form `0 <= x && x < 1`.
             * @returns {boolean} Whether node is a "between" range test.
             */function isBetweenTest(){var leftLiteral=void 0,rightLiteral=void 0;return node.operator==="&&"&&(leftLiteral=getNormalizedLiteral(left.left))&&(rightLiteral=getNormalizedLiteral(right.right,Number.POSITIVE_INFINITY))&&leftLiteral.value<=rightLiteral.value&&same(left.right,right.left);}/**
             * Determines whether node is of the form `x < 0 || 1 <= x`.
             * @returns {boolean} Whether node is an "outside" range test.
             */function isOutsideTest(){var leftLiteral=void 0,rightLiteral=void 0;return node.operator==="||"&&(leftLiteral=getNormalizedLiteral(left.right,Number.NEGATIVE_INFINITY))&&(rightLiteral=getNormalizedLiteral(right.left))&&leftLiteral.value<=rightLiteral.value&&same(left.left,right.right);}/**
             * Determines whether node is wrapped in parentheses.
             * @returns {boolean} Whether node is preceded immediately by an open
             *                    paren token and followed immediately by a close
             *                    paren token.
             */function isParenWrapped(){return astUtils.isParenthesised(sourceCode,node);}return node.type==="LogicalExpression"&&left.type==="BinaryExpression"&&right.type==="BinaryExpression"&&isRangeTestOperator(left.operator)&&isRangeTestOperator(right.operator)&&(isBetweenTest()||isOutsideTest())&&isParenWrapped();}
Determines whether node represents a range test.
A range test is a "between" test like `(0 <= x && x < 1)` or an "outside"
test like `(x < 0 || 1 <= x)`. It must be wrapped in parentheses, and
both operators must be `<` or `<=`. Finally, the literal on the left side
must be less than or equal to the literal on the right side so that the
test makes any sense.
@param {ASTNode} node LogicalExpression node to test.
@returns {boolean} Whether node is a range test.