asNumber
This function returns a representation of the literal value as a number. This will return a long, except for the case when the literal has the value 9223372036854775808L. This special literal is only allowed in the expression -9223372036854775808L which represents Long.MIN_VALUE). However 9223372036854775808 (2^63) is out of range of long, which is -(2^63) to (2^63)-1 and thus a BigInteger must be returned.
Note, that this function will NOT return a negative number if the literal was specified in decimal, since according to the language specification (chapter 3.10.1) an expression such as -1L is represented by a unary * expression with a minus operator and the literal 1L. It is however possible to represent negative * numbers in a literal directly, i.e. by using the binary or hexadecimal representation. For example 0xffff_ffff_ffff_ffffL represents the value -1L.
Return
the literal value as a number while respecting different number representations