private static Number parseInt(Buffer<Token> buf) throws JsonParseException
	{
		Token tkn = buf.next(false);
		boolean neg = tkn.str.equalsIgnoreCase("-"), isFloat = false;
		
		if (neg)
		{
			buf.skip();
			
		}
		
		StringBuilder b = new StringBuilder();
		
		String i = gatherInts(buf);
		
		if (i.equalsIgnoreCase(""))
		{
			throw new JsonParseException("Invalid integer found! what.");
		}
		
		b.append(gatherInts(buf));
		
		tkn = buf.next();
		
		if (".".equalsIgnoreCase(tkn.str))
		{
			b.append(".");
			
			i = gatherInts(buf);
			
			if ("".equalsIgnoreCase(i))
			{
				throw new JsonParseException("Invalid floating point found on line %s, column %s", tkn.line, tkn.col);
			}
			
			b.append(i);
			
			tkn = buf.next();
			
			isFloat = true;
			
		}
		
		if ("e".equalsIgnoreCase(tkn.str))
		{
			b.append(tkn.str);
			
			tkn = buf.next();
			
			if ("+".equalsIgnoreCase(tkn.str) || "-".equalsIgnoreCase(tkn.str))
			{
				b.append(tkn.str);
				
			}
			else throw new JsonParseException("Expecting + or -, got %s on line %s, column %s", tkn.str, tkn.line, tkn.col);
			
			i = gatherInts(buf);
			
			if (i.equalsIgnoreCase(""))
			{
				throw new JsonParseException("Invalid integer found after finding E on line %s, column %s", tkn.line, tkn.col);
			}
			
			b.append(i);
			
		}
		
		return isFloat ? Double.parseDouble(b.toString()) : Long.parseLong(b.toString());
	}