code: private List<Object> parseArrayInternal() throws IOException {
  		List<Object> result = new ArrayList<>();
  		
  		Type t;
  		while (true) {
  			t = lexer.readNextToken();
  			if (t == Type.END_ARRAY) {
  				break;
  			}
  			
  			if (!result.isEmpty()) {
  				//skip comma and read next token
  				if (t != Type.COMMA) {
  					throw new IOException("Unexpected token: " + t);
  				}
  				t = lexer.readNextToken();
  			}
  			
  			//read value
  			Object value = readValue(t);
  			result.add(value);
  		}
  		
  		return result;
  	}
docs: Parses an array without reading the {@link Type#START_ARRAY} token
  @return the parsed array
  @throws IOException if the input stream could not be read or if
  the input stream contained an unexpected token