code: public Object parseValue(boolean ordered) throws IOException {
          if (lastToken == Token.TokenEOF) throw new IOException("Expecting property value " + tokenizer.onLineCol());
  
          if (lastToken.isNumber())
          {
              Object result = lastToken.getNumber();
              lastToken = tokenizer.next();
              return result;
          }
  
          if (lastToken.isString())
          {
              Object result = lastToken.getString();
              lastToken = tokenizer.next();
              return result;
          }
  
          if (lastToken == Token.TokenFalse)
          {
              lastToken = tokenizer.next();
              return Boolean.FALSE;
          }
  
          if (lastToken == Token.TokenTrue)
          {
              lastToken = tokenizer.next();
              return Boolean.TRUE;
          }
  
          if (lastToken == Token.TokenNull)
          {
              lastToken = tokenizer.next();
              return null;
          }
  
          if (lastToken == Token.TokenBrackL) return parseArray(ordered);
          if (lastToken == Token.TokenBraceL) return parseObject(ordered);
  
          throw new IOException("Invalid token " + tokenizer.onLineCol());
      }
docs: Method to parse the current JSON property value from the last token.
  @return The java object type that represents the JSON value.
  @param ordered Flag to denote if the parse should contruct JSON objects and arrays which maintain serialization order of the attributes.
  
  @throws IOException Thrown if an IO error (read incomplete token) occurs.