// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: commands/board.proto

package cc.arduino.cli.commands;

public final class Board {
  private Board() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface BoardDetailsReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.BoardDetailsReq)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    boolean hasInstance();
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    cc.arduino.cli.commands.Common.Instance getInstance();
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    cc.arduino.cli.commands.Common.InstanceOrBuilder getInstanceOrBuilder();

    /**
     * <code>string fqbn = 2;</code>
     */
    java.lang.String getFqbn();
    /**
     * <code>string fqbn = 2;</code>
     */
    com.google.protobuf.ByteString
        getFqbnBytes();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.BoardDetailsReq}
   */
  public  static final class BoardDetailsReq extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.BoardDetailsReq)
      BoardDetailsReqOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BoardDetailsReq.newBuilder() to construct.
    private BoardDetailsReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BoardDetailsReq() {
      fqbn_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BoardDetailsReq();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BoardDetailsReq(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              cc.arduino.cli.commands.Common.Instance.Builder subBuilder = null;
              if (instance_ != null) {
                subBuilder = instance_.toBuilder();
              }
              instance_ = input.readMessage(cc.arduino.cli.commands.Common.Instance.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(instance_);
                instance_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              fqbn_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardDetailsReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardDetailsReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Board.BoardDetailsReq.class, cc.arduino.cli.commands.Board.BoardDetailsReq.Builder.class);
    }

    public static final int INSTANCE_FIELD_NUMBER = 1;
    private cc.arduino.cli.commands.Common.Instance instance_;
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    public boolean hasInstance() {
      return instance_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    public cc.arduino.cli.commands.Common.Instance getInstance() {
      return instance_ == null ? cc.arduino.cli.commands.Common.Instance.getDefaultInstance() : instance_;
    }
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    public cc.arduino.cli.commands.Common.InstanceOrBuilder getInstanceOrBuilder() {
      return getInstance();
    }

    public static final int FQBN_FIELD_NUMBER = 2;
    private volatile java.lang.Object fqbn_;
    /**
     * <code>string fqbn = 2;</code>
     */
    public java.lang.String getFqbn() {
      java.lang.Object ref = fqbn_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        fqbn_ = s;
        return s;
      }
    }
    /**
     * <code>string fqbn = 2;</code>
     */
    public com.google.protobuf.ByteString
        getFqbnBytes() {
      java.lang.Object ref = fqbn_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fqbn_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (instance_ != null) {
        output.writeMessage(1, getInstance());
      }
      if (!getFqbnBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, fqbn_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (instance_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getInstance());
      }
      if (!getFqbnBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, fqbn_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cc.arduino.cli.commands.Board.BoardDetailsReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Board.BoardDetailsReq other = (cc.arduino.cli.commands.Board.BoardDetailsReq) obj;

      if (hasInstance() != other.hasInstance()) return false;
      if (hasInstance()) {
        if (!getInstance()
            .equals(other.getInstance())) return false;
      }
      if (!getFqbn()
          .equals(other.getFqbn())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasInstance()) {
        hash = (37 * hash) + INSTANCE_FIELD_NUMBER;
        hash = (53 * hash) + getInstance().hashCode();
      }
      hash = (37 * hash) + FQBN_FIELD_NUMBER;
      hash = (53 * hash) + getFqbn().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Board.BoardDetailsReq parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsReq parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsReq parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsReq parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsReq parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsReq parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cc.arduino.cli.commands.Board.BoardDetailsReq prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cc.arduino.cli.commands.BoardDetailsReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.BoardDetailsReq)
        cc.arduino.cli.commands.Board.BoardDetailsReqOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardDetailsReq_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardDetailsReq_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Board.BoardDetailsReq.class, cc.arduino.cli.commands.Board.BoardDetailsReq.Builder.class);
      }

      // Construct using cc.arduino.cli.commands.Board.BoardDetailsReq.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (instanceBuilder_ == null) {
          instance_ = null;
        } else {
          instance_ = null;
          instanceBuilder_ = null;
        }
        fqbn_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardDetailsReq_descriptor;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardDetailsReq getDefaultInstanceForType() {
        return cc.arduino.cli.commands.Board.BoardDetailsReq.getDefaultInstance();
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardDetailsReq build() {
        cc.arduino.cli.commands.Board.BoardDetailsReq result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardDetailsReq buildPartial() {
        cc.arduino.cli.commands.Board.BoardDetailsReq result = new cc.arduino.cli.commands.Board.BoardDetailsReq(this);
        if (instanceBuilder_ == null) {
          result.instance_ = instance_;
        } else {
          result.instance_ = instanceBuilder_.build();
        }
        result.fqbn_ = fqbn_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cc.arduino.cli.commands.Board.BoardDetailsReq) {
          return mergeFrom((cc.arduino.cli.commands.Board.BoardDetailsReq)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Board.BoardDetailsReq other) {
        if (other == cc.arduino.cli.commands.Board.BoardDetailsReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (!other.getFqbn().isEmpty()) {
          fqbn_ = other.fqbn_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cc.arduino.cli.commands.Board.BoardDetailsReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Board.BoardDetailsReq) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private cc.arduino.cli.commands.Common.Instance instance_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.Instance, cc.arduino.cli.commands.Common.Instance.Builder, cc.arduino.cli.commands.Common.InstanceOrBuilder> instanceBuilder_;
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public boolean hasInstance() {
        return instanceBuilder_ != null || instance_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public cc.arduino.cli.commands.Common.Instance getInstance() {
        if (instanceBuilder_ == null) {
          return instance_ == null ? cc.arduino.cli.commands.Common.Instance.getDefaultInstance() : instance_;
        } else {
          return instanceBuilder_.getMessage();
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder setInstance(cc.arduino.cli.commands.Common.Instance value) {
        if (instanceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          instance_ = value;
          onChanged();
        } else {
          instanceBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder setInstance(
          cc.arduino.cli.commands.Common.Instance.Builder builderForValue) {
        if (instanceBuilder_ == null) {
          instance_ = builderForValue.build();
          onChanged();
        } else {
          instanceBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder mergeInstance(cc.arduino.cli.commands.Common.Instance value) {
        if (instanceBuilder_ == null) {
          if (instance_ != null) {
            instance_ =
              cc.arduino.cli.commands.Common.Instance.newBuilder(instance_).mergeFrom(value).buildPartial();
          } else {
            instance_ = value;
          }
          onChanged();
        } else {
          instanceBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder clearInstance() {
        if (instanceBuilder_ == null) {
          instance_ = null;
          onChanged();
        } else {
          instance_ = null;
          instanceBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public cc.arduino.cli.commands.Common.Instance.Builder getInstanceBuilder() {
        
        onChanged();
        return getInstanceFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public cc.arduino.cli.commands.Common.InstanceOrBuilder getInstanceOrBuilder() {
        if (instanceBuilder_ != null) {
          return instanceBuilder_.getMessageOrBuilder();
        } else {
          return instance_ == null ?
              cc.arduino.cli.commands.Common.Instance.getDefaultInstance() : instance_;
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.Instance, cc.arduino.cli.commands.Common.Instance.Builder, cc.arduino.cli.commands.Common.InstanceOrBuilder> 
          getInstanceFieldBuilder() {
        if (instanceBuilder_ == null) {
          instanceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cc.arduino.cli.commands.Common.Instance, cc.arduino.cli.commands.Common.Instance.Builder, cc.arduino.cli.commands.Common.InstanceOrBuilder>(
                  getInstance(),
                  getParentForChildren(),
                  isClean());
          instance_ = null;
        }
        return instanceBuilder_;
      }

      private java.lang.Object fqbn_ = "";
      /**
       * <code>string fqbn = 2;</code>
       */
      public java.lang.String getFqbn() {
        java.lang.Object ref = fqbn_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fqbn_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string fqbn = 2;</code>
       */
      public com.google.protobuf.ByteString
          getFqbnBytes() {
        java.lang.Object ref = fqbn_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fqbn_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string fqbn = 2;</code>
       */
      public Builder setFqbn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        fqbn_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string fqbn = 2;</code>
       */
      public Builder clearFqbn() {
        
        fqbn_ = getDefaultInstance().getFqbn();
        onChanged();
        return this;
      }
      /**
       * <code>string fqbn = 2;</code>
       */
      public Builder setFqbnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        fqbn_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cc.arduino.cli.commands.BoardDetailsReq)
    }

    // @@protoc_insertion_point(class_scope:cc.arduino.cli.commands.BoardDetailsReq)
    private static final cc.arduino.cli.commands.Board.BoardDetailsReq DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cc.arduino.cli.commands.Board.BoardDetailsReq();
    }

    public static cc.arduino.cli.commands.Board.BoardDetailsReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BoardDetailsReq>
        PARSER = new com.google.protobuf.AbstractParser<BoardDetailsReq>() {
      @java.lang.Override
      public BoardDetailsReq parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BoardDetailsReq(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BoardDetailsReq> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BoardDetailsReq> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cc.arduino.cli.commands.Board.BoardDetailsReq getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BoardDetailsRespOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.BoardDetailsResp)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string name = 2;</code>
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
     */
    java.util.List<cc.arduino.cli.commands.Board.ConfigOption> 
        getConfigOptionsList();
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
     */
    cc.arduino.cli.commands.Board.ConfigOption getConfigOptions(int index);
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
     */
    int getConfigOptionsCount();
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
     */
    java.util.List<? extends cc.arduino.cli.commands.Board.ConfigOptionOrBuilder> 
        getConfigOptionsOrBuilderList();
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
     */
    cc.arduino.cli.commands.Board.ConfigOptionOrBuilder getConfigOptionsOrBuilder(
        int index);

    /**
     * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
     */
    java.util.List<cc.arduino.cli.commands.Board.RequiredTool> 
        getRequiredToolsList();
    /**
     * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
     */
    cc.arduino.cli.commands.Board.RequiredTool getRequiredTools(int index);
    /**
     * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
     */
    int getRequiredToolsCount();
    /**
     * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
     */
    java.util.List<? extends cc.arduino.cli.commands.Board.RequiredToolOrBuilder> 
        getRequiredToolsOrBuilderList();
    /**
     * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
     */
    cc.arduino.cli.commands.Board.RequiredToolOrBuilder getRequiredToolsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.BoardDetailsResp}
   */
  public  static final class BoardDetailsResp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.BoardDetailsResp)
      BoardDetailsRespOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BoardDetailsResp.newBuilder() to construct.
    private BoardDetailsResp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BoardDetailsResp() {
      name_ = "";
      configOptions_ = java.util.Collections.emptyList();
      requiredTools_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BoardDetailsResp();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BoardDetailsResp(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                configOptions_ = new java.util.ArrayList<cc.arduino.cli.commands.Board.ConfigOption>();
                mutable_bitField0_ |= 0x00000001;
              }
              configOptions_.add(
                  input.readMessage(cc.arduino.cli.commands.Board.ConfigOption.parser(), extensionRegistry));
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                requiredTools_ = new java.util.ArrayList<cc.arduino.cli.commands.Board.RequiredTool>();
                mutable_bitField0_ |= 0x00000002;
              }
              requiredTools_.add(
                  input.readMessage(cc.arduino.cli.commands.Board.RequiredTool.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          configOptions_ = java.util.Collections.unmodifiableList(configOptions_);
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          requiredTools_ = java.util.Collections.unmodifiableList(requiredTools_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardDetailsResp_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardDetailsResp_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Board.BoardDetailsResp.class, cc.arduino.cli.commands.Board.BoardDetailsResp.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 2;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONFIG_OPTIONS_FIELD_NUMBER = 3;
    private java.util.List<cc.arduino.cli.commands.Board.ConfigOption> configOptions_;
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
     */
    public java.util.List<cc.arduino.cli.commands.Board.ConfigOption> getConfigOptionsList() {
      return configOptions_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
     */
    public java.util.List<? extends cc.arduino.cli.commands.Board.ConfigOptionOrBuilder> 
        getConfigOptionsOrBuilderList() {
      return configOptions_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
     */
    public int getConfigOptionsCount() {
      return configOptions_.size();
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
     */
    public cc.arduino.cli.commands.Board.ConfigOption getConfigOptions(int index) {
      return configOptions_.get(index);
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
     */
    public cc.arduino.cli.commands.Board.ConfigOptionOrBuilder getConfigOptionsOrBuilder(
        int index) {
      return configOptions_.get(index);
    }

    public static final int REQUIRED_TOOLS_FIELD_NUMBER = 4;
    private java.util.List<cc.arduino.cli.commands.Board.RequiredTool> requiredTools_;
    /**
     * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
     */
    public java.util.List<cc.arduino.cli.commands.Board.RequiredTool> getRequiredToolsList() {
      return requiredTools_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
     */
    public java.util.List<? extends cc.arduino.cli.commands.Board.RequiredToolOrBuilder> 
        getRequiredToolsOrBuilderList() {
      return requiredTools_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
     */
    public int getRequiredToolsCount() {
      return requiredTools_.size();
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
     */
    public cc.arduino.cli.commands.Board.RequiredTool getRequiredTools(int index) {
      return requiredTools_.get(index);
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
     */
    public cc.arduino.cli.commands.Board.RequiredToolOrBuilder getRequiredToolsOrBuilder(
        int index) {
      return requiredTools_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      for (int i = 0; i < configOptions_.size(); i++) {
        output.writeMessage(3, configOptions_.get(i));
      }
      for (int i = 0; i < requiredTools_.size(); i++) {
        output.writeMessage(4, requiredTools_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      for (int i = 0; i < configOptions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, configOptions_.get(i));
      }
      for (int i = 0; i < requiredTools_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, requiredTools_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cc.arduino.cli.commands.Board.BoardDetailsResp)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Board.BoardDetailsResp other = (cc.arduino.cli.commands.Board.BoardDetailsResp) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getConfigOptionsList()
          .equals(other.getConfigOptionsList())) return false;
      if (!getRequiredToolsList()
          .equals(other.getRequiredToolsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getConfigOptionsCount() > 0) {
        hash = (37 * hash) + CONFIG_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getConfigOptionsList().hashCode();
      }
      if (getRequiredToolsCount() > 0) {
        hash = (37 * hash) + REQUIRED_TOOLS_FIELD_NUMBER;
        hash = (53 * hash) + getRequiredToolsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Board.BoardDetailsResp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsResp parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsResp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsResp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsResp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsResp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsResp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsResp parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsResp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsResp parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsResp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardDetailsResp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cc.arduino.cli.commands.Board.BoardDetailsResp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cc.arduino.cli.commands.BoardDetailsResp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.BoardDetailsResp)
        cc.arduino.cli.commands.Board.BoardDetailsRespOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardDetailsResp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardDetailsResp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Board.BoardDetailsResp.class, cc.arduino.cli.commands.Board.BoardDetailsResp.Builder.class);
      }

      // Construct using cc.arduino.cli.commands.Board.BoardDetailsResp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getConfigOptionsFieldBuilder();
          getRequiredToolsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        if (configOptionsBuilder_ == null) {
          configOptions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          configOptionsBuilder_.clear();
        }
        if (requiredToolsBuilder_ == null) {
          requiredTools_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          requiredToolsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardDetailsResp_descriptor;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardDetailsResp getDefaultInstanceForType() {
        return cc.arduino.cli.commands.Board.BoardDetailsResp.getDefaultInstance();
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardDetailsResp build() {
        cc.arduino.cli.commands.Board.BoardDetailsResp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardDetailsResp buildPartial() {
        cc.arduino.cli.commands.Board.BoardDetailsResp result = new cc.arduino.cli.commands.Board.BoardDetailsResp(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        if (configOptionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            configOptions_ = java.util.Collections.unmodifiableList(configOptions_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.configOptions_ = configOptions_;
        } else {
          result.configOptions_ = configOptionsBuilder_.build();
        }
        if (requiredToolsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            requiredTools_ = java.util.Collections.unmodifiableList(requiredTools_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.requiredTools_ = requiredTools_;
        } else {
          result.requiredTools_ = requiredToolsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cc.arduino.cli.commands.Board.BoardDetailsResp) {
          return mergeFrom((cc.arduino.cli.commands.Board.BoardDetailsResp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Board.BoardDetailsResp other) {
        if (other == cc.arduino.cli.commands.Board.BoardDetailsResp.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (configOptionsBuilder_ == null) {
          if (!other.configOptions_.isEmpty()) {
            if (configOptions_.isEmpty()) {
              configOptions_ = other.configOptions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureConfigOptionsIsMutable();
              configOptions_.addAll(other.configOptions_);
            }
            onChanged();
          }
        } else {
          if (!other.configOptions_.isEmpty()) {
            if (configOptionsBuilder_.isEmpty()) {
              configOptionsBuilder_.dispose();
              configOptionsBuilder_ = null;
              configOptions_ = other.configOptions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              configOptionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getConfigOptionsFieldBuilder() : null;
            } else {
              configOptionsBuilder_.addAllMessages(other.configOptions_);
            }
          }
        }
        if (requiredToolsBuilder_ == null) {
          if (!other.requiredTools_.isEmpty()) {
            if (requiredTools_.isEmpty()) {
              requiredTools_ = other.requiredTools_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureRequiredToolsIsMutable();
              requiredTools_.addAll(other.requiredTools_);
            }
            onChanged();
          }
        } else {
          if (!other.requiredTools_.isEmpty()) {
            if (requiredToolsBuilder_.isEmpty()) {
              requiredToolsBuilder_.dispose();
              requiredToolsBuilder_ = null;
              requiredTools_ = other.requiredTools_;
              bitField0_ = (bitField0_ & ~0x00000002);
              requiredToolsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRequiredToolsFieldBuilder() : null;
            } else {
              requiredToolsBuilder_.addAllMessages(other.requiredTools_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cc.arduino.cli.commands.Board.BoardDetailsResp parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Board.BoardDetailsResp) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 2;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.util.List<cc.arduino.cli.commands.Board.ConfigOption> configOptions_ =
        java.util.Collections.emptyList();
      private void ensureConfigOptionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          configOptions_ = new java.util.ArrayList<cc.arduino.cli.commands.Board.ConfigOption>(configOptions_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Board.ConfigOption, cc.arduino.cli.commands.Board.ConfigOption.Builder, cc.arduino.cli.commands.Board.ConfigOptionOrBuilder> configOptionsBuilder_;

      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Board.ConfigOption> getConfigOptionsList() {
        if (configOptionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(configOptions_);
        } else {
          return configOptionsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public int getConfigOptionsCount() {
        if (configOptionsBuilder_ == null) {
          return configOptions_.size();
        } else {
          return configOptionsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public cc.arduino.cli.commands.Board.ConfigOption getConfigOptions(int index) {
        if (configOptionsBuilder_ == null) {
          return configOptions_.get(index);
        } else {
          return configOptionsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public Builder setConfigOptions(
          int index, cc.arduino.cli.commands.Board.ConfigOption value) {
        if (configOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigOptionsIsMutable();
          configOptions_.set(index, value);
          onChanged();
        } else {
          configOptionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public Builder setConfigOptions(
          int index, cc.arduino.cli.commands.Board.ConfigOption.Builder builderForValue) {
        if (configOptionsBuilder_ == null) {
          ensureConfigOptionsIsMutable();
          configOptions_.set(index, builderForValue.build());
          onChanged();
        } else {
          configOptionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public Builder addConfigOptions(cc.arduino.cli.commands.Board.ConfigOption value) {
        if (configOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigOptionsIsMutable();
          configOptions_.add(value);
          onChanged();
        } else {
          configOptionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public Builder addConfigOptions(
          int index, cc.arduino.cli.commands.Board.ConfigOption value) {
        if (configOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigOptionsIsMutable();
          configOptions_.add(index, value);
          onChanged();
        } else {
          configOptionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public Builder addConfigOptions(
          cc.arduino.cli.commands.Board.ConfigOption.Builder builderForValue) {
        if (configOptionsBuilder_ == null) {
          ensureConfigOptionsIsMutable();
          configOptions_.add(builderForValue.build());
          onChanged();
        } else {
          configOptionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public Builder addConfigOptions(
          int index, cc.arduino.cli.commands.Board.ConfigOption.Builder builderForValue) {
        if (configOptionsBuilder_ == null) {
          ensureConfigOptionsIsMutable();
          configOptions_.add(index, builderForValue.build());
          onChanged();
        } else {
          configOptionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public Builder addAllConfigOptions(
          java.lang.Iterable<? extends cc.arduino.cli.commands.Board.ConfigOption> values) {
        if (configOptionsBuilder_ == null) {
          ensureConfigOptionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, configOptions_);
          onChanged();
        } else {
          configOptionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public Builder clearConfigOptions() {
        if (configOptionsBuilder_ == null) {
          configOptions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          configOptionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public Builder removeConfigOptions(int index) {
        if (configOptionsBuilder_ == null) {
          ensureConfigOptionsIsMutable();
          configOptions_.remove(index);
          onChanged();
        } else {
          configOptionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public cc.arduino.cli.commands.Board.ConfigOption.Builder getConfigOptionsBuilder(
          int index) {
        return getConfigOptionsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public cc.arduino.cli.commands.Board.ConfigOptionOrBuilder getConfigOptionsOrBuilder(
          int index) {
        if (configOptionsBuilder_ == null) {
          return configOptions_.get(index);  } else {
          return configOptionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public java.util.List<? extends cc.arduino.cli.commands.Board.ConfigOptionOrBuilder> 
           getConfigOptionsOrBuilderList() {
        if (configOptionsBuilder_ != null) {
          return configOptionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(configOptions_);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public cc.arduino.cli.commands.Board.ConfigOption.Builder addConfigOptionsBuilder() {
        return getConfigOptionsFieldBuilder().addBuilder(
            cc.arduino.cli.commands.Board.ConfigOption.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public cc.arduino.cli.commands.Board.ConfigOption.Builder addConfigOptionsBuilder(
          int index) {
        return getConfigOptionsFieldBuilder().addBuilder(
            index, cc.arduino.cli.commands.Board.ConfigOption.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigOption config_options = 3;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Board.ConfigOption.Builder> 
           getConfigOptionsBuilderList() {
        return getConfigOptionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Board.ConfigOption, cc.arduino.cli.commands.Board.ConfigOption.Builder, cc.arduino.cli.commands.Board.ConfigOptionOrBuilder> 
          getConfigOptionsFieldBuilder() {
        if (configOptionsBuilder_ == null) {
          configOptionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              cc.arduino.cli.commands.Board.ConfigOption, cc.arduino.cli.commands.Board.ConfigOption.Builder, cc.arduino.cli.commands.Board.ConfigOptionOrBuilder>(
                  configOptions_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          configOptions_ = null;
        }
        return configOptionsBuilder_;
      }

      private java.util.List<cc.arduino.cli.commands.Board.RequiredTool> requiredTools_ =
        java.util.Collections.emptyList();
      private void ensureRequiredToolsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          requiredTools_ = new java.util.ArrayList<cc.arduino.cli.commands.Board.RequiredTool>(requiredTools_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Board.RequiredTool, cc.arduino.cli.commands.Board.RequiredTool.Builder, cc.arduino.cli.commands.Board.RequiredToolOrBuilder> requiredToolsBuilder_;

      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Board.RequiredTool> getRequiredToolsList() {
        if (requiredToolsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(requiredTools_);
        } else {
          return requiredToolsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public int getRequiredToolsCount() {
        if (requiredToolsBuilder_ == null) {
          return requiredTools_.size();
        } else {
          return requiredToolsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public cc.arduino.cli.commands.Board.RequiredTool getRequiredTools(int index) {
        if (requiredToolsBuilder_ == null) {
          return requiredTools_.get(index);
        } else {
          return requiredToolsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public Builder setRequiredTools(
          int index, cc.arduino.cli.commands.Board.RequiredTool value) {
        if (requiredToolsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequiredToolsIsMutable();
          requiredTools_.set(index, value);
          onChanged();
        } else {
          requiredToolsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public Builder setRequiredTools(
          int index, cc.arduino.cli.commands.Board.RequiredTool.Builder builderForValue) {
        if (requiredToolsBuilder_ == null) {
          ensureRequiredToolsIsMutable();
          requiredTools_.set(index, builderForValue.build());
          onChanged();
        } else {
          requiredToolsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public Builder addRequiredTools(cc.arduino.cli.commands.Board.RequiredTool value) {
        if (requiredToolsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequiredToolsIsMutable();
          requiredTools_.add(value);
          onChanged();
        } else {
          requiredToolsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public Builder addRequiredTools(
          int index, cc.arduino.cli.commands.Board.RequiredTool value) {
        if (requiredToolsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequiredToolsIsMutable();
          requiredTools_.add(index, value);
          onChanged();
        } else {
          requiredToolsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public Builder addRequiredTools(
          cc.arduino.cli.commands.Board.RequiredTool.Builder builderForValue) {
        if (requiredToolsBuilder_ == null) {
          ensureRequiredToolsIsMutable();
          requiredTools_.add(builderForValue.build());
          onChanged();
        } else {
          requiredToolsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public Builder addRequiredTools(
          int index, cc.arduino.cli.commands.Board.RequiredTool.Builder builderForValue) {
        if (requiredToolsBuilder_ == null) {
          ensureRequiredToolsIsMutable();
          requiredTools_.add(index, builderForValue.build());
          onChanged();
        } else {
          requiredToolsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public Builder addAllRequiredTools(
          java.lang.Iterable<? extends cc.arduino.cli.commands.Board.RequiredTool> values) {
        if (requiredToolsBuilder_ == null) {
          ensureRequiredToolsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, requiredTools_);
          onChanged();
        } else {
          requiredToolsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public Builder clearRequiredTools() {
        if (requiredToolsBuilder_ == null) {
          requiredTools_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          requiredToolsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public Builder removeRequiredTools(int index) {
        if (requiredToolsBuilder_ == null) {
          ensureRequiredToolsIsMutable();
          requiredTools_.remove(index);
          onChanged();
        } else {
          requiredToolsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public cc.arduino.cli.commands.Board.RequiredTool.Builder getRequiredToolsBuilder(
          int index) {
        return getRequiredToolsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public cc.arduino.cli.commands.Board.RequiredToolOrBuilder getRequiredToolsOrBuilder(
          int index) {
        if (requiredToolsBuilder_ == null) {
          return requiredTools_.get(index);  } else {
          return requiredToolsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public java.util.List<? extends cc.arduino.cli.commands.Board.RequiredToolOrBuilder> 
           getRequiredToolsOrBuilderList() {
        if (requiredToolsBuilder_ != null) {
          return requiredToolsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(requiredTools_);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public cc.arduino.cli.commands.Board.RequiredTool.Builder addRequiredToolsBuilder() {
        return getRequiredToolsFieldBuilder().addBuilder(
            cc.arduino.cli.commands.Board.RequiredTool.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public cc.arduino.cli.commands.Board.RequiredTool.Builder addRequiredToolsBuilder(
          int index) {
        return getRequiredToolsFieldBuilder().addBuilder(
            index, cc.arduino.cli.commands.Board.RequiredTool.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.RequiredTool required_tools = 4;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Board.RequiredTool.Builder> 
           getRequiredToolsBuilderList() {
        return getRequiredToolsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Board.RequiredTool, cc.arduino.cli.commands.Board.RequiredTool.Builder, cc.arduino.cli.commands.Board.RequiredToolOrBuilder> 
          getRequiredToolsFieldBuilder() {
        if (requiredToolsBuilder_ == null) {
          requiredToolsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              cc.arduino.cli.commands.Board.RequiredTool, cc.arduino.cli.commands.Board.RequiredTool.Builder, cc.arduino.cli.commands.Board.RequiredToolOrBuilder>(
                  requiredTools_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          requiredTools_ = null;
        }
        return requiredToolsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cc.arduino.cli.commands.BoardDetailsResp)
    }

    // @@protoc_insertion_point(class_scope:cc.arduino.cli.commands.BoardDetailsResp)
    private static final cc.arduino.cli.commands.Board.BoardDetailsResp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cc.arduino.cli.commands.Board.BoardDetailsResp();
    }

    public static cc.arduino.cli.commands.Board.BoardDetailsResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BoardDetailsResp>
        PARSER = new com.google.protobuf.AbstractParser<BoardDetailsResp>() {
      @java.lang.Override
      public BoardDetailsResp parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BoardDetailsResp(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BoardDetailsResp> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BoardDetailsResp> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cc.arduino.cli.commands.Board.BoardDetailsResp getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConfigOptionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.ConfigOption)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string option = 1;</code>
     */
    java.lang.String getOption();
    /**
     * <code>string option = 1;</code>
     */
    com.google.protobuf.ByteString
        getOptionBytes();

    /**
     * <code>string option_label = 2;</code>
     */
    java.lang.String getOptionLabel();
    /**
     * <code>string option_label = 2;</code>
     */
    com.google.protobuf.ByteString
        getOptionLabelBytes();

    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
     */
    java.util.List<cc.arduino.cli.commands.Board.ConfigValue> 
        getValuesList();
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
     */
    cc.arduino.cli.commands.Board.ConfigValue getValues(int index);
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
     */
    int getValuesCount();
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
     */
    java.util.List<? extends cc.arduino.cli.commands.Board.ConfigValueOrBuilder> 
        getValuesOrBuilderList();
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
     */
    cc.arduino.cli.commands.Board.ConfigValueOrBuilder getValuesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.ConfigOption}
   */
  public  static final class ConfigOption extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.ConfigOption)
      ConfigOptionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConfigOption.newBuilder() to construct.
    private ConfigOption(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConfigOption() {
      option_ = "";
      optionLabel_ = "";
      values_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConfigOption();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConfigOption(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              option_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              optionLabel_ = s;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                values_ = new java.util.ArrayList<cc.arduino.cli.commands.Board.ConfigValue>();
                mutable_bitField0_ |= 0x00000001;
              }
              values_.add(
                  input.readMessage(cc.arduino.cli.commands.Board.ConfigValue.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          values_ = java.util.Collections.unmodifiableList(values_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_ConfigOption_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_ConfigOption_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Board.ConfigOption.class, cc.arduino.cli.commands.Board.ConfigOption.Builder.class);
    }

    public static final int OPTION_FIELD_NUMBER = 1;
    private volatile java.lang.Object option_;
    /**
     * <code>string option = 1;</code>
     */
    public java.lang.String getOption() {
      java.lang.Object ref = option_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        option_ = s;
        return s;
      }
    }
    /**
     * <code>string option = 1;</code>
     */
    public com.google.protobuf.ByteString
        getOptionBytes() {
      java.lang.Object ref = option_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        option_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPTION_LABEL_FIELD_NUMBER = 2;
    private volatile java.lang.Object optionLabel_;
    /**
     * <code>string option_label = 2;</code>
     */
    public java.lang.String getOptionLabel() {
      java.lang.Object ref = optionLabel_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        optionLabel_ = s;
        return s;
      }
    }
    /**
     * <code>string option_label = 2;</code>
     */
    public com.google.protobuf.ByteString
        getOptionLabelBytes() {
      java.lang.Object ref = optionLabel_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        optionLabel_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUES_FIELD_NUMBER = 3;
    private java.util.List<cc.arduino.cli.commands.Board.ConfigValue> values_;
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
     */
    public java.util.List<cc.arduino.cli.commands.Board.ConfigValue> getValuesList() {
      return values_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
     */
    public java.util.List<? extends cc.arduino.cli.commands.Board.ConfigValueOrBuilder> 
        getValuesOrBuilderList() {
      return values_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
     */
    public int getValuesCount() {
      return values_.size();
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
     */
    public cc.arduino.cli.commands.Board.ConfigValue getValues(int index) {
      return values_.get(index);
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
     */
    public cc.arduino.cli.commands.Board.ConfigValueOrBuilder getValuesOrBuilder(
        int index) {
      return values_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getOptionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, option_);
      }
      if (!getOptionLabelBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, optionLabel_);
      }
      for (int i = 0; i < values_.size(); i++) {
        output.writeMessage(3, values_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getOptionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, option_);
      }
      if (!getOptionLabelBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, optionLabel_);
      }
      for (int i = 0; i < values_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, values_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cc.arduino.cli.commands.Board.ConfigOption)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Board.ConfigOption other = (cc.arduino.cli.commands.Board.ConfigOption) obj;

      if (!getOption()
          .equals(other.getOption())) return false;
      if (!getOptionLabel()
          .equals(other.getOptionLabel())) return false;
      if (!getValuesList()
          .equals(other.getValuesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + OPTION_FIELD_NUMBER;
      hash = (53 * hash) + getOption().hashCode();
      hash = (37 * hash) + OPTION_LABEL_FIELD_NUMBER;
      hash = (53 * hash) + getOptionLabel().hashCode();
      if (getValuesCount() > 0) {
        hash = (37 * hash) + VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getValuesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Board.ConfigOption parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.ConfigOption parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.ConfigOption parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.ConfigOption parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.ConfigOption parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.ConfigOption parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.ConfigOption parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.ConfigOption parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.ConfigOption parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.ConfigOption parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.ConfigOption parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.ConfigOption parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cc.arduino.cli.commands.Board.ConfigOption prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cc.arduino.cli.commands.ConfigOption}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.ConfigOption)
        cc.arduino.cli.commands.Board.ConfigOptionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_ConfigOption_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_ConfigOption_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Board.ConfigOption.class, cc.arduino.cli.commands.Board.ConfigOption.Builder.class);
      }

      // Construct using cc.arduino.cli.commands.Board.ConfigOption.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getValuesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        option_ = "";

        optionLabel_ = "";

        if (valuesBuilder_ == null) {
          values_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          valuesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_ConfigOption_descriptor;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.ConfigOption getDefaultInstanceForType() {
        return cc.arduino.cli.commands.Board.ConfigOption.getDefaultInstance();
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.ConfigOption build() {
        cc.arduino.cli.commands.Board.ConfigOption result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.ConfigOption buildPartial() {
        cc.arduino.cli.commands.Board.ConfigOption result = new cc.arduino.cli.commands.Board.ConfigOption(this);
        int from_bitField0_ = bitField0_;
        result.option_ = option_;
        result.optionLabel_ = optionLabel_;
        if (valuesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            values_ = java.util.Collections.unmodifiableList(values_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.values_ = values_;
        } else {
          result.values_ = valuesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cc.arduino.cli.commands.Board.ConfigOption) {
          return mergeFrom((cc.arduino.cli.commands.Board.ConfigOption)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Board.ConfigOption other) {
        if (other == cc.arduino.cli.commands.Board.ConfigOption.getDefaultInstance()) return this;
        if (!other.getOption().isEmpty()) {
          option_ = other.option_;
          onChanged();
        }
        if (!other.getOptionLabel().isEmpty()) {
          optionLabel_ = other.optionLabel_;
          onChanged();
        }
        if (valuesBuilder_ == null) {
          if (!other.values_.isEmpty()) {
            if (values_.isEmpty()) {
              values_ = other.values_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureValuesIsMutable();
              values_.addAll(other.values_);
            }
            onChanged();
          }
        } else {
          if (!other.values_.isEmpty()) {
            if (valuesBuilder_.isEmpty()) {
              valuesBuilder_.dispose();
              valuesBuilder_ = null;
              values_ = other.values_;
              bitField0_ = (bitField0_ & ~0x00000001);
              valuesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getValuesFieldBuilder() : null;
            } else {
              valuesBuilder_.addAllMessages(other.values_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cc.arduino.cli.commands.Board.ConfigOption parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Board.ConfigOption) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object option_ = "";
      /**
       * <code>string option = 1;</code>
       */
      public java.lang.String getOption() {
        java.lang.Object ref = option_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          option_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string option = 1;</code>
       */
      public com.google.protobuf.ByteString
          getOptionBytes() {
        java.lang.Object ref = option_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          option_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string option = 1;</code>
       */
      public Builder setOption(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        option_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string option = 1;</code>
       */
      public Builder clearOption() {
        
        option_ = getDefaultInstance().getOption();
        onChanged();
        return this;
      }
      /**
       * <code>string option = 1;</code>
       */
      public Builder setOptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        option_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object optionLabel_ = "";
      /**
       * <code>string option_label = 2;</code>
       */
      public java.lang.String getOptionLabel() {
        java.lang.Object ref = optionLabel_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          optionLabel_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string option_label = 2;</code>
       */
      public com.google.protobuf.ByteString
          getOptionLabelBytes() {
        java.lang.Object ref = optionLabel_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          optionLabel_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string option_label = 2;</code>
       */
      public Builder setOptionLabel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        optionLabel_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string option_label = 2;</code>
       */
      public Builder clearOptionLabel() {
        
        optionLabel_ = getDefaultInstance().getOptionLabel();
        onChanged();
        return this;
      }
      /**
       * <code>string option_label = 2;</code>
       */
      public Builder setOptionLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        optionLabel_ = value;
        onChanged();
        return this;
      }

      private java.util.List<cc.arduino.cli.commands.Board.ConfigValue> values_ =
        java.util.Collections.emptyList();
      private void ensureValuesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          values_ = new java.util.ArrayList<cc.arduino.cli.commands.Board.ConfigValue>(values_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Board.ConfigValue, cc.arduino.cli.commands.Board.ConfigValue.Builder, cc.arduino.cli.commands.Board.ConfigValueOrBuilder> valuesBuilder_;

      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Board.ConfigValue> getValuesList() {
        if (valuesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(values_);
        } else {
          return valuesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public int getValuesCount() {
        if (valuesBuilder_ == null) {
          return values_.size();
        } else {
          return valuesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public cc.arduino.cli.commands.Board.ConfigValue getValues(int index) {
        if (valuesBuilder_ == null) {
          return values_.get(index);
        } else {
          return valuesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public Builder setValues(
          int index, cc.arduino.cli.commands.Board.ConfigValue value) {
        if (valuesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureValuesIsMutable();
          values_.set(index, value);
          onChanged();
        } else {
          valuesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public Builder setValues(
          int index, cc.arduino.cli.commands.Board.ConfigValue.Builder builderForValue) {
        if (valuesBuilder_ == null) {
          ensureValuesIsMutable();
          values_.set(index, builderForValue.build());
          onChanged();
        } else {
          valuesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public Builder addValues(cc.arduino.cli.commands.Board.ConfigValue value) {
        if (valuesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureValuesIsMutable();
          values_.add(value);
          onChanged();
        } else {
          valuesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public Builder addValues(
          int index, cc.arduino.cli.commands.Board.ConfigValue value) {
        if (valuesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureValuesIsMutable();
          values_.add(index, value);
          onChanged();
        } else {
          valuesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public Builder addValues(
          cc.arduino.cli.commands.Board.ConfigValue.Builder builderForValue) {
        if (valuesBuilder_ == null) {
          ensureValuesIsMutable();
          values_.add(builderForValue.build());
          onChanged();
        } else {
          valuesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public Builder addValues(
          int index, cc.arduino.cli.commands.Board.ConfigValue.Builder builderForValue) {
        if (valuesBuilder_ == null) {
          ensureValuesIsMutable();
          values_.add(index, builderForValue.build());
          onChanged();
        } else {
          valuesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public Builder addAllValues(
          java.lang.Iterable<? extends cc.arduino.cli.commands.Board.ConfigValue> values) {
        if (valuesBuilder_ == null) {
          ensureValuesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, values_);
          onChanged();
        } else {
          valuesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public Builder clearValues() {
        if (valuesBuilder_ == null) {
          values_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          valuesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public Builder removeValues(int index) {
        if (valuesBuilder_ == null) {
          ensureValuesIsMutable();
          values_.remove(index);
          onChanged();
        } else {
          valuesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public cc.arduino.cli.commands.Board.ConfigValue.Builder getValuesBuilder(
          int index) {
        return getValuesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public cc.arduino.cli.commands.Board.ConfigValueOrBuilder getValuesOrBuilder(
          int index) {
        if (valuesBuilder_ == null) {
          return values_.get(index);  } else {
          return valuesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public java.util.List<? extends cc.arduino.cli.commands.Board.ConfigValueOrBuilder> 
           getValuesOrBuilderList() {
        if (valuesBuilder_ != null) {
          return valuesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(values_);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public cc.arduino.cli.commands.Board.ConfigValue.Builder addValuesBuilder() {
        return getValuesFieldBuilder().addBuilder(
            cc.arduino.cli.commands.Board.ConfigValue.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public cc.arduino.cli.commands.Board.ConfigValue.Builder addValuesBuilder(
          int index) {
        return getValuesFieldBuilder().addBuilder(
            index, cc.arduino.cli.commands.Board.ConfigValue.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.ConfigValue values = 3;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Board.ConfigValue.Builder> 
           getValuesBuilderList() {
        return getValuesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Board.ConfigValue, cc.arduino.cli.commands.Board.ConfigValue.Builder, cc.arduino.cli.commands.Board.ConfigValueOrBuilder> 
          getValuesFieldBuilder() {
        if (valuesBuilder_ == null) {
          valuesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              cc.arduino.cli.commands.Board.ConfigValue, cc.arduino.cli.commands.Board.ConfigValue.Builder, cc.arduino.cli.commands.Board.ConfigValueOrBuilder>(
                  values_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          values_ = null;
        }
        return valuesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cc.arduino.cli.commands.ConfigOption)
    }

    // @@protoc_insertion_point(class_scope:cc.arduino.cli.commands.ConfigOption)
    private static final cc.arduino.cli.commands.Board.ConfigOption DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cc.arduino.cli.commands.Board.ConfigOption();
    }

    public static cc.arduino.cli.commands.Board.ConfigOption getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ConfigOption>
        PARSER = new com.google.protobuf.AbstractParser<ConfigOption>() {
      @java.lang.Override
      public ConfigOption parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ConfigOption(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ConfigOption> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ConfigOption> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cc.arduino.cli.commands.Board.ConfigOption getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConfigValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.ConfigValue)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string value = 1;</code>
     */
    java.lang.String getValue();
    /**
     * <code>string value = 1;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes();

    /**
     * <code>string value_label = 2;</code>
     */
    java.lang.String getValueLabel();
    /**
     * <code>string value_label = 2;</code>
     */
    com.google.protobuf.ByteString
        getValueLabelBytes();

    /**
     * <code>bool selected = 3;</code>
     */
    boolean getSelected();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.ConfigValue}
   */
  public  static final class ConfigValue extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.ConfigValue)
      ConfigValueOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConfigValue.newBuilder() to construct.
    private ConfigValue(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConfigValue() {
      value_ = "";
      valueLabel_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConfigValue();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConfigValue(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              value_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              valueLabel_ = s;
              break;
            }
            case 24: {

              selected_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_ConfigValue_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_ConfigValue_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Board.ConfigValue.class, cc.arduino.cli.commands.Board.ConfigValue.Builder.class);
    }

    public static final int VALUE_FIELD_NUMBER = 1;
    private volatile java.lang.Object value_;
    /**
     * <code>string value = 1;</code>
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        value_ = s;
        return s;
      }
    }
    /**
     * <code>string value = 1;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_LABEL_FIELD_NUMBER = 2;
    private volatile java.lang.Object valueLabel_;
    /**
     * <code>string value_label = 2;</code>
     */
    public java.lang.String getValueLabel() {
      java.lang.Object ref = valueLabel_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        valueLabel_ = s;
        return s;
      }
    }
    /**
     * <code>string value_label = 2;</code>
     */
    public com.google.protobuf.ByteString
        getValueLabelBytes() {
      java.lang.Object ref = valueLabel_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        valueLabel_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SELECTED_FIELD_NUMBER = 3;
    private boolean selected_;
    /**
     * <code>bool selected = 3;</code>
     */
    public boolean getSelected() {
      return selected_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getValueBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, value_);
      }
      if (!getValueLabelBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, valueLabel_);
      }
      if (selected_ != false) {
        output.writeBool(3, selected_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getValueBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, value_);
      }
      if (!getValueLabelBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, valueLabel_);
      }
      if (selected_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, selected_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cc.arduino.cli.commands.Board.ConfigValue)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Board.ConfigValue other = (cc.arduino.cli.commands.Board.ConfigValue) obj;

      if (!getValue()
          .equals(other.getValue())) return false;
      if (!getValueLabel()
          .equals(other.getValueLabel())) return false;
      if (getSelected()
          != other.getSelected()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + VALUE_FIELD_NUMBER;
      hash = (53 * hash) + getValue().hashCode();
      hash = (37 * hash) + VALUE_LABEL_FIELD_NUMBER;
      hash = (53 * hash) + getValueLabel().hashCode();
      hash = (37 * hash) + SELECTED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSelected());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Board.ConfigValue parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.ConfigValue parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.ConfigValue parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.ConfigValue parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.ConfigValue parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.ConfigValue parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.ConfigValue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.ConfigValue parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.ConfigValue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.ConfigValue parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.ConfigValue parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.ConfigValue parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cc.arduino.cli.commands.Board.ConfigValue prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cc.arduino.cli.commands.ConfigValue}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.ConfigValue)
        cc.arduino.cli.commands.Board.ConfigValueOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_ConfigValue_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_ConfigValue_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Board.ConfigValue.class, cc.arduino.cli.commands.Board.ConfigValue.Builder.class);
      }

      // Construct using cc.arduino.cli.commands.Board.ConfigValue.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        value_ = "";

        valueLabel_ = "";

        selected_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_ConfigValue_descriptor;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.ConfigValue getDefaultInstanceForType() {
        return cc.arduino.cli.commands.Board.ConfigValue.getDefaultInstance();
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.ConfigValue build() {
        cc.arduino.cli.commands.Board.ConfigValue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.ConfigValue buildPartial() {
        cc.arduino.cli.commands.Board.ConfigValue result = new cc.arduino.cli.commands.Board.ConfigValue(this);
        result.value_ = value_;
        result.valueLabel_ = valueLabel_;
        result.selected_ = selected_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cc.arduino.cli.commands.Board.ConfigValue) {
          return mergeFrom((cc.arduino.cli.commands.Board.ConfigValue)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Board.ConfigValue other) {
        if (other == cc.arduino.cli.commands.Board.ConfigValue.getDefaultInstance()) return this;
        if (!other.getValue().isEmpty()) {
          value_ = other.value_;
          onChanged();
        }
        if (!other.getValueLabel().isEmpty()) {
          valueLabel_ = other.valueLabel_;
          onChanged();
        }
        if (other.getSelected() != false) {
          setSelected(other.getSelected());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cc.arduino.cli.commands.Board.ConfigValue parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Board.ConfigValue) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object value_ = "";
      /**
       * <code>string value = 1;</code>
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string value = 1;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string value = 1;</code>
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string value = 1;</code>
       */
      public Builder clearValue() {
        
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>string value = 1;</code>
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        value_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object valueLabel_ = "";
      /**
       * <code>string value_label = 2;</code>
       */
      public java.lang.String getValueLabel() {
        java.lang.Object ref = valueLabel_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          valueLabel_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string value_label = 2;</code>
       */
      public com.google.protobuf.ByteString
          getValueLabelBytes() {
        java.lang.Object ref = valueLabel_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          valueLabel_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string value_label = 2;</code>
       */
      public Builder setValueLabel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        valueLabel_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string value_label = 2;</code>
       */
      public Builder clearValueLabel() {
        
        valueLabel_ = getDefaultInstance().getValueLabel();
        onChanged();
        return this;
      }
      /**
       * <code>string value_label = 2;</code>
       */
      public Builder setValueLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        valueLabel_ = value;
        onChanged();
        return this;
      }

      private boolean selected_ ;
      /**
       * <code>bool selected = 3;</code>
       */
      public boolean getSelected() {
        return selected_;
      }
      /**
       * <code>bool selected = 3;</code>
       */
      public Builder setSelected(boolean value) {
        
        selected_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool selected = 3;</code>
       */
      public Builder clearSelected() {
        
        selected_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cc.arduino.cli.commands.ConfigValue)
    }

    // @@protoc_insertion_point(class_scope:cc.arduino.cli.commands.ConfigValue)
    private static final cc.arduino.cli.commands.Board.ConfigValue DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cc.arduino.cli.commands.Board.ConfigValue();
    }

    public static cc.arduino.cli.commands.Board.ConfigValue getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ConfigValue>
        PARSER = new com.google.protobuf.AbstractParser<ConfigValue>() {
      @java.lang.Override
      public ConfigValue parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ConfigValue(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ConfigValue> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ConfigValue> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cc.arduino.cli.commands.Board.ConfigValue getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RequiredToolOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.RequiredTool)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <code>string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>string version = 2;</code>
     */
    java.lang.String getVersion();
    /**
     * <code>string version = 2;</code>
     */
    com.google.protobuf.ByteString
        getVersionBytes();

    /**
     * <code>string packager = 3;</code>
     */
    java.lang.String getPackager();
    /**
     * <code>string packager = 3;</code>
     */
    com.google.protobuf.ByteString
        getPackagerBytes();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.RequiredTool}
   */
  public  static final class RequiredTool extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.RequiredTool)
      RequiredToolOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RequiredTool.newBuilder() to construct.
    private RequiredTool(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RequiredTool() {
      name_ = "";
      version_ = "";
      packager_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new RequiredTool();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RequiredTool(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              version_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              packager_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_RequiredTool_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_RequiredTool_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Board.RequiredTool.class, cc.arduino.cli.commands.Board.RequiredTool.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 2;
    private volatile java.lang.Object version_;
    /**
     * <code>string version = 2;</code>
     */
    public java.lang.String getVersion() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     * <code>string version = 2;</code>
     */
    public com.google.protobuf.ByteString
        getVersionBytes() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PACKAGER_FIELD_NUMBER = 3;
    private volatile java.lang.Object packager_;
    /**
     * <code>string packager = 3;</code>
     */
    public java.lang.String getPackager() {
      java.lang.Object ref = packager_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        packager_ = s;
        return s;
      }
    }
    /**
     * <code>string packager = 3;</code>
     */
    public com.google.protobuf.ByteString
        getPackagerBytes() {
      java.lang.Object ref = packager_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        packager_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, version_);
      }
      if (!getPackagerBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, packager_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, version_);
      }
      if (!getPackagerBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, packager_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cc.arduino.cli.commands.Board.RequiredTool)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Board.RequiredTool other = (cc.arduino.cli.commands.Board.RequiredTool) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getVersion()
          .equals(other.getVersion())) return false;
      if (!getPackager()
          .equals(other.getPackager())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (37 * hash) + PACKAGER_FIELD_NUMBER;
      hash = (53 * hash) + getPackager().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Board.RequiredTool parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.RequiredTool parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.RequiredTool parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.RequiredTool parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.RequiredTool parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.RequiredTool parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.RequiredTool parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.RequiredTool parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.RequiredTool parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.RequiredTool parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.RequiredTool parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.RequiredTool parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cc.arduino.cli.commands.Board.RequiredTool prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cc.arduino.cli.commands.RequiredTool}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.RequiredTool)
        cc.arduino.cli.commands.Board.RequiredToolOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_RequiredTool_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_RequiredTool_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Board.RequiredTool.class, cc.arduino.cli.commands.Board.RequiredTool.Builder.class);
      }

      // Construct using cc.arduino.cli.commands.Board.RequiredTool.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        version_ = "";

        packager_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_RequiredTool_descriptor;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.RequiredTool getDefaultInstanceForType() {
        return cc.arduino.cli.commands.Board.RequiredTool.getDefaultInstance();
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.RequiredTool build() {
        cc.arduino.cli.commands.Board.RequiredTool result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.RequiredTool buildPartial() {
        cc.arduino.cli.commands.Board.RequiredTool result = new cc.arduino.cli.commands.Board.RequiredTool(this);
        result.name_ = name_;
        result.version_ = version_;
        result.packager_ = packager_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cc.arduino.cli.commands.Board.RequiredTool) {
          return mergeFrom((cc.arduino.cli.commands.Board.RequiredTool)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Board.RequiredTool other) {
        if (other == cc.arduino.cli.commands.Board.RequiredTool.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          onChanged();
        }
        if (!other.getPackager().isEmpty()) {
          packager_ = other.packager_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cc.arduino.cli.commands.Board.RequiredTool parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Board.RequiredTool) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object version_ = "";
      /**
       * <code>string version = 2;</code>
       */
      public java.lang.String getVersion() {
        java.lang.Object ref = version_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string version = 2;</code>
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        java.lang.Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string version = 2;</code>
       */
      public Builder setVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string version = 2;</code>
       */
      public Builder clearVersion() {
        
        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      /**
       * <code>string version = 2;</code>
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        version_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object packager_ = "";
      /**
       * <code>string packager = 3;</code>
       */
      public java.lang.String getPackager() {
        java.lang.Object ref = packager_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          packager_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string packager = 3;</code>
       */
      public com.google.protobuf.ByteString
          getPackagerBytes() {
        java.lang.Object ref = packager_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          packager_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string packager = 3;</code>
       */
      public Builder setPackager(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        packager_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string packager = 3;</code>
       */
      public Builder clearPackager() {
        
        packager_ = getDefaultInstance().getPackager();
        onChanged();
        return this;
      }
      /**
       * <code>string packager = 3;</code>
       */
      public Builder setPackagerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        packager_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cc.arduino.cli.commands.RequiredTool)
    }

    // @@protoc_insertion_point(class_scope:cc.arduino.cli.commands.RequiredTool)
    private static final cc.arduino.cli.commands.Board.RequiredTool DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cc.arduino.cli.commands.Board.RequiredTool();
    }

    public static cc.arduino.cli.commands.Board.RequiredTool getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RequiredTool>
        PARSER = new com.google.protobuf.AbstractParser<RequiredTool>() {
      @java.lang.Override
      public RequiredTool parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new RequiredTool(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<RequiredTool> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<RequiredTool> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cc.arduino.cli.commands.Board.RequiredTool getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BoardAttachReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.BoardAttachReq)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    boolean hasInstance();
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    cc.arduino.cli.commands.Common.Instance getInstance();
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    cc.arduino.cli.commands.Common.InstanceOrBuilder getInstanceOrBuilder();

    /**
     * <code>string board_uri = 2;</code>
     */
    java.lang.String getBoardUri();
    /**
     * <code>string board_uri = 2;</code>
     */
    com.google.protobuf.ByteString
        getBoardUriBytes();

    /**
     * <code>string sketch_path = 3;</code>
     */
    java.lang.String getSketchPath();
    /**
     * <code>string sketch_path = 3;</code>
     */
    com.google.protobuf.ByteString
        getSketchPathBytes();

    /**
     * <code>string search_timeout = 4;</code>
     */
    java.lang.String getSearchTimeout();
    /**
     * <code>string search_timeout = 4;</code>
     */
    com.google.protobuf.ByteString
        getSearchTimeoutBytes();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.BoardAttachReq}
   */
  public  static final class BoardAttachReq extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.BoardAttachReq)
      BoardAttachReqOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BoardAttachReq.newBuilder() to construct.
    private BoardAttachReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BoardAttachReq() {
      boardUri_ = "";
      sketchPath_ = "";
      searchTimeout_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BoardAttachReq();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BoardAttachReq(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              cc.arduino.cli.commands.Common.Instance.Builder subBuilder = null;
              if (instance_ != null) {
                subBuilder = instance_.toBuilder();
              }
              instance_ = input.readMessage(cc.arduino.cli.commands.Common.Instance.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(instance_);
                instance_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              boardUri_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              sketchPath_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              searchTimeout_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardAttachReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardAttachReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Board.BoardAttachReq.class, cc.arduino.cli.commands.Board.BoardAttachReq.Builder.class);
    }

    public static final int INSTANCE_FIELD_NUMBER = 1;
    private cc.arduino.cli.commands.Common.Instance instance_;
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    public boolean hasInstance() {
      return instance_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    public cc.arduino.cli.commands.Common.Instance getInstance() {
      return instance_ == null ? cc.arduino.cli.commands.Common.Instance.getDefaultInstance() : instance_;
    }
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    public cc.arduino.cli.commands.Common.InstanceOrBuilder getInstanceOrBuilder() {
      return getInstance();
    }

    public static final int BOARD_URI_FIELD_NUMBER = 2;
    private volatile java.lang.Object boardUri_;
    /**
     * <code>string board_uri = 2;</code>
     */
    public java.lang.String getBoardUri() {
      java.lang.Object ref = boardUri_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        boardUri_ = s;
        return s;
      }
    }
    /**
     * <code>string board_uri = 2;</code>
     */
    public com.google.protobuf.ByteString
        getBoardUriBytes() {
      java.lang.Object ref = boardUri_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        boardUri_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SKETCH_PATH_FIELD_NUMBER = 3;
    private volatile java.lang.Object sketchPath_;
    /**
     * <code>string sketch_path = 3;</code>
     */
    public java.lang.String getSketchPath() {
      java.lang.Object ref = sketchPath_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        sketchPath_ = s;
        return s;
      }
    }
    /**
     * <code>string sketch_path = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSketchPathBytes() {
      java.lang.Object ref = sketchPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sketchPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SEARCH_TIMEOUT_FIELD_NUMBER = 4;
    private volatile java.lang.Object searchTimeout_;
    /**
     * <code>string search_timeout = 4;</code>
     */
    public java.lang.String getSearchTimeout() {
      java.lang.Object ref = searchTimeout_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        searchTimeout_ = s;
        return s;
      }
    }
    /**
     * <code>string search_timeout = 4;</code>
     */
    public com.google.protobuf.ByteString
        getSearchTimeoutBytes() {
      java.lang.Object ref = searchTimeout_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        searchTimeout_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (instance_ != null) {
        output.writeMessage(1, getInstance());
      }
      if (!getBoardUriBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, boardUri_);
      }
      if (!getSketchPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, sketchPath_);
      }
      if (!getSearchTimeoutBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, searchTimeout_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (instance_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getInstance());
      }
      if (!getBoardUriBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, boardUri_);
      }
      if (!getSketchPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, sketchPath_);
      }
      if (!getSearchTimeoutBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, searchTimeout_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cc.arduino.cli.commands.Board.BoardAttachReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Board.BoardAttachReq other = (cc.arduino.cli.commands.Board.BoardAttachReq) obj;

      if (hasInstance() != other.hasInstance()) return false;
      if (hasInstance()) {
        if (!getInstance()
            .equals(other.getInstance())) return false;
      }
      if (!getBoardUri()
          .equals(other.getBoardUri())) return false;
      if (!getSketchPath()
          .equals(other.getSketchPath())) return false;
      if (!getSearchTimeout()
          .equals(other.getSearchTimeout())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasInstance()) {
        hash = (37 * hash) + INSTANCE_FIELD_NUMBER;
        hash = (53 * hash) + getInstance().hashCode();
      }
      hash = (37 * hash) + BOARD_URI_FIELD_NUMBER;
      hash = (53 * hash) + getBoardUri().hashCode();
      hash = (37 * hash) + SKETCH_PATH_FIELD_NUMBER;
      hash = (53 * hash) + getSketchPath().hashCode();
      hash = (37 * hash) + SEARCH_TIMEOUT_FIELD_NUMBER;
      hash = (53 * hash) + getSearchTimeout().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Board.BoardAttachReq parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachReq parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachReq parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachReq parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachReq parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachReq parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cc.arduino.cli.commands.Board.BoardAttachReq prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cc.arduino.cli.commands.BoardAttachReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.BoardAttachReq)
        cc.arduino.cli.commands.Board.BoardAttachReqOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardAttachReq_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardAttachReq_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Board.BoardAttachReq.class, cc.arduino.cli.commands.Board.BoardAttachReq.Builder.class);
      }

      // Construct using cc.arduino.cli.commands.Board.BoardAttachReq.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (instanceBuilder_ == null) {
          instance_ = null;
        } else {
          instance_ = null;
          instanceBuilder_ = null;
        }
        boardUri_ = "";

        sketchPath_ = "";

        searchTimeout_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardAttachReq_descriptor;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardAttachReq getDefaultInstanceForType() {
        return cc.arduino.cli.commands.Board.BoardAttachReq.getDefaultInstance();
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardAttachReq build() {
        cc.arduino.cli.commands.Board.BoardAttachReq result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardAttachReq buildPartial() {
        cc.arduino.cli.commands.Board.BoardAttachReq result = new cc.arduino.cli.commands.Board.BoardAttachReq(this);
        if (instanceBuilder_ == null) {
          result.instance_ = instance_;
        } else {
          result.instance_ = instanceBuilder_.build();
        }
        result.boardUri_ = boardUri_;
        result.sketchPath_ = sketchPath_;
        result.searchTimeout_ = searchTimeout_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cc.arduino.cli.commands.Board.BoardAttachReq) {
          return mergeFrom((cc.arduino.cli.commands.Board.BoardAttachReq)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Board.BoardAttachReq other) {
        if (other == cc.arduino.cli.commands.Board.BoardAttachReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (!other.getBoardUri().isEmpty()) {
          boardUri_ = other.boardUri_;
          onChanged();
        }
        if (!other.getSketchPath().isEmpty()) {
          sketchPath_ = other.sketchPath_;
          onChanged();
        }
        if (!other.getSearchTimeout().isEmpty()) {
          searchTimeout_ = other.searchTimeout_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cc.arduino.cli.commands.Board.BoardAttachReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Board.BoardAttachReq) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private cc.arduino.cli.commands.Common.Instance instance_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.Instance, cc.arduino.cli.commands.Common.Instance.Builder, cc.arduino.cli.commands.Common.InstanceOrBuilder> instanceBuilder_;
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public boolean hasInstance() {
        return instanceBuilder_ != null || instance_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public cc.arduino.cli.commands.Common.Instance getInstance() {
        if (instanceBuilder_ == null) {
          return instance_ == null ? cc.arduino.cli.commands.Common.Instance.getDefaultInstance() : instance_;
        } else {
          return instanceBuilder_.getMessage();
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder setInstance(cc.arduino.cli.commands.Common.Instance value) {
        if (instanceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          instance_ = value;
          onChanged();
        } else {
          instanceBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder setInstance(
          cc.arduino.cli.commands.Common.Instance.Builder builderForValue) {
        if (instanceBuilder_ == null) {
          instance_ = builderForValue.build();
          onChanged();
        } else {
          instanceBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder mergeInstance(cc.arduino.cli.commands.Common.Instance value) {
        if (instanceBuilder_ == null) {
          if (instance_ != null) {
            instance_ =
              cc.arduino.cli.commands.Common.Instance.newBuilder(instance_).mergeFrom(value).buildPartial();
          } else {
            instance_ = value;
          }
          onChanged();
        } else {
          instanceBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder clearInstance() {
        if (instanceBuilder_ == null) {
          instance_ = null;
          onChanged();
        } else {
          instance_ = null;
          instanceBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public cc.arduino.cli.commands.Common.Instance.Builder getInstanceBuilder() {
        
        onChanged();
        return getInstanceFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public cc.arduino.cli.commands.Common.InstanceOrBuilder getInstanceOrBuilder() {
        if (instanceBuilder_ != null) {
          return instanceBuilder_.getMessageOrBuilder();
        } else {
          return instance_ == null ?
              cc.arduino.cli.commands.Common.Instance.getDefaultInstance() : instance_;
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.Instance, cc.arduino.cli.commands.Common.Instance.Builder, cc.arduino.cli.commands.Common.InstanceOrBuilder> 
          getInstanceFieldBuilder() {
        if (instanceBuilder_ == null) {
          instanceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cc.arduino.cli.commands.Common.Instance, cc.arduino.cli.commands.Common.Instance.Builder, cc.arduino.cli.commands.Common.InstanceOrBuilder>(
                  getInstance(),
                  getParentForChildren(),
                  isClean());
          instance_ = null;
        }
        return instanceBuilder_;
      }

      private java.lang.Object boardUri_ = "";
      /**
       * <code>string board_uri = 2;</code>
       */
      public java.lang.String getBoardUri() {
        java.lang.Object ref = boardUri_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          boardUri_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string board_uri = 2;</code>
       */
      public com.google.protobuf.ByteString
          getBoardUriBytes() {
        java.lang.Object ref = boardUri_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          boardUri_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string board_uri = 2;</code>
       */
      public Builder setBoardUri(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        boardUri_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string board_uri = 2;</code>
       */
      public Builder clearBoardUri() {
        
        boardUri_ = getDefaultInstance().getBoardUri();
        onChanged();
        return this;
      }
      /**
       * <code>string board_uri = 2;</code>
       */
      public Builder setBoardUriBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        boardUri_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sketchPath_ = "";
      /**
       * <code>string sketch_path = 3;</code>
       */
      public java.lang.String getSketchPath() {
        java.lang.Object ref = sketchPath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sketchPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string sketch_path = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSketchPathBytes() {
        java.lang.Object ref = sketchPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sketchPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string sketch_path = 3;</code>
       */
      public Builder setSketchPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sketchPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string sketch_path = 3;</code>
       */
      public Builder clearSketchPath() {
        
        sketchPath_ = getDefaultInstance().getSketchPath();
        onChanged();
        return this;
      }
      /**
       * <code>string sketch_path = 3;</code>
       */
      public Builder setSketchPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sketchPath_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object searchTimeout_ = "";
      /**
       * <code>string search_timeout = 4;</code>
       */
      public java.lang.String getSearchTimeout() {
        java.lang.Object ref = searchTimeout_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          searchTimeout_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string search_timeout = 4;</code>
       */
      public com.google.protobuf.ByteString
          getSearchTimeoutBytes() {
        java.lang.Object ref = searchTimeout_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          searchTimeout_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string search_timeout = 4;</code>
       */
      public Builder setSearchTimeout(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        searchTimeout_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string search_timeout = 4;</code>
       */
      public Builder clearSearchTimeout() {
        
        searchTimeout_ = getDefaultInstance().getSearchTimeout();
        onChanged();
        return this;
      }
      /**
       * <code>string search_timeout = 4;</code>
       */
      public Builder setSearchTimeoutBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        searchTimeout_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cc.arduino.cli.commands.BoardAttachReq)
    }

    // @@protoc_insertion_point(class_scope:cc.arduino.cli.commands.BoardAttachReq)
    private static final cc.arduino.cli.commands.Board.BoardAttachReq DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cc.arduino.cli.commands.Board.BoardAttachReq();
    }

    public static cc.arduino.cli.commands.Board.BoardAttachReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BoardAttachReq>
        PARSER = new com.google.protobuf.AbstractParser<BoardAttachReq>() {
      @java.lang.Override
      public BoardAttachReq parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BoardAttachReq(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BoardAttachReq> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BoardAttachReq> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cc.arduino.cli.commands.Board.BoardAttachReq getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BoardAttachRespOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.BoardAttachResp)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
     */
    boolean hasTaskProgress();
    /**
     * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
     */
    cc.arduino.cli.commands.Common.TaskProgress getTaskProgress();
    /**
     * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
     */
    cc.arduino.cli.commands.Common.TaskProgressOrBuilder getTaskProgressOrBuilder();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.BoardAttachResp}
   */
  public  static final class BoardAttachResp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.BoardAttachResp)
      BoardAttachRespOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BoardAttachResp.newBuilder() to construct.
    private BoardAttachResp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BoardAttachResp() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BoardAttachResp();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BoardAttachResp(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              cc.arduino.cli.commands.Common.TaskProgress.Builder subBuilder = null;
              if (taskProgress_ != null) {
                subBuilder = taskProgress_.toBuilder();
              }
              taskProgress_ = input.readMessage(cc.arduino.cli.commands.Common.TaskProgress.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(taskProgress_);
                taskProgress_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardAttachResp_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardAttachResp_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Board.BoardAttachResp.class, cc.arduino.cli.commands.Board.BoardAttachResp.Builder.class);
    }

    public static final int TASK_PROGRESS_FIELD_NUMBER = 1;
    private cc.arduino.cli.commands.Common.TaskProgress taskProgress_;
    /**
     * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
     */
    public boolean hasTaskProgress() {
      return taskProgress_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
     */
    public cc.arduino.cli.commands.Common.TaskProgress getTaskProgress() {
      return taskProgress_ == null ? cc.arduino.cli.commands.Common.TaskProgress.getDefaultInstance() : taskProgress_;
    }
    /**
     * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
     */
    public cc.arduino.cli.commands.Common.TaskProgressOrBuilder getTaskProgressOrBuilder() {
      return getTaskProgress();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (taskProgress_ != null) {
        output.writeMessage(1, getTaskProgress());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (taskProgress_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTaskProgress());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cc.arduino.cli.commands.Board.BoardAttachResp)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Board.BoardAttachResp other = (cc.arduino.cli.commands.Board.BoardAttachResp) obj;

      if (hasTaskProgress() != other.hasTaskProgress()) return false;
      if (hasTaskProgress()) {
        if (!getTaskProgress()
            .equals(other.getTaskProgress())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTaskProgress()) {
        hash = (37 * hash) + TASK_PROGRESS_FIELD_NUMBER;
        hash = (53 * hash) + getTaskProgress().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Board.BoardAttachResp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachResp parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachResp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachResp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachResp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachResp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachResp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachResp parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachResp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachResp parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachResp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardAttachResp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cc.arduino.cli.commands.Board.BoardAttachResp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cc.arduino.cli.commands.BoardAttachResp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.BoardAttachResp)
        cc.arduino.cli.commands.Board.BoardAttachRespOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardAttachResp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardAttachResp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Board.BoardAttachResp.class, cc.arduino.cli.commands.Board.BoardAttachResp.Builder.class);
      }

      // Construct using cc.arduino.cli.commands.Board.BoardAttachResp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (taskProgressBuilder_ == null) {
          taskProgress_ = null;
        } else {
          taskProgress_ = null;
          taskProgressBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardAttachResp_descriptor;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardAttachResp getDefaultInstanceForType() {
        return cc.arduino.cli.commands.Board.BoardAttachResp.getDefaultInstance();
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardAttachResp build() {
        cc.arduino.cli.commands.Board.BoardAttachResp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardAttachResp buildPartial() {
        cc.arduino.cli.commands.Board.BoardAttachResp result = new cc.arduino.cli.commands.Board.BoardAttachResp(this);
        if (taskProgressBuilder_ == null) {
          result.taskProgress_ = taskProgress_;
        } else {
          result.taskProgress_ = taskProgressBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cc.arduino.cli.commands.Board.BoardAttachResp) {
          return mergeFrom((cc.arduino.cli.commands.Board.BoardAttachResp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Board.BoardAttachResp other) {
        if (other == cc.arduino.cli.commands.Board.BoardAttachResp.getDefaultInstance()) return this;
        if (other.hasTaskProgress()) {
          mergeTaskProgress(other.getTaskProgress());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cc.arduino.cli.commands.Board.BoardAttachResp parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Board.BoardAttachResp) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private cc.arduino.cli.commands.Common.TaskProgress taskProgress_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.TaskProgress, cc.arduino.cli.commands.Common.TaskProgress.Builder, cc.arduino.cli.commands.Common.TaskProgressOrBuilder> taskProgressBuilder_;
      /**
       * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
       */
      public boolean hasTaskProgress() {
        return taskProgressBuilder_ != null || taskProgress_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
       */
      public cc.arduino.cli.commands.Common.TaskProgress getTaskProgress() {
        if (taskProgressBuilder_ == null) {
          return taskProgress_ == null ? cc.arduino.cli.commands.Common.TaskProgress.getDefaultInstance() : taskProgress_;
        } else {
          return taskProgressBuilder_.getMessage();
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
       */
      public Builder setTaskProgress(cc.arduino.cli.commands.Common.TaskProgress value) {
        if (taskProgressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          taskProgress_ = value;
          onChanged();
        } else {
          taskProgressBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
       */
      public Builder setTaskProgress(
          cc.arduino.cli.commands.Common.TaskProgress.Builder builderForValue) {
        if (taskProgressBuilder_ == null) {
          taskProgress_ = builderForValue.build();
          onChanged();
        } else {
          taskProgressBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
       */
      public Builder mergeTaskProgress(cc.arduino.cli.commands.Common.TaskProgress value) {
        if (taskProgressBuilder_ == null) {
          if (taskProgress_ != null) {
            taskProgress_ =
              cc.arduino.cli.commands.Common.TaskProgress.newBuilder(taskProgress_).mergeFrom(value).buildPartial();
          } else {
            taskProgress_ = value;
          }
          onChanged();
        } else {
          taskProgressBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
       */
      public Builder clearTaskProgress() {
        if (taskProgressBuilder_ == null) {
          taskProgress_ = null;
          onChanged();
        } else {
          taskProgress_ = null;
          taskProgressBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
       */
      public cc.arduino.cli.commands.Common.TaskProgress.Builder getTaskProgressBuilder() {
        
        onChanged();
        return getTaskProgressFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
       */
      public cc.arduino.cli.commands.Common.TaskProgressOrBuilder getTaskProgressOrBuilder() {
        if (taskProgressBuilder_ != null) {
          return taskProgressBuilder_.getMessageOrBuilder();
        } else {
          return taskProgress_ == null ?
              cc.arduino.cli.commands.Common.TaskProgress.getDefaultInstance() : taskProgress_;
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.TaskProgress, cc.arduino.cli.commands.Common.TaskProgress.Builder, cc.arduino.cli.commands.Common.TaskProgressOrBuilder> 
          getTaskProgressFieldBuilder() {
        if (taskProgressBuilder_ == null) {
          taskProgressBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cc.arduino.cli.commands.Common.TaskProgress, cc.arduino.cli.commands.Common.TaskProgress.Builder, cc.arduino.cli.commands.Common.TaskProgressOrBuilder>(
                  getTaskProgress(),
                  getParentForChildren(),
                  isClean());
          taskProgress_ = null;
        }
        return taskProgressBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cc.arduino.cli.commands.BoardAttachResp)
    }

    // @@protoc_insertion_point(class_scope:cc.arduino.cli.commands.BoardAttachResp)
    private static final cc.arduino.cli.commands.Board.BoardAttachResp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cc.arduino.cli.commands.Board.BoardAttachResp();
    }

    public static cc.arduino.cli.commands.Board.BoardAttachResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BoardAttachResp>
        PARSER = new com.google.protobuf.AbstractParser<BoardAttachResp>() {
      @java.lang.Override
      public BoardAttachResp parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BoardAttachResp(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BoardAttachResp> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BoardAttachResp> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cc.arduino.cli.commands.Board.BoardAttachResp getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BoardListReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.BoardListReq)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    boolean hasInstance();
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    cc.arduino.cli.commands.Common.Instance getInstance();
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    cc.arduino.cli.commands.Common.InstanceOrBuilder getInstanceOrBuilder();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.BoardListReq}
   */
  public  static final class BoardListReq extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.BoardListReq)
      BoardListReqOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BoardListReq.newBuilder() to construct.
    private BoardListReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BoardListReq() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BoardListReq();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BoardListReq(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              cc.arduino.cli.commands.Common.Instance.Builder subBuilder = null;
              if (instance_ != null) {
                subBuilder = instance_.toBuilder();
              }
              instance_ = input.readMessage(cc.arduino.cli.commands.Common.Instance.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(instance_);
                instance_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Board.BoardListReq.class, cc.arduino.cli.commands.Board.BoardListReq.Builder.class);
    }

    public static final int INSTANCE_FIELD_NUMBER = 1;
    private cc.arduino.cli.commands.Common.Instance instance_;
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    public boolean hasInstance() {
      return instance_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    public cc.arduino.cli.commands.Common.Instance getInstance() {
      return instance_ == null ? cc.arduino.cli.commands.Common.Instance.getDefaultInstance() : instance_;
    }
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    public cc.arduino.cli.commands.Common.InstanceOrBuilder getInstanceOrBuilder() {
      return getInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (instance_ != null) {
        output.writeMessage(1, getInstance());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (instance_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getInstance());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cc.arduino.cli.commands.Board.BoardListReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Board.BoardListReq other = (cc.arduino.cli.commands.Board.BoardListReq) obj;

      if (hasInstance() != other.hasInstance()) return false;
      if (hasInstance()) {
        if (!getInstance()
            .equals(other.getInstance())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasInstance()) {
        hash = (37 * hash) + INSTANCE_FIELD_NUMBER;
        hash = (53 * hash) + getInstance().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Board.BoardListReq parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListReq parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListReq parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListReq parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListReq parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListReq parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cc.arduino.cli.commands.Board.BoardListReq prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cc.arduino.cli.commands.BoardListReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.BoardListReq)
        cc.arduino.cli.commands.Board.BoardListReqOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListReq_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListReq_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Board.BoardListReq.class, cc.arduino.cli.commands.Board.BoardListReq.Builder.class);
      }

      // Construct using cc.arduino.cli.commands.Board.BoardListReq.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (instanceBuilder_ == null) {
          instance_ = null;
        } else {
          instance_ = null;
          instanceBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListReq_descriptor;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListReq getDefaultInstanceForType() {
        return cc.arduino.cli.commands.Board.BoardListReq.getDefaultInstance();
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListReq build() {
        cc.arduino.cli.commands.Board.BoardListReq result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListReq buildPartial() {
        cc.arduino.cli.commands.Board.BoardListReq result = new cc.arduino.cli.commands.Board.BoardListReq(this);
        if (instanceBuilder_ == null) {
          result.instance_ = instance_;
        } else {
          result.instance_ = instanceBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cc.arduino.cli.commands.Board.BoardListReq) {
          return mergeFrom((cc.arduino.cli.commands.Board.BoardListReq)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Board.BoardListReq other) {
        if (other == cc.arduino.cli.commands.Board.BoardListReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cc.arduino.cli.commands.Board.BoardListReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Board.BoardListReq) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private cc.arduino.cli.commands.Common.Instance instance_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.Instance, cc.arduino.cli.commands.Common.Instance.Builder, cc.arduino.cli.commands.Common.InstanceOrBuilder> instanceBuilder_;
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public boolean hasInstance() {
        return instanceBuilder_ != null || instance_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public cc.arduino.cli.commands.Common.Instance getInstance() {
        if (instanceBuilder_ == null) {
          return instance_ == null ? cc.arduino.cli.commands.Common.Instance.getDefaultInstance() : instance_;
        } else {
          return instanceBuilder_.getMessage();
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder setInstance(cc.arduino.cli.commands.Common.Instance value) {
        if (instanceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          instance_ = value;
          onChanged();
        } else {
          instanceBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder setInstance(
          cc.arduino.cli.commands.Common.Instance.Builder builderForValue) {
        if (instanceBuilder_ == null) {
          instance_ = builderForValue.build();
          onChanged();
        } else {
          instanceBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder mergeInstance(cc.arduino.cli.commands.Common.Instance value) {
        if (instanceBuilder_ == null) {
          if (instance_ != null) {
            instance_ =
              cc.arduino.cli.commands.Common.Instance.newBuilder(instance_).mergeFrom(value).buildPartial();
          } else {
            instance_ = value;
          }
          onChanged();
        } else {
          instanceBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder clearInstance() {
        if (instanceBuilder_ == null) {
          instance_ = null;
          onChanged();
        } else {
          instance_ = null;
          instanceBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public cc.arduino.cli.commands.Common.Instance.Builder getInstanceBuilder() {
        
        onChanged();
        return getInstanceFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public cc.arduino.cli.commands.Common.InstanceOrBuilder getInstanceOrBuilder() {
        if (instanceBuilder_ != null) {
          return instanceBuilder_.getMessageOrBuilder();
        } else {
          return instance_ == null ?
              cc.arduino.cli.commands.Common.Instance.getDefaultInstance() : instance_;
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.Instance, cc.arduino.cli.commands.Common.Instance.Builder, cc.arduino.cli.commands.Common.InstanceOrBuilder> 
          getInstanceFieldBuilder() {
        if (instanceBuilder_ == null) {
          instanceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cc.arduino.cli.commands.Common.Instance, cc.arduino.cli.commands.Common.Instance.Builder, cc.arduino.cli.commands.Common.InstanceOrBuilder>(
                  getInstance(),
                  getParentForChildren(),
                  isClean());
          instance_ = null;
        }
        return instanceBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cc.arduino.cli.commands.BoardListReq)
    }

    // @@protoc_insertion_point(class_scope:cc.arduino.cli.commands.BoardListReq)
    private static final cc.arduino.cli.commands.Board.BoardListReq DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cc.arduino.cli.commands.Board.BoardListReq();
    }

    public static cc.arduino.cli.commands.Board.BoardListReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BoardListReq>
        PARSER = new com.google.protobuf.AbstractParser<BoardListReq>() {
      @java.lang.Override
      public BoardListReq parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BoardListReq(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BoardListReq> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BoardListReq> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cc.arduino.cli.commands.Board.BoardListReq getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BoardListRespOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.BoardListResp)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
     */
    java.util.List<cc.arduino.cli.commands.Board.DetectedPort> 
        getPortsList();
    /**
     * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
     */
    cc.arduino.cli.commands.Board.DetectedPort getPorts(int index);
    /**
     * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
     */
    int getPortsCount();
    /**
     * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
     */
    java.util.List<? extends cc.arduino.cli.commands.Board.DetectedPortOrBuilder> 
        getPortsOrBuilderList();
    /**
     * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
     */
    cc.arduino.cli.commands.Board.DetectedPortOrBuilder getPortsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.BoardListResp}
   */
  public  static final class BoardListResp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.BoardListResp)
      BoardListRespOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BoardListResp.newBuilder() to construct.
    private BoardListResp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BoardListResp() {
      ports_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BoardListResp();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BoardListResp(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                ports_ = new java.util.ArrayList<cc.arduino.cli.commands.Board.DetectedPort>();
                mutable_bitField0_ |= 0x00000001;
              }
              ports_.add(
                  input.readMessage(cc.arduino.cli.commands.Board.DetectedPort.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          ports_ = java.util.Collections.unmodifiableList(ports_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListResp_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListResp_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Board.BoardListResp.class, cc.arduino.cli.commands.Board.BoardListResp.Builder.class);
    }

    public static final int PORTS_FIELD_NUMBER = 1;
    private java.util.List<cc.arduino.cli.commands.Board.DetectedPort> ports_;
    /**
     * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
     */
    public java.util.List<cc.arduino.cli.commands.Board.DetectedPort> getPortsList() {
      return ports_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
     */
    public java.util.List<? extends cc.arduino.cli.commands.Board.DetectedPortOrBuilder> 
        getPortsOrBuilderList() {
      return ports_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
     */
    public int getPortsCount() {
      return ports_.size();
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
     */
    public cc.arduino.cli.commands.Board.DetectedPort getPorts(int index) {
      return ports_.get(index);
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
     */
    public cc.arduino.cli.commands.Board.DetectedPortOrBuilder getPortsOrBuilder(
        int index) {
      return ports_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < ports_.size(); i++) {
        output.writeMessage(1, ports_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < ports_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, ports_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cc.arduino.cli.commands.Board.BoardListResp)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Board.BoardListResp other = (cc.arduino.cli.commands.Board.BoardListResp) obj;

      if (!getPortsList()
          .equals(other.getPortsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getPortsCount() > 0) {
        hash = (37 * hash) + PORTS_FIELD_NUMBER;
        hash = (53 * hash) + getPortsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Board.BoardListResp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListResp parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListResp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListResp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListResp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListResp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListResp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListResp parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListResp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListResp parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListResp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListResp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cc.arduino.cli.commands.Board.BoardListResp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cc.arduino.cli.commands.BoardListResp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.BoardListResp)
        cc.arduino.cli.commands.Board.BoardListRespOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListResp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListResp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Board.BoardListResp.class, cc.arduino.cli.commands.Board.BoardListResp.Builder.class);
      }

      // Construct using cc.arduino.cli.commands.Board.BoardListResp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPortsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (portsBuilder_ == null) {
          ports_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          portsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListResp_descriptor;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListResp getDefaultInstanceForType() {
        return cc.arduino.cli.commands.Board.BoardListResp.getDefaultInstance();
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListResp build() {
        cc.arduino.cli.commands.Board.BoardListResp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListResp buildPartial() {
        cc.arduino.cli.commands.Board.BoardListResp result = new cc.arduino.cli.commands.Board.BoardListResp(this);
        int from_bitField0_ = bitField0_;
        if (portsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            ports_ = java.util.Collections.unmodifiableList(ports_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.ports_ = ports_;
        } else {
          result.ports_ = portsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cc.arduino.cli.commands.Board.BoardListResp) {
          return mergeFrom((cc.arduino.cli.commands.Board.BoardListResp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Board.BoardListResp other) {
        if (other == cc.arduino.cli.commands.Board.BoardListResp.getDefaultInstance()) return this;
        if (portsBuilder_ == null) {
          if (!other.ports_.isEmpty()) {
            if (ports_.isEmpty()) {
              ports_ = other.ports_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePortsIsMutable();
              ports_.addAll(other.ports_);
            }
            onChanged();
          }
        } else {
          if (!other.ports_.isEmpty()) {
            if (portsBuilder_.isEmpty()) {
              portsBuilder_.dispose();
              portsBuilder_ = null;
              ports_ = other.ports_;
              bitField0_ = (bitField0_ & ~0x00000001);
              portsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPortsFieldBuilder() : null;
            } else {
              portsBuilder_.addAllMessages(other.ports_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cc.arduino.cli.commands.Board.BoardListResp parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Board.BoardListResp) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<cc.arduino.cli.commands.Board.DetectedPort> ports_ =
        java.util.Collections.emptyList();
      private void ensurePortsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          ports_ = new java.util.ArrayList<cc.arduino.cli.commands.Board.DetectedPort>(ports_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Board.DetectedPort, cc.arduino.cli.commands.Board.DetectedPort.Builder, cc.arduino.cli.commands.Board.DetectedPortOrBuilder> portsBuilder_;

      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Board.DetectedPort> getPortsList() {
        if (portsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(ports_);
        } else {
          return portsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public int getPortsCount() {
        if (portsBuilder_ == null) {
          return ports_.size();
        } else {
          return portsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public cc.arduino.cli.commands.Board.DetectedPort getPorts(int index) {
        if (portsBuilder_ == null) {
          return ports_.get(index);
        } else {
          return portsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public Builder setPorts(
          int index, cc.arduino.cli.commands.Board.DetectedPort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.set(index, value);
          onChanged();
        } else {
          portsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public Builder setPorts(
          int index, cc.arduino.cli.commands.Board.DetectedPort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.set(index, builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public Builder addPorts(cc.arduino.cli.commands.Board.DetectedPort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.add(value);
          onChanged();
        } else {
          portsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public Builder addPorts(
          int index, cc.arduino.cli.commands.Board.DetectedPort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.add(index, value);
          onChanged();
        } else {
          portsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public Builder addPorts(
          cc.arduino.cli.commands.Board.DetectedPort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.add(builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public Builder addPorts(
          int index, cc.arduino.cli.commands.Board.DetectedPort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.add(index, builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public Builder addAllPorts(
          java.lang.Iterable<? extends cc.arduino.cli.commands.Board.DetectedPort> values) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, ports_);
          onChanged();
        } else {
          portsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public Builder clearPorts() {
        if (portsBuilder_ == null) {
          ports_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          portsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public Builder removePorts(int index) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.remove(index);
          onChanged();
        } else {
          portsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public cc.arduino.cli.commands.Board.DetectedPort.Builder getPortsBuilder(
          int index) {
        return getPortsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public cc.arduino.cli.commands.Board.DetectedPortOrBuilder getPortsOrBuilder(
          int index) {
        if (portsBuilder_ == null) {
          return ports_.get(index);  } else {
          return portsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public java.util.List<? extends cc.arduino.cli.commands.Board.DetectedPortOrBuilder> 
           getPortsOrBuilderList() {
        if (portsBuilder_ != null) {
          return portsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(ports_);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public cc.arduino.cli.commands.Board.DetectedPort.Builder addPortsBuilder() {
        return getPortsFieldBuilder().addBuilder(
            cc.arduino.cli.commands.Board.DetectedPort.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public cc.arduino.cli.commands.Board.DetectedPort.Builder addPortsBuilder(
          int index) {
        return getPortsFieldBuilder().addBuilder(
            index, cc.arduino.cli.commands.Board.DetectedPort.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.DetectedPort ports = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Board.DetectedPort.Builder> 
           getPortsBuilderList() {
        return getPortsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Board.DetectedPort, cc.arduino.cli.commands.Board.DetectedPort.Builder, cc.arduino.cli.commands.Board.DetectedPortOrBuilder> 
          getPortsFieldBuilder() {
        if (portsBuilder_ == null) {
          portsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              cc.arduino.cli.commands.Board.DetectedPort, cc.arduino.cli.commands.Board.DetectedPort.Builder, cc.arduino.cli.commands.Board.DetectedPortOrBuilder>(
                  ports_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          ports_ = null;
        }
        return portsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cc.arduino.cli.commands.BoardListResp)
    }

    // @@protoc_insertion_point(class_scope:cc.arduino.cli.commands.BoardListResp)
    private static final cc.arduino.cli.commands.Board.BoardListResp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cc.arduino.cli.commands.Board.BoardListResp();
    }

    public static cc.arduino.cli.commands.Board.BoardListResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BoardListResp>
        PARSER = new com.google.protobuf.AbstractParser<BoardListResp>() {
      @java.lang.Override
      public BoardListResp parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BoardListResp(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BoardListResp> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BoardListResp> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cc.arduino.cli.commands.Board.BoardListResp getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DetectedPortOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.DetectedPort)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string address = 1;</code>
     */
    java.lang.String getAddress();
    /**
     * <code>string address = 1;</code>
     */
    com.google.protobuf.ByteString
        getAddressBytes();

    /**
     * <code>string protocol = 2;</code>
     */
    java.lang.String getProtocol();
    /**
     * <code>string protocol = 2;</code>
     */
    com.google.protobuf.ByteString
        getProtocolBytes();

    /**
     * <code>string protocol_label = 3;</code>
     */
    java.lang.String getProtocolLabel();
    /**
     * <code>string protocol_label = 3;</code>
     */
    com.google.protobuf.ByteString
        getProtocolLabelBytes();

    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
     */
    java.util.List<cc.arduino.cli.commands.Board.BoardListItem> 
        getBoardsList();
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
     */
    cc.arduino.cli.commands.Board.BoardListItem getBoards(int index);
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
     */
    int getBoardsCount();
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
     */
    java.util.List<? extends cc.arduino.cli.commands.Board.BoardListItemOrBuilder> 
        getBoardsOrBuilderList();
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
     */
    cc.arduino.cli.commands.Board.BoardListItemOrBuilder getBoardsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.DetectedPort}
   */
  public  static final class DetectedPort extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.DetectedPort)
      DetectedPortOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DetectedPort.newBuilder() to construct.
    private DetectedPort(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DetectedPort() {
      address_ = "";
      protocol_ = "";
      protocolLabel_ = "";
      boards_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DetectedPort();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DetectedPort(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              address_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              protocol_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              protocolLabel_ = s;
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                boards_ = new java.util.ArrayList<cc.arduino.cli.commands.Board.BoardListItem>();
                mutable_bitField0_ |= 0x00000001;
              }
              boards_.add(
                  input.readMessage(cc.arduino.cli.commands.Board.BoardListItem.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          boards_ = java.util.Collections.unmodifiableList(boards_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_DetectedPort_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_DetectedPort_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Board.DetectedPort.class, cc.arduino.cli.commands.Board.DetectedPort.Builder.class);
    }

    public static final int ADDRESS_FIELD_NUMBER = 1;
    private volatile java.lang.Object address_;
    /**
     * <code>string address = 1;</code>
     */
    public java.lang.String getAddress() {
      java.lang.Object ref = address_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        address_ = s;
        return s;
      }
    }
    /**
     * <code>string address = 1;</code>
     */
    public com.google.protobuf.ByteString
        getAddressBytes() {
      java.lang.Object ref = address_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        address_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PROTOCOL_FIELD_NUMBER = 2;
    private volatile java.lang.Object protocol_;
    /**
     * <code>string protocol = 2;</code>
     */
    public java.lang.String getProtocol() {
      java.lang.Object ref = protocol_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        protocol_ = s;
        return s;
      }
    }
    /**
     * <code>string protocol = 2;</code>
     */
    public com.google.protobuf.ByteString
        getProtocolBytes() {
      java.lang.Object ref = protocol_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        protocol_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PROTOCOL_LABEL_FIELD_NUMBER = 3;
    private volatile java.lang.Object protocolLabel_;
    /**
     * <code>string protocol_label = 3;</code>
     */
    public java.lang.String getProtocolLabel() {
      java.lang.Object ref = protocolLabel_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        protocolLabel_ = s;
        return s;
      }
    }
    /**
     * <code>string protocol_label = 3;</code>
     */
    public com.google.protobuf.ByteString
        getProtocolLabelBytes() {
      java.lang.Object ref = protocolLabel_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        protocolLabel_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BOARDS_FIELD_NUMBER = 4;
    private java.util.List<cc.arduino.cli.commands.Board.BoardListItem> boards_;
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
     */
    public java.util.List<cc.arduino.cli.commands.Board.BoardListItem> getBoardsList() {
      return boards_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
     */
    public java.util.List<? extends cc.arduino.cli.commands.Board.BoardListItemOrBuilder> 
        getBoardsOrBuilderList() {
      return boards_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
     */
    public int getBoardsCount() {
      return boards_.size();
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
     */
    public cc.arduino.cli.commands.Board.BoardListItem getBoards(int index) {
      return boards_.get(index);
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
     */
    public cc.arduino.cli.commands.Board.BoardListItemOrBuilder getBoardsOrBuilder(
        int index) {
      return boards_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getAddressBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, address_);
      }
      if (!getProtocolBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, protocol_);
      }
      if (!getProtocolLabelBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, protocolLabel_);
      }
      for (int i = 0; i < boards_.size(); i++) {
        output.writeMessage(4, boards_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getAddressBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, address_);
      }
      if (!getProtocolBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, protocol_);
      }
      if (!getProtocolLabelBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, protocolLabel_);
      }
      for (int i = 0; i < boards_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, boards_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cc.arduino.cli.commands.Board.DetectedPort)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Board.DetectedPort other = (cc.arduino.cli.commands.Board.DetectedPort) obj;

      if (!getAddress()
          .equals(other.getAddress())) return false;
      if (!getProtocol()
          .equals(other.getProtocol())) return false;
      if (!getProtocolLabel()
          .equals(other.getProtocolLabel())) return false;
      if (!getBoardsList()
          .equals(other.getBoardsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getAddress().hashCode();
      hash = (37 * hash) + PROTOCOL_FIELD_NUMBER;
      hash = (53 * hash) + getProtocol().hashCode();
      hash = (37 * hash) + PROTOCOL_LABEL_FIELD_NUMBER;
      hash = (53 * hash) + getProtocolLabel().hashCode();
      if (getBoardsCount() > 0) {
        hash = (37 * hash) + BOARDS_FIELD_NUMBER;
        hash = (53 * hash) + getBoardsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Board.DetectedPort parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.DetectedPort parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.DetectedPort parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.DetectedPort parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.DetectedPort parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.DetectedPort parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.DetectedPort parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.DetectedPort parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.DetectedPort parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.DetectedPort parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.DetectedPort parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.DetectedPort parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cc.arduino.cli.commands.Board.DetectedPort prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cc.arduino.cli.commands.DetectedPort}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.DetectedPort)
        cc.arduino.cli.commands.Board.DetectedPortOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_DetectedPort_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_DetectedPort_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Board.DetectedPort.class, cc.arduino.cli.commands.Board.DetectedPort.Builder.class);
      }

      // Construct using cc.arduino.cli.commands.Board.DetectedPort.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getBoardsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        address_ = "";

        protocol_ = "";

        protocolLabel_ = "";

        if (boardsBuilder_ == null) {
          boards_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          boardsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_DetectedPort_descriptor;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.DetectedPort getDefaultInstanceForType() {
        return cc.arduino.cli.commands.Board.DetectedPort.getDefaultInstance();
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.DetectedPort build() {
        cc.arduino.cli.commands.Board.DetectedPort result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.DetectedPort buildPartial() {
        cc.arduino.cli.commands.Board.DetectedPort result = new cc.arduino.cli.commands.Board.DetectedPort(this);
        int from_bitField0_ = bitField0_;
        result.address_ = address_;
        result.protocol_ = protocol_;
        result.protocolLabel_ = protocolLabel_;
        if (boardsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            boards_ = java.util.Collections.unmodifiableList(boards_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.boards_ = boards_;
        } else {
          result.boards_ = boardsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cc.arduino.cli.commands.Board.DetectedPort) {
          return mergeFrom((cc.arduino.cli.commands.Board.DetectedPort)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Board.DetectedPort other) {
        if (other == cc.arduino.cli.commands.Board.DetectedPort.getDefaultInstance()) return this;
        if (!other.getAddress().isEmpty()) {
          address_ = other.address_;
          onChanged();
        }
        if (!other.getProtocol().isEmpty()) {
          protocol_ = other.protocol_;
          onChanged();
        }
        if (!other.getProtocolLabel().isEmpty()) {
          protocolLabel_ = other.protocolLabel_;
          onChanged();
        }
        if (boardsBuilder_ == null) {
          if (!other.boards_.isEmpty()) {
            if (boards_.isEmpty()) {
              boards_ = other.boards_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureBoardsIsMutable();
              boards_.addAll(other.boards_);
            }
            onChanged();
          }
        } else {
          if (!other.boards_.isEmpty()) {
            if (boardsBuilder_.isEmpty()) {
              boardsBuilder_.dispose();
              boardsBuilder_ = null;
              boards_ = other.boards_;
              bitField0_ = (bitField0_ & ~0x00000001);
              boardsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getBoardsFieldBuilder() : null;
            } else {
              boardsBuilder_.addAllMessages(other.boards_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cc.arduino.cli.commands.Board.DetectedPort parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Board.DetectedPort) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object address_ = "";
      /**
       * <code>string address = 1;</code>
       */
      public java.lang.String getAddress() {
        java.lang.Object ref = address_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          address_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string address = 1;</code>
       */
      public com.google.protobuf.ByteString
          getAddressBytes() {
        java.lang.Object ref = address_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          address_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string address = 1;</code>
       */
      public Builder setAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        address_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string address = 1;</code>
       */
      public Builder clearAddress() {
        
        address_ = getDefaultInstance().getAddress();
        onChanged();
        return this;
      }
      /**
       * <code>string address = 1;</code>
       */
      public Builder setAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        address_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object protocol_ = "";
      /**
       * <code>string protocol = 2;</code>
       */
      public java.lang.String getProtocol() {
        java.lang.Object ref = protocol_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          protocol_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string protocol = 2;</code>
       */
      public com.google.protobuf.ByteString
          getProtocolBytes() {
        java.lang.Object ref = protocol_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          protocol_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string protocol = 2;</code>
       */
      public Builder setProtocol(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        protocol_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string protocol = 2;</code>
       */
      public Builder clearProtocol() {
        
        protocol_ = getDefaultInstance().getProtocol();
        onChanged();
        return this;
      }
      /**
       * <code>string protocol = 2;</code>
       */
      public Builder setProtocolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        protocol_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object protocolLabel_ = "";
      /**
       * <code>string protocol_label = 3;</code>
       */
      public java.lang.String getProtocolLabel() {
        java.lang.Object ref = protocolLabel_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          protocolLabel_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string protocol_label = 3;</code>
       */
      public com.google.protobuf.ByteString
          getProtocolLabelBytes() {
        java.lang.Object ref = protocolLabel_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          protocolLabel_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string protocol_label = 3;</code>
       */
      public Builder setProtocolLabel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        protocolLabel_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string protocol_label = 3;</code>
       */
      public Builder clearProtocolLabel() {
        
        protocolLabel_ = getDefaultInstance().getProtocolLabel();
        onChanged();
        return this;
      }
      /**
       * <code>string protocol_label = 3;</code>
       */
      public Builder setProtocolLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        protocolLabel_ = value;
        onChanged();
        return this;
      }

      private java.util.List<cc.arduino.cli.commands.Board.BoardListItem> boards_ =
        java.util.Collections.emptyList();
      private void ensureBoardsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          boards_ = new java.util.ArrayList<cc.arduino.cli.commands.Board.BoardListItem>(boards_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Board.BoardListItem, cc.arduino.cli.commands.Board.BoardListItem.Builder, cc.arduino.cli.commands.Board.BoardListItemOrBuilder> boardsBuilder_;

      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Board.BoardListItem> getBoardsList() {
        if (boardsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(boards_);
        } else {
          return boardsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public int getBoardsCount() {
        if (boardsBuilder_ == null) {
          return boards_.size();
        } else {
          return boardsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public cc.arduino.cli.commands.Board.BoardListItem getBoards(int index) {
        if (boardsBuilder_ == null) {
          return boards_.get(index);
        } else {
          return boardsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public Builder setBoards(
          int index, cc.arduino.cli.commands.Board.BoardListItem value) {
        if (boardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBoardsIsMutable();
          boards_.set(index, value);
          onChanged();
        } else {
          boardsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public Builder setBoards(
          int index, cc.arduino.cli.commands.Board.BoardListItem.Builder builderForValue) {
        if (boardsBuilder_ == null) {
          ensureBoardsIsMutable();
          boards_.set(index, builderForValue.build());
          onChanged();
        } else {
          boardsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public Builder addBoards(cc.arduino.cli.commands.Board.BoardListItem value) {
        if (boardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBoardsIsMutable();
          boards_.add(value);
          onChanged();
        } else {
          boardsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public Builder addBoards(
          int index, cc.arduino.cli.commands.Board.BoardListItem value) {
        if (boardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBoardsIsMutable();
          boards_.add(index, value);
          onChanged();
        } else {
          boardsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public Builder addBoards(
          cc.arduino.cli.commands.Board.BoardListItem.Builder builderForValue) {
        if (boardsBuilder_ == null) {
          ensureBoardsIsMutable();
          boards_.add(builderForValue.build());
          onChanged();
        } else {
          boardsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public Builder addBoards(
          int index, cc.arduino.cli.commands.Board.BoardListItem.Builder builderForValue) {
        if (boardsBuilder_ == null) {
          ensureBoardsIsMutable();
          boards_.add(index, builderForValue.build());
          onChanged();
        } else {
          boardsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public Builder addAllBoards(
          java.lang.Iterable<? extends cc.arduino.cli.commands.Board.BoardListItem> values) {
        if (boardsBuilder_ == null) {
          ensureBoardsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, boards_);
          onChanged();
        } else {
          boardsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public Builder clearBoards() {
        if (boardsBuilder_ == null) {
          boards_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          boardsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public Builder removeBoards(int index) {
        if (boardsBuilder_ == null) {
          ensureBoardsIsMutable();
          boards_.remove(index);
          onChanged();
        } else {
          boardsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public cc.arduino.cli.commands.Board.BoardListItem.Builder getBoardsBuilder(
          int index) {
        return getBoardsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public cc.arduino.cli.commands.Board.BoardListItemOrBuilder getBoardsOrBuilder(
          int index) {
        if (boardsBuilder_ == null) {
          return boards_.get(index);  } else {
          return boardsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public java.util.List<? extends cc.arduino.cli.commands.Board.BoardListItemOrBuilder> 
           getBoardsOrBuilderList() {
        if (boardsBuilder_ != null) {
          return boardsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(boards_);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public cc.arduino.cli.commands.Board.BoardListItem.Builder addBoardsBuilder() {
        return getBoardsFieldBuilder().addBuilder(
            cc.arduino.cli.commands.Board.BoardListItem.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public cc.arduino.cli.commands.Board.BoardListItem.Builder addBoardsBuilder(
          int index) {
        return getBoardsFieldBuilder().addBuilder(
            index, cc.arduino.cli.commands.Board.BoardListItem.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 4;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Board.BoardListItem.Builder> 
           getBoardsBuilderList() {
        return getBoardsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Board.BoardListItem, cc.arduino.cli.commands.Board.BoardListItem.Builder, cc.arduino.cli.commands.Board.BoardListItemOrBuilder> 
          getBoardsFieldBuilder() {
        if (boardsBuilder_ == null) {
          boardsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              cc.arduino.cli.commands.Board.BoardListItem, cc.arduino.cli.commands.Board.BoardListItem.Builder, cc.arduino.cli.commands.Board.BoardListItemOrBuilder>(
                  boards_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          boards_ = null;
        }
        return boardsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cc.arduino.cli.commands.DetectedPort)
    }

    // @@protoc_insertion_point(class_scope:cc.arduino.cli.commands.DetectedPort)
    private static final cc.arduino.cli.commands.Board.DetectedPort DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cc.arduino.cli.commands.Board.DetectedPort();
    }

    public static cc.arduino.cli.commands.Board.DetectedPort getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DetectedPort>
        PARSER = new com.google.protobuf.AbstractParser<DetectedPort>() {
      @java.lang.Override
      public DetectedPort parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new DetectedPort(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<DetectedPort> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DetectedPort> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cc.arduino.cli.commands.Board.DetectedPort getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BoardListAllReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.BoardListAllReq)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    boolean hasInstance();
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    cc.arduino.cli.commands.Common.Instance getInstance();
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    cc.arduino.cli.commands.Common.InstanceOrBuilder getInstanceOrBuilder();

    /**
     * <code>repeated string search_args = 2;</code>
     */
    java.util.List<java.lang.String>
        getSearchArgsList();
    /**
     * <code>repeated string search_args = 2;</code>
     */
    int getSearchArgsCount();
    /**
     * <code>repeated string search_args = 2;</code>
     */
    java.lang.String getSearchArgs(int index);
    /**
     * <code>repeated string search_args = 2;</code>
     */
    com.google.protobuf.ByteString
        getSearchArgsBytes(int index);
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.BoardListAllReq}
   */
  public  static final class BoardListAllReq extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.BoardListAllReq)
      BoardListAllReqOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BoardListAllReq.newBuilder() to construct.
    private BoardListAllReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BoardListAllReq() {
      searchArgs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BoardListAllReq();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BoardListAllReq(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              cc.arduino.cli.commands.Common.Instance.Builder subBuilder = null;
              if (instance_ != null) {
                subBuilder = instance_.toBuilder();
              }
              instance_ = input.readMessage(cc.arduino.cli.commands.Common.Instance.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(instance_);
                instance_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                searchArgs_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              searchArgs_.add(s);
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          searchArgs_ = searchArgs_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListAllReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListAllReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Board.BoardListAllReq.class, cc.arduino.cli.commands.Board.BoardListAllReq.Builder.class);
    }

    public static final int INSTANCE_FIELD_NUMBER = 1;
    private cc.arduino.cli.commands.Common.Instance instance_;
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    public boolean hasInstance() {
      return instance_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    public cc.arduino.cli.commands.Common.Instance getInstance() {
      return instance_ == null ? cc.arduino.cli.commands.Common.Instance.getDefaultInstance() : instance_;
    }
    /**
     * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
     */
    public cc.arduino.cli.commands.Common.InstanceOrBuilder getInstanceOrBuilder() {
      return getInstance();
    }

    public static final int SEARCH_ARGS_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList searchArgs_;
    /**
     * <code>repeated string search_args = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getSearchArgsList() {
      return searchArgs_;
    }
    /**
     * <code>repeated string search_args = 2;</code>
     */
    public int getSearchArgsCount() {
      return searchArgs_.size();
    }
    /**
     * <code>repeated string search_args = 2;</code>
     */
    public java.lang.String getSearchArgs(int index) {
      return searchArgs_.get(index);
    }
    /**
     * <code>repeated string search_args = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSearchArgsBytes(int index) {
      return searchArgs_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (instance_ != null) {
        output.writeMessage(1, getInstance());
      }
      for (int i = 0; i < searchArgs_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, searchArgs_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (instance_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getInstance());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < searchArgs_.size(); i++) {
          dataSize += computeStringSizeNoTag(searchArgs_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getSearchArgsList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cc.arduino.cli.commands.Board.BoardListAllReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Board.BoardListAllReq other = (cc.arduino.cli.commands.Board.BoardListAllReq) obj;

      if (hasInstance() != other.hasInstance()) return false;
      if (hasInstance()) {
        if (!getInstance()
            .equals(other.getInstance())) return false;
      }
      if (!getSearchArgsList()
          .equals(other.getSearchArgsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasInstance()) {
        hash = (37 * hash) + INSTANCE_FIELD_NUMBER;
        hash = (53 * hash) + getInstance().hashCode();
      }
      if (getSearchArgsCount() > 0) {
        hash = (37 * hash) + SEARCH_ARGS_FIELD_NUMBER;
        hash = (53 * hash) + getSearchArgsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Board.BoardListAllReq parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllReq parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllReq parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllReq parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllReq parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllReq parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cc.arduino.cli.commands.Board.BoardListAllReq prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cc.arduino.cli.commands.BoardListAllReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.BoardListAllReq)
        cc.arduino.cli.commands.Board.BoardListAllReqOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListAllReq_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListAllReq_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Board.BoardListAllReq.class, cc.arduino.cli.commands.Board.BoardListAllReq.Builder.class);
      }

      // Construct using cc.arduino.cli.commands.Board.BoardListAllReq.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (instanceBuilder_ == null) {
          instance_ = null;
        } else {
          instance_ = null;
          instanceBuilder_ = null;
        }
        searchArgs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListAllReq_descriptor;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListAllReq getDefaultInstanceForType() {
        return cc.arduino.cli.commands.Board.BoardListAllReq.getDefaultInstance();
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListAllReq build() {
        cc.arduino.cli.commands.Board.BoardListAllReq result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListAllReq buildPartial() {
        cc.arduino.cli.commands.Board.BoardListAllReq result = new cc.arduino.cli.commands.Board.BoardListAllReq(this);
        int from_bitField0_ = bitField0_;
        if (instanceBuilder_ == null) {
          result.instance_ = instance_;
        } else {
          result.instance_ = instanceBuilder_.build();
        }
        if (((bitField0_ & 0x00000001) != 0)) {
          searchArgs_ = searchArgs_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.searchArgs_ = searchArgs_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cc.arduino.cli.commands.Board.BoardListAllReq) {
          return mergeFrom((cc.arduino.cli.commands.Board.BoardListAllReq)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Board.BoardListAllReq other) {
        if (other == cc.arduino.cli.commands.Board.BoardListAllReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (!other.searchArgs_.isEmpty()) {
          if (searchArgs_.isEmpty()) {
            searchArgs_ = other.searchArgs_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureSearchArgsIsMutable();
            searchArgs_.addAll(other.searchArgs_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cc.arduino.cli.commands.Board.BoardListAllReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Board.BoardListAllReq) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private cc.arduino.cli.commands.Common.Instance instance_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.Instance, cc.arduino.cli.commands.Common.Instance.Builder, cc.arduino.cli.commands.Common.InstanceOrBuilder> instanceBuilder_;
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public boolean hasInstance() {
        return instanceBuilder_ != null || instance_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public cc.arduino.cli.commands.Common.Instance getInstance() {
        if (instanceBuilder_ == null) {
          return instance_ == null ? cc.arduino.cli.commands.Common.Instance.getDefaultInstance() : instance_;
        } else {
          return instanceBuilder_.getMessage();
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder setInstance(cc.arduino.cli.commands.Common.Instance value) {
        if (instanceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          instance_ = value;
          onChanged();
        } else {
          instanceBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder setInstance(
          cc.arduino.cli.commands.Common.Instance.Builder builderForValue) {
        if (instanceBuilder_ == null) {
          instance_ = builderForValue.build();
          onChanged();
        } else {
          instanceBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder mergeInstance(cc.arduino.cli.commands.Common.Instance value) {
        if (instanceBuilder_ == null) {
          if (instance_ != null) {
            instance_ =
              cc.arduino.cli.commands.Common.Instance.newBuilder(instance_).mergeFrom(value).buildPartial();
          } else {
            instance_ = value;
          }
          onChanged();
        } else {
          instanceBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public Builder clearInstance() {
        if (instanceBuilder_ == null) {
          instance_ = null;
          onChanged();
        } else {
          instance_ = null;
          instanceBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public cc.arduino.cli.commands.Common.Instance.Builder getInstanceBuilder() {
        
        onChanged();
        return getInstanceFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      public cc.arduino.cli.commands.Common.InstanceOrBuilder getInstanceOrBuilder() {
        if (instanceBuilder_ != null) {
          return instanceBuilder_.getMessageOrBuilder();
        } else {
          return instance_ == null ?
              cc.arduino.cli.commands.Common.Instance.getDefaultInstance() : instance_;
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.Instance instance = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.Instance, cc.arduino.cli.commands.Common.Instance.Builder, cc.arduino.cli.commands.Common.InstanceOrBuilder> 
          getInstanceFieldBuilder() {
        if (instanceBuilder_ == null) {
          instanceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cc.arduino.cli.commands.Common.Instance, cc.arduino.cli.commands.Common.Instance.Builder, cc.arduino.cli.commands.Common.InstanceOrBuilder>(
                  getInstance(),
                  getParentForChildren(),
                  isClean());
          instance_ = null;
        }
        return instanceBuilder_;
      }

      private com.google.protobuf.LazyStringList searchArgs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureSearchArgsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          searchArgs_ = new com.google.protobuf.LazyStringArrayList(searchArgs_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string search_args = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getSearchArgsList() {
        return searchArgs_.getUnmodifiableView();
      }
      /**
       * <code>repeated string search_args = 2;</code>
       */
      public int getSearchArgsCount() {
        return searchArgs_.size();
      }
      /**
       * <code>repeated string search_args = 2;</code>
       */
      public java.lang.String getSearchArgs(int index) {
        return searchArgs_.get(index);
      }
      /**
       * <code>repeated string search_args = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSearchArgsBytes(int index) {
        return searchArgs_.getByteString(index);
      }
      /**
       * <code>repeated string search_args = 2;</code>
       */
      public Builder setSearchArgs(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSearchArgsIsMutable();
        searchArgs_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string search_args = 2;</code>
       */
      public Builder addSearchArgs(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSearchArgsIsMutable();
        searchArgs_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string search_args = 2;</code>
       */
      public Builder addAllSearchArgs(
          java.lang.Iterable<java.lang.String> values) {
        ensureSearchArgsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, searchArgs_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string search_args = 2;</code>
       */
      public Builder clearSearchArgs() {
        searchArgs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string search_args = 2;</code>
       */
      public Builder addSearchArgsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureSearchArgsIsMutable();
        searchArgs_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cc.arduino.cli.commands.BoardListAllReq)
    }

    // @@protoc_insertion_point(class_scope:cc.arduino.cli.commands.BoardListAllReq)
    private static final cc.arduino.cli.commands.Board.BoardListAllReq DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cc.arduino.cli.commands.Board.BoardListAllReq();
    }

    public static cc.arduino.cli.commands.Board.BoardListAllReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BoardListAllReq>
        PARSER = new com.google.protobuf.AbstractParser<BoardListAllReq>() {
      @java.lang.Override
      public BoardListAllReq parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BoardListAllReq(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BoardListAllReq> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BoardListAllReq> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cc.arduino.cli.commands.Board.BoardListAllReq getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BoardListAllRespOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.BoardListAllResp)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
     */
    java.util.List<cc.arduino.cli.commands.Board.BoardListItem> 
        getBoardsList();
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
     */
    cc.arduino.cli.commands.Board.BoardListItem getBoards(int index);
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
     */
    int getBoardsCount();
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
     */
    java.util.List<? extends cc.arduino.cli.commands.Board.BoardListItemOrBuilder> 
        getBoardsOrBuilderList();
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
     */
    cc.arduino.cli.commands.Board.BoardListItemOrBuilder getBoardsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.BoardListAllResp}
   */
  public  static final class BoardListAllResp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.BoardListAllResp)
      BoardListAllRespOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BoardListAllResp.newBuilder() to construct.
    private BoardListAllResp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BoardListAllResp() {
      boards_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BoardListAllResp();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BoardListAllResp(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                boards_ = new java.util.ArrayList<cc.arduino.cli.commands.Board.BoardListItem>();
                mutable_bitField0_ |= 0x00000001;
              }
              boards_.add(
                  input.readMessage(cc.arduino.cli.commands.Board.BoardListItem.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          boards_ = java.util.Collections.unmodifiableList(boards_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListAllResp_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListAllResp_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Board.BoardListAllResp.class, cc.arduino.cli.commands.Board.BoardListAllResp.Builder.class);
    }

    public static final int BOARDS_FIELD_NUMBER = 1;
    private java.util.List<cc.arduino.cli.commands.Board.BoardListItem> boards_;
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
     */
    public java.util.List<cc.arduino.cli.commands.Board.BoardListItem> getBoardsList() {
      return boards_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
     */
    public java.util.List<? extends cc.arduino.cli.commands.Board.BoardListItemOrBuilder> 
        getBoardsOrBuilderList() {
      return boards_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
     */
    public int getBoardsCount() {
      return boards_.size();
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
     */
    public cc.arduino.cli.commands.Board.BoardListItem getBoards(int index) {
      return boards_.get(index);
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
     */
    public cc.arduino.cli.commands.Board.BoardListItemOrBuilder getBoardsOrBuilder(
        int index) {
      return boards_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < boards_.size(); i++) {
        output.writeMessage(1, boards_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < boards_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, boards_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cc.arduino.cli.commands.Board.BoardListAllResp)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Board.BoardListAllResp other = (cc.arduino.cli.commands.Board.BoardListAllResp) obj;

      if (!getBoardsList()
          .equals(other.getBoardsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getBoardsCount() > 0) {
        hash = (37 * hash) + BOARDS_FIELD_NUMBER;
        hash = (53 * hash) + getBoardsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Board.BoardListAllResp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllResp parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllResp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllResp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllResp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllResp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllResp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllResp parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllResp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllResp parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllResp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListAllResp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cc.arduino.cli.commands.Board.BoardListAllResp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cc.arduino.cli.commands.BoardListAllResp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.BoardListAllResp)
        cc.arduino.cli.commands.Board.BoardListAllRespOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListAllResp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListAllResp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Board.BoardListAllResp.class, cc.arduino.cli.commands.Board.BoardListAllResp.Builder.class);
      }

      // Construct using cc.arduino.cli.commands.Board.BoardListAllResp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getBoardsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (boardsBuilder_ == null) {
          boards_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          boardsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListAllResp_descriptor;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListAllResp getDefaultInstanceForType() {
        return cc.arduino.cli.commands.Board.BoardListAllResp.getDefaultInstance();
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListAllResp build() {
        cc.arduino.cli.commands.Board.BoardListAllResp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListAllResp buildPartial() {
        cc.arduino.cli.commands.Board.BoardListAllResp result = new cc.arduino.cli.commands.Board.BoardListAllResp(this);
        int from_bitField0_ = bitField0_;
        if (boardsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            boards_ = java.util.Collections.unmodifiableList(boards_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.boards_ = boards_;
        } else {
          result.boards_ = boardsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cc.arduino.cli.commands.Board.BoardListAllResp) {
          return mergeFrom((cc.arduino.cli.commands.Board.BoardListAllResp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Board.BoardListAllResp other) {
        if (other == cc.arduino.cli.commands.Board.BoardListAllResp.getDefaultInstance()) return this;
        if (boardsBuilder_ == null) {
          if (!other.boards_.isEmpty()) {
            if (boards_.isEmpty()) {
              boards_ = other.boards_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureBoardsIsMutable();
              boards_.addAll(other.boards_);
            }
            onChanged();
          }
        } else {
          if (!other.boards_.isEmpty()) {
            if (boardsBuilder_.isEmpty()) {
              boardsBuilder_.dispose();
              boardsBuilder_ = null;
              boards_ = other.boards_;
              bitField0_ = (bitField0_ & ~0x00000001);
              boardsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getBoardsFieldBuilder() : null;
            } else {
              boardsBuilder_.addAllMessages(other.boards_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cc.arduino.cli.commands.Board.BoardListAllResp parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Board.BoardListAllResp) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<cc.arduino.cli.commands.Board.BoardListItem> boards_ =
        java.util.Collections.emptyList();
      private void ensureBoardsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          boards_ = new java.util.ArrayList<cc.arduino.cli.commands.Board.BoardListItem>(boards_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Board.BoardListItem, cc.arduino.cli.commands.Board.BoardListItem.Builder, cc.arduino.cli.commands.Board.BoardListItemOrBuilder> boardsBuilder_;

      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Board.BoardListItem> getBoardsList() {
        if (boardsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(boards_);
        } else {
          return boardsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public int getBoardsCount() {
        if (boardsBuilder_ == null) {
          return boards_.size();
        } else {
          return boardsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public cc.arduino.cli.commands.Board.BoardListItem getBoards(int index) {
        if (boardsBuilder_ == null) {
          return boards_.get(index);
        } else {
          return boardsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public Builder setBoards(
          int index, cc.arduino.cli.commands.Board.BoardListItem value) {
        if (boardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBoardsIsMutable();
          boards_.set(index, value);
          onChanged();
        } else {
          boardsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public Builder setBoards(
          int index, cc.arduino.cli.commands.Board.BoardListItem.Builder builderForValue) {
        if (boardsBuilder_ == null) {
          ensureBoardsIsMutable();
          boards_.set(index, builderForValue.build());
          onChanged();
        } else {
          boardsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public Builder addBoards(cc.arduino.cli.commands.Board.BoardListItem value) {
        if (boardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBoardsIsMutable();
          boards_.add(value);
          onChanged();
        } else {
          boardsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public Builder addBoards(
          int index, cc.arduino.cli.commands.Board.BoardListItem value) {
        if (boardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBoardsIsMutable();
          boards_.add(index, value);
          onChanged();
        } else {
          boardsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public Builder addBoards(
          cc.arduino.cli.commands.Board.BoardListItem.Builder builderForValue) {
        if (boardsBuilder_ == null) {
          ensureBoardsIsMutable();
          boards_.add(builderForValue.build());
          onChanged();
        } else {
          boardsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public Builder addBoards(
          int index, cc.arduino.cli.commands.Board.BoardListItem.Builder builderForValue) {
        if (boardsBuilder_ == null) {
          ensureBoardsIsMutable();
          boards_.add(index, builderForValue.build());
          onChanged();
        } else {
          boardsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public Builder addAllBoards(
          java.lang.Iterable<? extends cc.arduino.cli.commands.Board.BoardListItem> values) {
        if (boardsBuilder_ == null) {
          ensureBoardsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, boards_);
          onChanged();
        } else {
          boardsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public Builder clearBoards() {
        if (boardsBuilder_ == null) {
          boards_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          boardsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public Builder removeBoards(int index) {
        if (boardsBuilder_ == null) {
          ensureBoardsIsMutable();
          boards_.remove(index);
          onChanged();
        } else {
          boardsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public cc.arduino.cli.commands.Board.BoardListItem.Builder getBoardsBuilder(
          int index) {
        return getBoardsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public cc.arduino.cli.commands.Board.BoardListItemOrBuilder getBoardsOrBuilder(
          int index) {
        if (boardsBuilder_ == null) {
          return boards_.get(index);  } else {
          return boardsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public java.util.List<? extends cc.arduino.cli.commands.Board.BoardListItemOrBuilder> 
           getBoardsOrBuilderList() {
        if (boardsBuilder_ != null) {
          return boardsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(boards_);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public cc.arduino.cli.commands.Board.BoardListItem.Builder addBoardsBuilder() {
        return getBoardsFieldBuilder().addBuilder(
            cc.arduino.cli.commands.Board.BoardListItem.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public cc.arduino.cli.commands.Board.BoardListItem.Builder addBoardsBuilder(
          int index) {
        return getBoardsFieldBuilder().addBuilder(
            index, cc.arduino.cli.commands.Board.BoardListItem.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.BoardListItem boards = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Board.BoardListItem.Builder> 
           getBoardsBuilderList() {
        return getBoardsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Board.BoardListItem, cc.arduino.cli.commands.Board.BoardListItem.Builder, cc.arduino.cli.commands.Board.BoardListItemOrBuilder> 
          getBoardsFieldBuilder() {
        if (boardsBuilder_ == null) {
          boardsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              cc.arduino.cli.commands.Board.BoardListItem, cc.arduino.cli.commands.Board.BoardListItem.Builder, cc.arduino.cli.commands.Board.BoardListItemOrBuilder>(
                  boards_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          boards_ = null;
        }
        return boardsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cc.arduino.cli.commands.BoardListAllResp)
    }

    // @@protoc_insertion_point(class_scope:cc.arduino.cli.commands.BoardListAllResp)
    private static final cc.arduino.cli.commands.Board.BoardListAllResp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cc.arduino.cli.commands.Board.BoardListAllResp();
    }

    public static cc.arduino.cli.commands.Board.BoardListAllResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BoardListAllResp>
        PARSER = new com.google.protobuf.AbstractParser<BoardListAllResp>() {
      @java.lang.Override
      public BoardListAllResp parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BoardListAllResp(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BoardListAllResp> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BoardListAllResp> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cc.arduino.cli.commands.Board.BoardListAllResp getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BoardListItemOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.BoardListItem)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <code>string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>string FQBN = 2;</code>
     */
    java.lang.String getFQBN();
    /**
     * <code>string FQBN = 2;</code>
     */
    com.google.protobuf.ByteString
        getFQBNBytes();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.BoardListItem}
   */
  public  static final class BoardListItem extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.BoardListItem)
      BoardListItemOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BoardListItem.newBuilder() to construct.
    private BoardListItem(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BoardListItem() {
      name_ = "";
      fQBN_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BoardListItem();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BoardListItem(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              fQBN_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListItem_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListItem_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Board.BoardListItem.class, cc.arduino.cli.commands.Board.BoardListItem.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FQBN_FIELD_NUMBER = 2;
    private volatile java.lang.Object fQBN_;
    /**
     * <code>string FQBN = 2;</code>
     */
    public java.lang.String getFQBN() {
      java.lang.Object ref = fQBN_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        fQBN_ = s;
        return s;
      }
    }
    /**
     * <code>string FQBN = 2;</code>
     */
    public com.google.protobuf.ByteString
        getFQBNBytes() {
      java.lang.Object ref = fQBN_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fQBN_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!getFQBNBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, fQBN_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!getFQBNBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, fQBN_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cc.arduino.cli.commands.Board.BoardListItem)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Board.BoardListItem other = (cc.arduino.cli.commands.Board.BoardListItem) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getFQBN()
          .equals(other.getFQBN())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + FQBN_FIELD_NUMBER;
      hash = (53 * hash) + getFQBN().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Board.BoardListItem parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListItem parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListItem parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListItem parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListItem parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Board.BoardListItem parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListItem parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListItem parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListItem parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListItem parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Board.BoardListItem parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Board.BoardListItem parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cc.arduino.cli.commands.Board.BoardListItem prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cc.arduino.cli.commands.BoardListItem}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.BoardListItem)
        cc.arduino.cli.commands.Board.BoardListItemOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListItem_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListItem_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Board.BoardListItem.class, cc.arduino.cli.commands.Board.BoardListItem.Builder.class);
      }

      // Construct using cc.arduino.cli.commands.Board.BoardListItem.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        fQBN_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cc.arduino.cli.commands.Board.internal_static_cc_arduino_cli_commands_BoardListItem_descriptor;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListItem getDefaultInstanceForType() {
        return cc.arduino.cli.commands.Board.BoardListItem.getDefaultInstance();
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListItem build() {
        cc.arduino.cli.commands.Board.BoardListItem result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cc.arduino.cli.commands.Board.BoardListItem buildPartial() {
        cc.arduino.cli.commands.Board.BoardListItem result = new cc.arduino.cli.commands.Board.BoardListItem(this);
        result.name_ = name_;
        result.fQBN_ = fQBN_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cc.arduino.cli.commands.Board.BoardListItem) {
          return mergeFrom((cc.arduino.cli.commands.Board.BoardListItem)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Board.BoardListItem other) {
        if (other == cc.arduino.cli.commands.Board.BoardListItem.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getFQBN().isEmpty()) {
          fQBN_ = other.fQBN_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cc.arduino.cli.commands.Board.BoardListItem parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Board.BoardListItem) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object fQBN_ = "";
      /**
       * <code>string FQBN = 2;</code>
       */
      public java.lang.String getFQBN() {
        java.lang.Object ref = fQBN_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fQBN_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string FQBN = 2;</code>
       */
      public com.google.protobuf.ByteString
          getFQBNBytes() {
        java.lang.Object ref = fQBN_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fQBN_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string FQBN = 2;</code>
       */
      public Builder setFQBN(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        fQBN_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string FQBN = 2;</code>
       */
      public Builder clearFQBN() {
        
        fQBN_ = getDefaultInstance().getFQBN();
        onChanged();
        return this;
      }
      /**
       * <code>string FQBN = 2;</code>
       */
      public Builder setFQBNBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        fQBN_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cc.arduino.cli.commands.BoardListItem)
    }

    // @@protoc_insertion_point(class_scope:cc.arduino.cli.commands.BoardListItem)
    private static final cc.arduino.cli.commands.Board.BoardListItem DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cc.arduino.cli.commands.Board.BoardListItem();
    }

    public static cc.arduino.cli.commands.Board.BoardListItem getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BoardListItem>
        PARSER = new com.google.protobuf.AbstractParser<BoardListItem>() {
      @java.lang.Override
      public BoardListItem parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BoardListItem(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BoardListItem> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BoardListItem> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cc.arduino.cli.commands.Board.BoardListItem getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_BoardDetailsReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_BoardDetailsReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_BoardDetailsResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_BoardDetailsResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_ConfigOption_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_ConfigOption_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_ConfigValue_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_ConfigValue_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_RequiredTool_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_RequiredTool_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_BoardAttachReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_BoardAttachReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_BoardAttachResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_BoardAttachResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_BoardListReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_BoardListReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_BoardListResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_BoardListResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_DetectedPort_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_DetectedPort_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_BoardListAllReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_BoardListAllReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_BoardListAllResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_BoardListAllResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_BoardListItem_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_BoardListItem_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\024commands/board.proto\022\027cc.arduino.cli.c" +
      "ommands\032\025commands/common.proto\"T\n\017BoardD" +
      "etailsReq\0223\n\010instance\030\001 \001(\0132!.cc.arduino" +
      ".cli.commands.Instance\022\014\n\004fqbn\030\002 \001(\t\"\236\001\n" +
      "\020BoardDetailsResp\022\014\n\004name\030\002 \001(\t\022=\n\016confi" +
      "g_options\030\003 \003(\0132%.cc.arduino.cli.command" +
      "s.ConfigOption\022=\n\016required_tools\030\004 \003(\0132%" +
      ".cc.arduino.cli.commands.RequiredTool\"j\n" +
      "\014ConfigOption\022\016\n\006option\030\001 \001(\t\022\024\n\014option_" +
      "label\030\002 \001(\t\0224\n\006values\030\003 \003(\0132$.cc.arduino" +
      ".cli.commands.ConfigValue\"C\n\013ConfigValue" +
      "\022\r\n\005value\030\001 \001(\t\022\023\n\013value_label\030\002 \001(\t\022\020\n\010" +
      "selected\030\003 \001(\010\"?\n\014RequiredTool\022\014\n\004name\030\001" +
      " \001(\t\022\017\n\007version\030\002 \001(\t\022\020\n\010packager\030\003 \001(\t\"" +
      "\205\001\n\016BoardAttachReq\0223\n\010instance\030\001 \001(\0132!.c" +
      "c.arduino.cli.commands.Instance\022\021\n\tboard" +
      "_uri\030\002 \001(\t\022\023\n\013sketch_path\030\003 \001(\t\022\026\n\016searc" +
      "h_timeout\030\004 \001(\t\"O\n\017BoardAttachResp\022<\n\rta" +
      "sk_progress\030\001 \001(\0132%.cc.arduino.cli.comma" +
      "nds.TaskProgress\"C\n\014BoardListReq\0223\n\010inst" +
      "ance\030\001 \001(\0132!.cc.arduino.cli.commands.Ins" +
      "tance\"E\n\rBoardListResp\0224\n\005ports\030\001 \003(\0132%." +
      "cc.arduino.cli.commands.DetectedPort\"\201\001\n" +
      "\014DetectedPort\022\017\n\007address\030\001 \001(\t\022\020\n\010protoc" +
      "ol\030\002 \001(\t\022\026\n\016protocol_label\030\003 \001(\t\0226\n\006boar" +
      "ds\030\004 \003(\0132&.cc.arduino.cli.commands.Board" +
      "ListItem\"[\n\017BoardListAllReq\0223\n\010instance\030" +
      "\001 \001(\0132!.cc.arduino.cli.commands.Instance" +
      "\022\023\n\013search_args\030\002 \003(\t\"J\n\020BoardListAllRes" +
      "p\0226\n\006boards\030\001 \003(\0132&.cc.arduino.cli.comma" +
      "nds.BoardListItem\"+\n\rBoardListItem\022\014\n\004na" +
      "me\030\001 \001(\t\022\014\n\004FQBN\030\002 \001(\tB-Z+github.com/ard" +
      "uino/arduino-cli/rpc/commandsb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          cc.arduino.cli.commands.Common.getDescriptor(),
        });
    internal_static_cc_arduino_cli_commands_BoardDetailsReq_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_cc_arduino_cli_commands_BoardDetailsReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_BoardDetailsReq_descriptor,
        new java.lang.String[] { "Instance", "Fqbn", });
    internal_static_cc_arduino_cli_commands_BoardDetailsResp_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_cc_arduino_cli_commands_BoardDetailsResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_BoardDetailsResp_descriptor,
        new java.lang.String[] { "Name", "ConfigOptions", "RequiredTools", });
    internal_static_cc_arduino_cli_commands_ConfigOption_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_cc_arduino_cli_commands_ConfigOption_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_ConfigOption_descriptor,
        new java.lang.String[] { "Option", "OptionLabel", "Values", });
    internal_static_cc_arduino_cli_commands_ConfigValue_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_cc_arduino_cli_commands_ConfigValue_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_ConfigValue_descriptor,
        new java.lang.String[] { "Value", "ValueLabel", "Selected", });
    internal_static_cc_arduino_cli_commands_RequiredTool_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_cc_arduino_cli_commands_RequiredTool_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_RequiredTool_descriptor,
        new java.lang.String[] { "Name", "Version", "Packager", });
    internal_static_cc_arduino_cli_commands_BoardAttachReq_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_cc_arduino_cli_commands_BoardAttachReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_BoardAttachReq_descriptor,
        new java.lang.String[] { "Instance", "BoardUri", "SketchPath", "SearchTimeout", });
    internal_static_cc_arduino_cli_commands_BoardAttachResp_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_cc_arduino_cli_commands_BoardAttachResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_BoardAttachResp_descriptor,
        new java.lang.String[] { "TaskProgress", });
    internal_static_cc_arduino_cli_commands_BoardListReq_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_cc_arduino_cli_commands_BoardListReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_BoardListReq_descriptor,
        new java.lang.String[] { "Instance", });
    internal_static_cc_arduino_cli_commands_BoardListResp_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_cc_arduino_cli_commands_BoardListResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_BoardListResp_descriptor,
        new java.lang.String[] { "Ports", });
    internal_static_cc_arduino_cli_commands_DetectedPort_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_cc_arduino_cli_commands_DetectedPort_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_DetectedPort_descriptor,
        new java.lang.String[] { "Address", "Protocol", "ProtocolLabel", "Boards", });
    internal_static_cc_arduino_cli_commands_BoardListAllReq_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_cc_arduino_cli_commands_BoardListAllReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_BoardListAllReq_descriptor,
        new java.lang.String[] { "Instance", "SearchArgs", });
    internal_static_cc_arduino_cli_commands_BoardListAllResp_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_cc_arduino_cli_commands_BoardListAllResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_BoardListAllResp_descriptor,
        new java.lang.String[] { "Boards", });
    internal_static_cc_arduino_cli_commands_BoardListItem_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_cc_arduino_cli_commands_BoardListItem_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_BoardListItem_descriptor,
        new java.lang.String[] { "Name", "FQBN", });
    cc.arduino.cli.commands.Common.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
