function isArrayIndex(fullNumberNode, value) {
			const parent = fullNumberNode.parent;

			return (
				parent.type === "MemberExpression" &&
				parent.property === fullNumberNode &&
				(Number.isInteger(value) || typeof value === "bigint") &&
				value >= 0 &&
				value < MAX_ARRAY_LENGTH
			);
		}
Returns whether the given node is used as an array index.
Value must coerce to a valid array index name: "0", "1", "2" ... "4294967294".

All other values, like "-1", "2.5", or "4294967295", are just "normal" object properties,
which can be created and accessed on an array in addition to the array index properties,
but they don't affect array's length and are not considered by methods such as .map(), .forEach() etc.

The maximum array length by the specification is 2 ** 32 - 1 = 4294967295,
thus the maximum valid index is 2 ** 32 - 2 = 4294967294.

All notations are allowed, as long as the value coerces to one of "0", "1", "2" ... "4294967294".

Valid examples:
a[0], a[1], a[1.2e1], a[0xAB], a[0n], a[1n]
a[-0] (same as a[0] because -0 coerces to "0")
a[-0n] (-0n evaluates to 0n)

Invalid examples:
a[-1], a[-0xAB], a[-1n], a[2.5], a[1.23e1], a[12e-1]
a[4294967295] (above the max index, it's an access to a regular property a["4294967295"])
a[999999999999999999999] (even if it wasn't above the max index, it would be a["1e+21"])
a[1e310] (same as a["Infinity"])
@param {ASTNode} fullNumberNode `Literal` or `UnaryExpression` full number node
@param {bigint|number} value Value expressed by the fullNumberNode
@returns {boolean} true if the node is a valid array index