package gojay

import (
	
	
)

// DecodeInt reads the next JSON-encoded value from the decoder's input (io.Reader) and stores it in the int pointed to by v.
//
// See the documentation for Unmarshal for details about the conversion of JSON into a Go value.
func ( *Decoder) ( *int) error {
	if .isPooled == 1 {
		panic(InvalidUsagePooledDecoderError("Invalid usage of pooled decoder"))
	}
	return .decodeInt()
}
func ( *Decoder) ( *int) error {
	for ; .cursor < .length || .read(); .cursor++ {
		switch  := .data[.cursor];  {
		case ' ', '\n', '\t', '\r', ',':
			continue
		// we don't look for 0 as leading zeros are invalid per RFC
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			,  := .getInt64()
			if  != nil {
				return 
			}
			* = int()
			return nil
		case '-':
			.cursor = .cursor + 1
			,  := .getInt64Negative()
			if  != nil {
				return 
			}
			* = -int()
			return nil
		case 'n':
			.cursor++
			 := .assertNull()
			if  != nil {
				return 
			}
			return nil
		default:
			.err = InvalidUnmarshalError(
				fmt.Sprintf(
					"Cannot unmarshall to int, wrong char '%s' found at pos %d",
					string(.data[.cursor]),
					.cursor,
				),
			)
			 := .skipData()
			if  != nil {
				return 
			}
			return nil
		}
	}
	return .raiseInvalidJSONErr(.cursor)
}

func ( *Decoder) ( **int) error {
	for ; .cursor < .length || .read(); .cursor++ {
		switch  := .data[.cursor];  {
		case ' ', '\n', '\t', '\r', ',':
			continue
		// we don't look for 0 as leading zeros are invalid per RFC
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			,  := .getInt64()
			if  != nil {
				return 
			}
			if * == nil {
				* = new(int)
			}
			** = int()
			return nil
		case '-':
			.cursor = .cursor + 1
			,  := .getInt64Negative()
			if  != nil {
				return 
			}
			if * == nil {
				* = new(int)
			}
			** = -int()
			return nil
		case 'n':
			.cursor++
			 := .assertNull()
			if  != nil {
				return 
			}
			return nil
		default:
			.err = InvalidUnmarshalError(
				fmt.Sprintf(
					"Cannot unmarshall to int, wrong char '%s' found at pos %d",
					string(.data[.cursor]),
					.cursor,
				),
			)
			 := .skipData()
			if  != nil {
				return 
			}
			return nil
		}
	}
	return .raiseInvalidJSONErr(.cursor)
}

// DecodeInt16 reads the next JSON-encoded value from the decoder's input (io.Reader) and stores it in the int16 pointed to by v.
//
// See the documentation for Unmarshal for details about the conversion of JSON into a Go value.
func ( *Decoder) ( *int16) error {
	if .isPooled == 1 {
		panic(InvalidUsagePooledDecoderError("Invalid usage of pooled decoder"))
	}
	return .decodeInt16()
}
func ( *Decoder) ( *int16) error {
	for ; .cursor < .length || .read(); .cursor++ {
		switch  := .data[.cursor];  {
		case ' ', '\n', '\t', '\r', ',':
			continue
		// we don't look for 0 as leading zeros are invalid per RFC
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			,  := .getInt16()
			if  != nil {
				return 
			}
			* = 
			return nil
		case '-':
			.cursor = .cursor + 1
			,  := .getInt16Negative()
			if  != nil {
				return 
			}
			* = -
			return nil
		case 'n':
			.cursor++
			 := .assertNull()
			if  != nil {
				return 
			}
			return nil
		default:
			.err = .makeInvalidUnmarshalErr()
			 := .skipData()
			if  != nil {
				return 
			}
			return nil
		}
	}
	return .raiseInvalidJSONErr(.cursor)
}
func ( *Decoder) ( **int16) error {
	for ; .cursor < .length || .read(); .cursor++ {
		switch  := .data[.cursor];  {
		case ' ', '\n', '\t', '\r', ',':
			continue
		// we don't look for 0 as leading zeros are invalid per RFC
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			,  := .getInt16()
			if  != nil {
				return 
			}
			if * == nil {
				* = new(int16)
			}
			** = 
			return nil
		case '-':
			.cursor = .cursor + 1
			,  := .getInt16Negative()
			if  != nil {
				return 
			}
			if * == nil {
				* = new(int16)
			}
			** = -
			return nil
		case 'n':
			.cursor++
			 := .assertNull()
			if  != nil {
				return 
			}
			return nil
		default:
			.err = .makeInvalidUnmarshalErr()
			 := .skipData()
			if  != nil {
				return 
			}
			return nil
		}
	}
	return .raiseInvalidJSONErr(.cursor)
}

func ( *Decoder) () (int16, error) {
	// look for following numbers
	for ; .cursor < .length || .read(); .cursor++ {
		switch .data[.cursor] {
		case '1', '2', '3', '4', '5', '6', '7', '8', '9':
			return .getInt16()
		default:
			return 0, .raiseInvalidJSONErr(.cursor)
		}
	}
	return 0, .raiseInvalidJSONErr(.cursor)
}

func ( *Decoder) () (int16, error) {
	var  = .cursor
	var  = .cursor
	// look for following numbers
	for  := .cursor + 1;  < .length || .read(); ++ {
		switch .data[] {
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			 = 
			continue
		case '.':
			// if dot is found
			// look for exponent (e,E) as exponent can change the
			// way number should be parsed to int.
			// if no exponent found, just unmarshal the number before decimal point
			++
			 := 
			 :=  - 1
			for ;  < .length || .read(); ++ {
				switch .data[] {
				case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
					 = 
					continue
				case 'e', 'E':
					if  >  {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					.cursor =  + 1
					// can try unmarshalling to int as Exponent might change decimal number to non decimal
					// let's get the float value first
					// we get part before decimal as integer
					 := .atoi16(, )
					// get number after the decimal point
					// multiple the before decimal point portion by 10 using bitwise
					for  := ;  <= ; ++ {
						 = ( << 3) + ( << 1)
					}
					// then we add both integers
					// then we divide the number by the power found
					 := .atoi16(, )
					 :=  -  + 2
					if  >= len(pow10uint64) ||  < 0 {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					 := pow10uint64[]
					 := float64(+) / float64()
					// we have the floating value, now multiply by the exponent
					,  := .getExponent()
					if  != nil {
						return 0, 
					}
					 := ( + ( >> 31)) ^ ( >> 31) + 1 // abs
					if  >= int64(len(pow10uint64)) ||  < 0 {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					 :=  * float64(pow10uint64[])
					return int16(), nil
				case ' ', '\t', '\n', ',', ']', '}':
					.cursor = 
					return .atoi16(, ), nil
				default:
					.cursor = 
					return 0, .raiseInvalidJSONErr(.cursor)
				}
			}
			return .atoi16(, ), nil
		case 'e', 'E':
			// get init n
			.cursor =  + 1
			return .getInt16WithExp(.atoi16(, ))
		case ' ', '\n', '\t', '\r', ',', '}', ']':
			.cursor = 
			return .atoi16(, ), nil
		}
		// invalid json we expect numbers, dot (single one), comma, or spaces
		return 0, .raiseInvalidJSONErr(.cursor)
	}
	return .atoi16(, ), nil
}

func ( *Decoder) ( int16) (int16, error) {
	var  uint16
	var  = int16(1)
	for ; .cursor < .length || .read(); .cursor++ {
		switch .data[.cursor] {
		case '+':
			continue
		case '-':
			 = -1
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			 := uint16(digits[.data[.cursor]])
			 = ( << 3) + ( << 1) + 
			.cursor++
			for ; .cursor < .length || .read(); .cursor++ {
				switch .data[.cursor] {
				case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
					 := uint16(digits[.data[.cursor]])
					 = ( << 3) + ( << 1) + 
				case ' ', '\t', '\n', '}', ',', ']':
					 =  + 1
					if  >= uint16(len(pow10uint64)) {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					if  == -1 {
						return  * (1 / int16(pow10uint64[])), nil
					}
					return  * int16(pow10uint64[]), nil
				default:
					return 0, .raiseInvalidJSONErr(.cursor)
				}
			}
			 =  + 1
			if  >= uint16(len(pow10uint64)) {
				return 0, .raiseInvalidJSONErr(.cursor)
			}
			if  == -1 {
				return  * (1 / int16(pow10uint64[])), nil
			}
			return  * int16(pow10uint64[]), nil
		default:
			return 0, .raiseInvalidJSONErr(.cursor)
		}
	}
	return 0, .raiseInvalidJSONErr(.cursor)
}

// DecodeInt8 reads the next JSON-encoded value from the decoder's input (io.Reader) and stores it in the int8 pointed to by v.
//
// See the documentation for Unmarshal for details about the conversion of JSON into a Go value.
func ( *Decoder) ( *int8) error {
	if .isPooled == 1 {
		panic(InvalidUsagePooledDecoderError("Invalid usage of pooled decoder"))
	}
	return .decodeInt8()
}
func ( *Decoder) ( *int8) error {
	for ; .cursor < .length || .read(); .cursor++ {
		switch  := .data[.cursor];  {
		case ' ', '\n', '\t', '\r', ',':
			continue
		// we don't look for 0 as leading zeros are invalid per RFC
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			,  := .getInt8()
			if  != nil {
				return 
			}
			* = 
			return nil
		case '-':
			.cursor = .cursor + 1
			,  := .getInt8Negative()
			if  != nil {
				return 
			}
			* = -
			return nil
		case 'n':
			.cursor++
			 := .assertNull()
			if  != nil {
				return 
			}
			return nil
		default:
			.err = .makeInvalidUnmarshalErr()
			 := .skipData()
			if  != nil {
				return 
			}
			return nil
		}
	}
	return .raiseInvalidJSONErr(.cursor)
}
func ( *Decoder) ( **int8) error {
	for ; .cursor < .length || .read(); .cursor++ {
		switch  := .data[.cursor];  {
		case ' ', '\n', '\t', '\r', ',':
			continue
		// we don't look for 0 as leading zeros are invalid per RFC
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			,  := .getInt8()
			if  != nil {
				return 
			}
			if * == nil {
				* = new(int8)
			}
			** = 
			return nil
		case '-':
			.cursor = .cursor + 1
			,  := .getInt8Negative()
			if  != nil {
				return 
			}
			if * == nil {
				* = new(int8)
			}
			** = -
			return nil
		case 'n':
			.cursor++
			 := .assertNull()
			if  != nil {
				return 
			}
			return nil
		default:
			.err = .makeInvalidUnmarshalErr()
			 := .skipData()
			if  != nil {
				return 
			}
			return nil
		}
	}
	return .raiseInvalidJSONErr(.cursor)
}

func ( *Decoder) () (int8, error) {
	// look for following numbers
	for ; .cursor < .length || .read(); .cursor++ {
		switch .data[.cursor] {
		case '1', '2', '3', '4', '5', '6', '7', '8', '9':
			return .getInt8()
		default:
			return 0, .raiseInvalidJSONErr(.cursor)
		}
	}
	return 0, .raiseInvalidJSONErr(.cursor)
}

func ( *Decoder) () (int8, error) {
	var  = .cursor
	var  = .cursor
	// look for following numbers
	for  := .cursor + 1;  < .length || .read(); ++ {
		switch .data[] {
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			 = 
			continue
		case '.':
			// if dot is found
			// look for exponent (e,E) as exponent can change the
			// way number should be parsed to int.
			// if no exponent found, just unmarshal the number before decimal point
			++
			 := 
			 :=  - 1
			for ;  < .length || .read(); ++ {
				switch .data[] {
				case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
					 = 
					continue
				case 'e', 'E':
					if  >  {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					.cursor =  + 1
					// can try unmarshalling to int as Exponent might change decimal number to non decimal
					// let's get the float value first
					// we get part before decimal as integer
					 := .atoi8(, )
					// get number after the decimal point
					// multiple the before decimal point portion by 10 using bitwise
					for  := ;  <= ; ++ {
						 = ( << 3) + ( << 1)
					}
					// then we add both integers
					// then we divide the number by the power found
					 := .atoi8(, )
					 :=  -  + 2
					if  >= len(pow10uint64) ||  < 0 {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					 := pow10uint64[]
					 := float64(+) / float64()
					// we have the floating value, now multiply by the exponent
					,  := .getExponent()
					if  != nil {
						return 0, 
					}
					 := ( + ( >> 31)) ^ ( >> 31) + 1 // abs
					if  >= int64(len(pow10uint64)) ||  < 0 {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					 :=  * float64(pow10uint64[])
					return int8(), nil
				case ' ', '\t', '\n', ',', ']', '}':
					.cursor = 
					return .atoi8(, ), nil
				default:
					.cursor = 
					return 0, .raiseInvalidJSONErr(.cursor)
				}
			}
			return .atoi8(, ), nil
		case 'e', 'E':
			// get init n
			.cursor =  + 1
			return .getInt8WithExp(.atoi8(, ))
		case ' ', '\n', '\t', '\r', ',', '}', ']':
			.cursor = 
			return .atoi8(, ), nil
		}
		// invalid json we expect numbers, dot (single one), comma, or spaces
		return 0, .raiseInvalidJSONErr(.cursor)
	}
	return .atoi8(, ), nil
}

func ( *Decoder) ( int8) (int8, error) {
	var  uint8
	var  = int8(1)
	for ; .cursor < .length || .read(); .cursor++ {
		switch .data[.cursor] {
		case '+':
			continue
		case '-':
			 = -1
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			 := uint8(digits[.data[.cursor]])
			 = ( << 3) + ( << 1) + 
			.cursor++
			for ; .cursor < .length || .read(); .cursor++ {
				switch .data[.cursor] {
				case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
					 := uint8(digits[.data[.cursor]])
					 = ( << 3) + ( << 1) + 
				case ' ', '\t', '\n', '}', ',', ']':
					if +1 >= uint8(len(pow10uint64)) {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					if  == -1 {
						return  * (1 / int8(pow10uint64[+1])), nil
					}
					return  * int8(pow10uint64[+1]), nil
				default:
					return 0, .raiseInvalidJSONErr(.cursor)
				}
			}
			if +1 >= uint8(len(pow10uint64)) {
				return 0, .raiseInvalidJSONErr(.cursor)
			}
			if  == -1 {
				return  * (1 / int8(pow10uint64[+1])), nil
			}
			return  * int8(pow10uint64[+1]), nil
		default:
			.err = .raiseInvalidJSONErr(.cursor)
			return 0, .err
		}
	}
	return 0, .raiseInvalidJSONErr(.cursor)
}

// DecodeInt32 reads the next JSON-encoded value from the decoder's input (io.Reader) and stores it in the int32 pointed to by v.
//
// See the documentation for Unmarshal for details about the conversion of JSON into a Go value.
func ( *Decoder) ( *int32) error {
	if .isPooled == 1 {
		panic(InvalidUsagePooledDecoderError("Invalid usage of pooled decoder"))
	}
	return .decodeInt32()
}
func ( *Decoder) ( *int32) error {
	for ; .cursor < .length || .read(); .cursor++ {
		switch  := .data[.cursor];  {
		case ' ', '\n', '\t', '\r', ',':
			continue
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			,  := .getInt32()
			if  != nil {
				return 
			}
			* = 
			return nil
		case '-':
			.cursor = .cursor + 1
			,  := .getInt32Negative()
			if  != nil {
				return 
			}
			* = -
			return nil
		case 'n':
			.cursor++
			 := .assertNull()
			if  != nil {
				return 
			}
			return nil
		default:
			.err = .makeInvalidUnmarshalErr()
			 := .skipData()
			if  != nil {
				return 
			}
			return nil
		}
	}
	return .raiseInvalidJSONErr(.cursor)
}
func ( *Decoder) ( **int32) error {
	for ; .cursor < .length || .read(); .cursor++ {
		switch  := .data[.cursor];  {
		case ' ', '\n', '\t', '\r', ',':
			continue
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			,  := .getInt32()
			if  != nil {
				return 
			}
			if * == nil {
				* = new(int32)
			}
			** = 
			return nil
		case '-':
			.cursor = .cursor + 1
			,  := .getInt32Negative()
			if  != nil {
				return 
			}
			if * == nil {
				* = new(int32)
			}
			** = -
			return nil
		case 'n':
			.cursor++
			 := .assertNull()
			if  != nil {
				return 
			}
			return nil
		default:
			.err = .makeInvalidUnmarshalErr()
			 := .skipData()
			if  != nil {
				return 
			}
			return nil
		}
	}
	return .raiseInvalidJSONErr(.cursor)
}

func ( *Decoder) () (int32, error) {
	// look for following numbers
	for ; .cursor < .length || .read(); .cursor++ {
		switch .data[.cursor] {
		case '1', '2', '3', '4', '5', '6', '7', '8', '9':
			return .getInt32()
		default:
			return 0, .raiseInvalidJSONErr(.cursor)
		}
	}
	return 0, .raiseInvalidJSONErr(.cursor)
}

func ( *Decoder) () (int32, error) {
	var  = .cursor
	var  = .cursor
	// look for following numbers
	for  := .cursor + 1;  < .length || .read(); ++ {
		switch .data[] {
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			 = 
			continue
		case '.':
			// if dot is found
			// look for exponent (e,E) as exponent can change the
			// way number should be parsed to int.
			// if no exponent found, just unmarshal the number before decimal point
			++
			 := 
			 :=  - 1
			for ;  < .length || .read(); ++ {
				switch .data[] {
				case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
					 = 
					continue
				case 'e', 'E':
					// if eg 1.E
					if  >  {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					.cursor =  + 1
					// can try unmarshalling to int as Exponent might change decimal number to non decimal
					// let's get the float value first
					// we get part before decimal as integer
					 := .atoi64(, )
					// get number after the decimal point
					// multiple the before decimal point portion by 10 using bitwise
					for  := ;  <= ; ++ {
						 = ( << 3) + ( << 1)
					}
					// then we add both integers
					// then we divide the number by the power found
					 := .atoi64(, )
					 :=  -  + 2
					if  >= len(pow10uint64) ||  < 0 {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					 := pow10uint64[]
					 := float64(+) / float64()
					// we have the floating value, now multiply by the exponent
					,  := .getExponent()
					if  != nil {
						return 0, 
					}
					 := ( + ( >> 31)) ^ ( >> 31) + 1 // abs
					if  >= int64(len(pow10uint64)) ||  < 0 {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					 :=  * float64(pow10uint64[])
					return int32(), nil
				case ' ', '\t', '\n', ',', ']', '}':
					.cursor = 
					return .atoi32(, ), nil
				default:
					.cursor = 
					return 0, .raiseInvalidJSONErr(.cursor)
				}
			}
			return .atoi32(, ), nil
		case 'e', 'E':
			// get init n
			.cursor =  + 1
			return .getInt32WithExp(.atoi32(, ))
		case ' ', '\n', '\t', '\r', ',', '}', ']':
			.cursor = 
			return .atoi32(, ), nil
		}
		// invalid json we expect numbers, dot (single one), comma, or spaces
		return 0, .raiseInvalidJSONErr(.cursor)
	}
	return .atoi32(, ), nil
}

func ( *Decoder) ( int32) (int32, error) {
	var  uint32
	var  = int32(1)
	for ; .cursor < .length || .read(); .cursor++ {
		switch .data[.cursor] {
		case '+':
			continue
		case '-':
			 = -1
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			 := uint32(digits[.data[.cursor]])
			 = ( << 3) + ( << 1) + 
			.cursor++
			for ; .cursor < .length || .read(); .cursor++ {
				switch .data[.cursor] {
				case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
					 := uint32(digits[.data[.cursor]])
					 = ( << 3) + ( << 1) + 
				case ' ', '\t', '\n', '}', ',', ']':
					if +1 >= uint32(len(pow10uint64)) {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					if  == -1 {
						return  * (1 / int32(pow10uint64[+1])), nil
					}
					return  * int32(pow10uint64[+1]), nil
				default:
					return 0, .raiseInvalidJSONErr(.cursor)
				}
			}
			if +1 >= uint32(len(pow10uint64)) {
				return 0, .raiseInvalidJSONErr(.cursor)
			}
			if  == -1 {
				return  * (1 / int32(pow10uint64[+1])), nil
			}
			return  * int32(pow10uint64[+1]), nil
		default:
			.err = .raiseInvalidJSONErr(.cursor)
			return 0, .err
		}
	}
	return 0, .raiseInvalidJSONErr(.cursor)
}

// DecodeInt64 reads the next JSON-encoded value from the decoder's input (io.Reader) and stores it in the int64 pointed to by v.
//
// See the documentation for Unmarshal for details about the conversion of JSON into a Go value.
func ( *Decoder) ( *int64) error {
	if .isPooled == 1 {
		panic(InvalidUsagePooledDecoderError("Invalid usage of pooled decoder"))
	}
	return .decodeInt64()
}

func ( *Decoder) ( *int64) error {
	for ; .cursor < .length || .read(); .cursor++ {
		switch  := .data[.cursor];  {
		case ' ', '\n', '\t', '\r', ',':
			continue
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			,  := .getInt64()
			if  != nil {
				return 
			}
			* = 
			return nil
		case '-':
			.cursor = .cursor + 1
			,  := .getInt64Negative()
			if  != nil {
				return 
			}
			* = -
			return nil
		case 'n':
			.cursor++
			 := .assertNull()
			if  != nil {
				return 
			}
			return nil
		default:
			.err = .makeInvalidUnmarshalErr()
			 := .skipData()
			if  != nil {
				return 
			}
			return nil
		}
	}
	return .raiseInvalidJSONErr(.cursor)
}
func ( *Decoder) ( **int64) error {
	for ; .cursor < .length || .read(); .cursor++ {
		switch  := .data[.cursor];  {
		case ' ', '\n', '\t', '\r', ',':
			continue
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			,  := .getInt64()
			if  != nil {
				return 
			}
			if * == nil {
				* = new(int64)
			}
			** = 
			return nil
		case '-':
			.cursor = .cursor + 1
			,  := .getInt64Negative()
			if  != nil {
				return 
			}
			if * == nil {
				* = new(int64)
			}
			** = -
			return nil
		case 'n':
			.cursor++
			 := .assertNull()
			if  != nil {
				return 
			}
			return nil
		default:
			.err = .makeInvalidUnmarshalErr()
			 := .skipData()
			if  != nil {
				return 
			}
			return nil
		}
	}
	return .raiseInvalidJSONErr(.cursor)
}

func ( *Decoder) () (int64, error) {
	// look for following numbers
	for ; .cursor < .length || .read(); .cursor++ {
		switch .data[.cursor] {
		case '1', '2', '3', '4', '5', '6', '7', '8', '9':
			return .getInt64()
		default:
			return 0, .raiseInvalidJSONErr(.cursor)
		}
	}
	return 0, .raiseInvalidJSONErr(.cursor)
}

func ( *Decoder) () (int64, error) {
	var  = .cursor
	var  = .cursor
	// look for following numbers
	for  := .cursor + 1;  < .length || .read(); ++ {
		switch .data[] {
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			 = 
			continue
		case ' ', '\t', '\n', ',', '}', ']':
			.cursor = 
			return .atoi64(, ), nil
		case '.':
			// if dot is found
			// look for exponent (e,E) as exponent can change the
			// way number should be parsed to int.
			// if no exponent found, just unmarshal the number before decimal point
			++
			 := 
			 :=  - 1
			for ;  < .length || .read(); ++ {
				switch .data[] {
				case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
					 = 
					continue
				case 'e', 'E':
					// if eg 1.E
					if  >  {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					.cursor =  + 1
					// can try unmarshalling to int as Exponent might change decimal number to non decimal
					// let's get the float value first
					// we get part before decimal as integer
					 := .atoi64(, )
					// get number after the decimal point
					// multiple the before decimal point portion by 10 using bitwise
					for  := ;  <= ; ++ {
						 = ( << 3) + ( << 1)
					}
					// then we add both integers
					// then we divide the number by the power found
					 := .atoi64(, )
					 :=  -  + 2
					if  >= len(pow10uint64) ||  < 0 {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					 := pow10uint64[]
					 := float64(+) / float64()
					// we have the floating value, now multiply by the exponent
					,  := .getExponent()
					if  != nil {
						return 0, 
					}
					 := ( + ( >> 31)) ^ ( >> 31) + 1 // abs
					if  >= int64(len(pow10uint64)) ||  < 0 {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					 :=  * float64(pow10uint64[])
					return int64(), nil
				case ' ', '\t', '\n', ',', ']', '}':
					.cursor = 
					return .atoi64(, ), nil
				default:
					.cursor = 
					return 0, .raiseInvalidJSONErr(.cursor)
				}
			}
			return .atoi64(, ), nil
		case 'e', 'E':
			// get init n
			.cursor =  + 1
			return .getInt64WithExp(.atoi64(, ))
		}
		// invalid json we expect numbers, dot (single one), comma, or spaces
		return 0, .raiseInvalidJSONErr(.cursor)
	}
	return .atoi64(, ), nil
}

func ( *Decoder) ( int64) (int64, error) {
	var  uint64
	var  = int64(1)
	for ; .cursor < .length || .read(); .cursor++ {
		switch .data[.cursor] {
		case '+':
			continue
		case '-':
			 = -1
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			 := uint64(digits[.data[.cursor]])
			 = ( << 3) + ( << 1) + 
			.cursor++
			for ; .cursor < .length || .read(); .cursor++ {
				switch .data[.cursor] {
				case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
					 := uint64(digits[.data[.cursor]])
					 = ( << 3) + ( << 1) + 
				case ' ', '\t', '\n', '}', ',', ']':
					if +1 >= uint64(len(pow10uint64)) {
						return 0, .raiseInvalidJSONErr(.cursor)
					}
					if  == -1 {
						return  * (1 / int64(pow10uint64[+1])), nil
					}
					return  * int64(pow10uint64[+1]), nil
				default:
					return 0, .raiseInvalidJSONErr(.cursor)
				}
			}
			if +1 >= uint64(len(pow10uint64)) {
				return 0, .raiseInvalidJSONErr(.cursor)
			}
			if  == -1 {
				return  * (1 / int64(pow10uint64[+1])), nil
			}
			return  * int64(pow10uint64[+1]), nil
		default:
			return 0, .raiseInvalidJSONErr(.cursor)
		}
	}
	return 0, .raiseInvalidJSONErr(.cursor)
}

func ( *Decoder) (,  int) int64 {
	var  =  + 1 - 
	var  = int64(digits[.data[]])
	 =  + 1
	if  < maxInt64Length {
		for  :=  + 1;  < ; ++ {
			 := int64(digits[.data[]])
			 = ( << 3) + ( << 1) + 
		}
		return 
	} else if  == maxInt64Length {
		for  :=  + 1;  < ; ++ {
			 := int64(digits[.data[]])
			if  > maxInt64toMultiply {
				.err = .makeInvalidUnmarshalErr()
				return 0
			}
			 = ( << 3) + ( << 1)
			if math.MaxInt64- <  {
				.err = .makeInvalidUnmarshalErr()
				return 0
			}
			 += 
		}
	} else {
		.err = .makeInvalidUnmarshalErr()
		return 0
	}
	return 
}

func ( *Decoder) (,  int) int32 {
	var  =  + 1 - 
	var  = int32(digits[.data[]])
	 =  + 1

	// overflowing
	if  < maxInt32Length {
		for  :=  + 1;  < ; ++ {
			 := int32(digits[.data[]])
			 = ( << 3) + ( << 1) + 
		}
	} else if  == maxInt32Length {
		for  :=  + 1;  < ; ++ {
			 := int32(digits[.data[]])
			if  > maxInt32toMultiply {
				.err = .makeInvalidUnmarshalErr()
				return 0
			}
			 = ( << 3) + ( << 1)
			if math.MaxInt32- <  {
				.err = .makeInvalidUnmarshalErr()
				return 0
			}
			 += 
		}
	} else {
		.err = .makeInvalidUnmarshalErr()
		return 0
	}
	return 
}

func ( *Decoder) (,  int) int16 {
	var  =  + 1 - 
	var  = int16(digits[.data[]])
	 =  + 1
	// overflowing
	if  < maxInt16Length {
		for  :=  + 1;  < ; ++ {
			 := int16(digits[.data[]])
			 = ( << 3) + ( << 1) + 
		}
	} else if  == maxInt16Length {
		for  :=  + 1;  < ; ++ {
			 := int16(digits[.data[]])
			if  > maxInt16toMultiply {
				.err = .makeInvalidUnmarshalErr()
				return 0
			}
			 = ( << 3) + ( << 1)
			if math.MaxInt16- <  {
				.err = .makeInvalidUnmarshalErr()
				return 0
			}
			 += 
		}
	} else {
		.err = .makeInvalidUnmarshalErr()
		return 0
	}
	return 
}

func ( *Decoder) (,  int) int8 {
	var  =  + 1 - 
	var  = int8(digits[.data[]])
	 =  + 1
	// overflowing
	if  < maxInt8Length {
		for  :=  + 1;  < ; ++ {
			 := int8(digits[.data[]])
			 = ( << 3) + ( << 1) + 
		}
	} else if  == maxInt8Length {
		for  :=  + 1;  < ; ++ {
			 := int8(digits[.data[]])
			if  > maxInt8toMultiply {
				.err = .makeInvalidUnmarshalErr()
				return 0
			}
			 = ( << 3) + ( << 1)
			if math.MaxInt8- <  {
				.err = .makeInvalidUnmarshalErr()
				return 0
			}
			 += 
		}
	} else {
		.err = .makeInvalidUnmarshalErr()
		return 0
	}
	return 
}

// Add Values functions

// AddInt decodes the JSON value within an object or an array to an *int.
// If next key value overflows int, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( *int) error {
	return .Int()
}

// AddIntNull decodes the JSON value within an object or an array to an *int.
// If next key value overflows int, an InvalidUnmarshalError error will be returned.
// If a `null` is encountered, gojay does not change the value of the pointer.
func ( *Decoder) ( **int) error {
	return .IntNull()
}

// AddInt8 decodes the JSON value within an object or an array to an *int.
// If next key value overflows int8, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( *int8) error {
	return .Int8()
}

// AddInt8Null decodes the JSON value within an object or an array to an *int.
// If next key value overflows int8, an InvalidUnmarshalError error will be returned.
// If a `null` is encountered, gojay does not change the value of the pointer.
func ( *Decoder) ( **int8) error {
	return .Int8Null()
}

// AddInt16 decodes the JSON value within an object or an array to an *int.
// If next key value overflows int16, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( *int16) error {
	return .Int16()
}

// AddInt16Null decodes the JSON value within an object or an array to an *int.
// If next key value overflows int16, an InvalidUnmarshalError error will be returned.
// If a `null` is encountered, gojay does not change the value of the pointer.
func ( *Decoder) ( **int16) error {
	return .Int16Null()
}

// AddInt32 decodes the JSON value within an object or an array to an *int.
// If next key value overflows int32, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( *int32) error {
	return .Int32()
}

// AddInt32Null decodes the JSON value within an object or an array to an *int.
// If next key value overflows int32, an InvalidUnmarshalError error will be returned.
// If a `null` is encountered, gojay does not change the value of the pointer.
func ( *Decoder) ( **int32) error {
	return .Int32Null()
}

// AddInt64 decodes the JSON value within an object or an array to an *int.
// If next key value overflows int64, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( *int64) error {
	return .Int64()
}

// AddInt64Null decodes the JSON value within an object or an array to an *int.
// If next key value overflows int64, an InvalidUnmarshalError error will be returned.
// If a `null` is encountered, gojay does not change the value of the pointer.
func ( *Decoder) ( **int64) error {
	return .Int64Null()
}

// Int decodes the JSON value within an object or an array to an *int.
// If next key value overflows int, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( *int) error {
	 := .decodeInt()
	if  != nil {
		return 
	}
	.called |= 1
	return nil
}

// IntNull decodes the JSON value within an object or an array to an *int.
// If next key value overflows int, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( **int) error {
	 := .decodeIntNull()
	if  != nil {
		return 
	}
	.called |= 1
	return nil
}

// Int8 decodes the JSON value within an object or an array to an *int.
// If next key value overflows int8, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( *int8) error {
	 := .decodeInt8()
	if  != nil {
		return 
	}
	.called |= 1
	return nil
}

// Int8Null decodes the JSON value within an object or an array to an *int.
// If next key value overflows int8, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( **int8) error {
	 := .decodeInt8Null()
	if  != nil {
		return 
	}
	.called |= 1
	return nil
}

// Int16 decodes the JSON value within an object or an array to an *int.
// If next key value overflows int16, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( *int16) error {
	 := .decodeInt16()
	if  != nil {
		return 
	}
	.called |= 1
	return nil
}

// Int16Null decodes the JSON value within an object or an array to an *int.
// If next key value overflows int16, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( **int16) error {
	 := .decodeInt16Null()
	if  != nil {
		return 
	}
	.called |= 1
	return nil
}

// Int32 decodes the JSON value within an object or an array to an *int.
// If next key value overflows int32, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( *int32) error {
	 := .decodeInt32()
	if  != nil {
		return 
	}
	.called |= 1
	return nil
}

// Int32Null decodes the JSON value within an object or an array to an *int.
// If next key value overflows int32, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( **int32) error {
	 := .decodeInt32Null()
	if  != nil {
		return 
	}
	.called |= 1
	return nil
}

// Int64 decodes the JSON value within an object or an array to an *int.
// If next key value overflows int64, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( *int64) error {
	 := .decodeInt64()
	if  != nil {
		return 
	}
	.called |= 1
	return nil
}

// Int64Null decodes the JSON value within an object or an array to an *int.
// If next key value overflows int64, an InvalidUnmarshalError error will be returned.
func ( *Decoder) ( **int64) error {
	 := .decodeInt64Null()
	if  != nil {
		return 
	}
	.called |= 1
	return nil
}