docs: public static <T> List<T> parseListFrom(JsonParser parser, Schema<T> schema,
              boolean numeric) throws IOException
      {
          if (parser.nextToken() != JsonToken.START_ARRAY)
          {
              throw new JsonInputException("Expected token: [ but was " +
                      parser.getCurrentToken() + " on message: " +
                      schema.messageFullName());
          }
  
          final JsonInput input = new JsonInput(parser, numeric);
          final List<T> list = new ArrayList<T>();
          for (JsonToken t = parser.nextToken(); t != JsonToken.END_ARRAY; t = parser.nextToken())
          {
              if (t != JsonToken.START_OBJECT)
              {
                  throw new JsonInputException("Expected token: { but was " +
                          parser.getCurrentToken() + " on message " +
                          schema.messageFullName());
              }
  
              final T message = schema.newMessage();
              schema.mergeFrom(input, message);
  
              if (parser.getCurrentToken() != JsonToken.END_OBJECT)
              {
                  throw new JsonInputException("Expected token: } but was " +
                          parser.getCurrentToken() + " on message " +
                          schema.messageFullName());
              }
  
              list.add(message);
              input.reset();
          }
          return list;
      }