private JsonToken nextValue() throws IOException {
    int c = nextNonWhitespace();
    switch (c) {
      case '{':
        push(JsonScope.EMPTY_OBJECT);
        return token = JsonToken.BEGIN_OBJECT;

      case '[':
        push(JsonScope.EMPTY_ARRAY);
        return token = JsonToken.BEGIN_ARRAY;

      case '\'':
        checkLenient(); // fall-through
      case '"':
        value = nextString((char) c);
        return token = JsonToken.STRING;

      default:
        pos--;
        return readLiteral();
    }
  }
 {
   push(JsonScope.EMPTY_DOCUMENT);
 }