code: private List<Object> readList() {
      if (readChar() != '[') throw new AssertionError();
      List<Object> result = new ArrayList<>();
      while (true) {
        if (peekChar() == ']') {
          // If we see the close brace, finish immediately. This handles [] and ,] cases.
          pos++;
          return result;
        }
  
        result.add(readKindAndValue().value());
  
        char c = peekChar();
        if (c == ',') {
          pos++;
        } else if (c != ']') {
          throw unexpected("expected ',' or ']'");
        }
      }
    }
docs: Returns a list of values. This is similar to JSON with '[' and ']'
  surrounding the list and ',' separating values.