@SuppressWarnings("")
	@Nonnull
	public static Number parse(@Nonnull String input) {
		String text = input.trim().toUpperCase();
		Number value;
		if (text.indexOf('.') > 0) {
			value = parseDecimal(text);
		} else {
			if (text.endsWith("L") && text.startsWith("0X")) {
				String substring = text.substring(2, text.indexOf("L"));
				if (substring.isEmpty()) return 0L;
				value = Long.parseLong(substring, 16);
			} else if (text.endsWith("L"))
				value = Long.parseLong(text.substring(0, text.indexOf("L")));
			else if (text.startsWith("0X")) {
				String substring = text.substring(2);
				if (substring.isEmpty()) return 0;
				value = Integer.parseInt(substring, 16);
			} else if (text.endsWith("F"))
				value = Float.parseFloat(text.substring(0, text.indexOf("F")));
			else if (text.endsWith("D") || text.contains("."))
				value = Double.parseDouble(text.substring(0, text.indexOf("D")));
			else
				value = Integer.parseInt(text);
		}
		return value;
	}
@param input
		Text input that represents a number.
		<ul>
		<li>Numbers ending with {@code F} are parsed as {@link Float}.</li>
		<li>Numbers ending with {@code D} are parsed as {@link Double}.</li>
		<li>Numbers ending with {@code L} are parsed as {@link Long}.</li>
		</ul>

@return Number parsed from text.
Can be an {@link Integer}, {@link Long}, {@link Float}, or {@link Double}.

@throws NumberFormatException
		When the input cannot be parsed.
recaf-core/src/main/java/software/coley/recaf/util/NumberUtil.java