code: private FieldElement readField(String documentation, FieldElement.Label label) {
      DataType type = readDataType();
      String name = readName();
      if (readChar() != '=') throw unexpected("expected '='");
      int tag = readInt();
  
      FieldElement.Builder builder = FieldElement.builder()
          .label(label)
          .type(type)
          .name(name)
          .tag(tag);
  
      if (peekChar() == '[') {
        pos++;
        while (true) {
          builder.addOption(readOption('='));
  
          // Check for optional ',' or closing ']'
          char c = peekChar();
          if (c == ']') {
            pos++;
            break;
          } else if (c == ',') {
            pos++;
          }
        }
      }
      if (readChar() != ';') {
        throw unexpected("expected ';'");
      }
      documentation = tryAppendTrailingDocumentation(documentation);
      return builder.documentation(documentation).build();
    }
docs: Reads an field declaration and returns it.