// Path: json-smart/src/main/java/net/minidev/json/parser/ParseException.java
// public static final int ERROR_UNEXPECTED_CHAR = 0;
// 
// Path: json-smart/src/main/java/net/minidev/json/parser/ParseException.java
// public static final int ERROR_UNEXPECTED_DUPLICATE_KEY = 5;
// 
// Path: json-smart/src/main/java/net/minidev/json/parser/ParseException.java
// public static final int ERROR_UNEXPECTED_EOF = 3;
// 
// Path: json-smart/src/main/java/net/minidev/json/parser/ParseException.java
// public static final int ERROR_UNEXPECTED_LEADING_0 = 6;
// 
// Path: json-smart/src/main/java/net/minidev/json/parser/ParseException.java
// public static final int ERROR_UNEXPECTED_TOKEN = 1;
// 
// Path: json-smart/src/main/java/net/minidev/json/parser/ParseException.java
// public static final int ERROR_UNEXPECTED_UNICODE = 4;


import static net.minidev.json.parser.ParseException.ERROR_UNEXPECTED_CHAR;
import static net.minidev.json.parser.ParseException.ERROR_UNEXPECTED_DUPLICATE_KEY;
import static net.minidev.json.parser.ParseException.ERROR_UNEXPECTED_EOF;
import static net.minidev.json.parser.ParseException.ERROR_UNEXPECTED_LEADING_0;
import static net.minidev.json.parser.ParseException.ERROR_UNEXPECTED_TOKEN;
import static net.minidev.json.parser.ParseException.ERROR_UNEXPECTED_UNICODE;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;
			case ' ':
			case '\r':
			case '\t':
			case '\n':
				continue;
			case ':':
			case ']':
			case '[':
			case '{':
				throw new ParseException(pos, ERROR_UNEXPECTED_CHAR, c);
			case '}':
				if (needData && !acceptUselessComma)
					throw new ParseException(pos, ERROR_UNEXPECTED_CHAR, (char) c);
				read(); /* unstack */
				handler.endObject();
				return obj;
			case ',':
				if (needData && !acceptUselessComma)
					throw new ParseException(pos, ERROR_UNEXPECTED_CHAR, (char) c);
				acceptData = needData = true;
				continue;
			case '"':
			case '\'':
			default:
				int keyStart = pos;
				if (c == '\"' || c == '\'') {
					readString();
				} else {
					readNQString(stopKey);
					if (!acceptNonQuote)
// Path: json-smart/src/main/java/net/minidev/json/parser/ParseException.java
// public static final int ERROR_UNEXPECTED_CHAR = 0;
// 
// Path: json-smart/src/main/java/net/minidev/json/parser/ParseException.java
// public static final int ERROR_UNEXPECTED_DUPLICATE_KEY = 5;
// 
// Path: json-smart/src/main/java/net/minidev/json/parser/ParseException.java
// public static final int ERROR_UNEXPECTED_EOF = 3;
// 
// Path: json-smart/src/main/java/net/minidev/json/parser/ParseException.java
// public static final int ERROR_UNEXPECTED_LEADING_0 = 6;
// 
// Path: json-smart/src/main/java/net/minidev/json/parser/ParseException.java
// public static final int ERROR_UNEXPECTED_TOKEN = 1;
// 
// Path: json-smart/src/main/java/net/minidev/json/parser/ParseException.java
// public static final int ERROR_UNEXPECTED_UNICODE = 4;


// Path: json-smart/src/main/java/net/minidev/json/parser/JSONParserBase.java
import static net.minidev.json.parser.ParseException.ERROR_UNEXPECTED_CHAR;
import static net.minidev.json.parser.ParseException.ERROR_UNEXPECTED_DUPLICATE_KEY;
import static net.minidev.json.parser.ParseException.ERROR_UNEXPECTED_EOF;
import static net.minidev.json.parser.ParseException.ERROR_UNEXPECTED_LEADING_0;
import static net.minidev.json.parser.ParseException.ERROR_UNEXPECTED_TOKEN;
import static net.minidev.json.parser.ParseException.ERROR_UNEXPECTED_UNICODE;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;

			case ' ':
			case '\r':
			case '\t':
			case '\n':
				continue;
			case ':':
			case ']':
			case '[':
			case '{':
				throw new ParseException(pos, ERROR_UNEXPECTED_CHAR, c);
			case '}':
				if (needData && !acceptUselessComma)
					throw new ParseException(pos, ERROR_UNEXPECTED_CHAR, (char) c);
				read(); /* unstack */
				handler.endObject();
				return obj;
			case ',':
				if (needData && !acceptUselessComma)
					throw new ParseException(pos, ERROR_UNEXPECTED_CHAR, (char) c);
				acceptData = needData = true;
				continue;
			case '"':
			case '\'':
			default:
				int keyStart = pos;
				if (c == '\"' || c == '\'') {
					readString();
				} else {
					readNQString(stopKey);
					if (!acceptNonQuote)
						throw new ParseException(pos, ERROR_UNEXPECTED_TOKEN, xs);