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

package cc.arduino.cli.commands;

public final class Core {
  private Core() {}
  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 PlatformInstallReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.PlatformInstallReq)
      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 platform_package = 2;</code>
     */
    java.lang.String getPlatformPackage();
    /**
     * <code>string platform_package = 2;</code>
     */
    com.google.protobuf.ByteString
        getPlatformPackageBytes();

    /**
     * <code>string architecture = 3;</code>
     */
    java.lang.String getArchitecture();
    /**
     * <code>string architecture = 3;</code>
     */
    com.google.protobuf.ByteString
        getArchitectureBytes();

    /**
     * <code>string version = 4;</code>
     */
    java.lang.String getVersion();
    /**
     * <code>string version = 4;</code>
     */
    com.google.protobuf.ByteString
        getVersionBytes();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.PlatformInstallReq}
   */
  public  static final class PlatformInstallReq extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.PlatformInstallReq)
      PlatformInstallReqOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PlatformInstallReq.newBuilder() to construct.
    private PlatformInstallReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PlatformInstallReq() {
      platformPackage_ = "";
      architecture_ = "";
      version_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PlatformInstallReq(
        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();

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

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

              version_ = 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.Core.internal_static_cc_arduino_cli_commands_PlatformInstallReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformInstallReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Core.PlatformInstallReq.class, cc.arduino.cli.commands.Core.PlatformInstallReq.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 PLATFORM_PACKAGE_FIELD_NUMBER = 2;
    private volatile java.lang.Object platformPackage_;
    /**
     * <code>string platform_package = 2;</code>
     */
    public java.lang.String getPlatformPackage() {
      java.lang.Object ref = platformPackage_;
      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();
        platformPackage_ = s;
        return s;
      }
    }
    /**
     * <code>string platform_package = 2;</code>
     */
    public com.google.protobuf.ByteString
        getPlatformPackageBytes() {
      java.lang.Object ref = platformPackage_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        platformPackage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ARCHITECTURE_FIELD_NUMBER = 3;
    private volatile java.lang.Object architecture_;
    /**
     * <code>string architecture = 3;</code>
     */
    public java.lang.String getArchitecture() {
      java.lang.Object ref = architecture_;
      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();
        architecture_ = s;
        return s;
      }
    }
    /**
     * <code>string architecture = 3;</code>
     */
    public com.google.protobuf.ByteString
        getArchitectureBytes() {
      java.lang.Object ref = architecture_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        architecture_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 4;
    private volatile java.lang.Object version_;
    /**
     * <code>string version = 4;</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 = 4;</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;
      }
    }

    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 (!getPlatformPackageBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, platformPackage_);
      }
      if (!getArchitectureBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, architecture_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, version_);
      }
      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 (!getPlatformPackageBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, platformPackage_);
      }
      if (!getArchitectureBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, architecture_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, version_);
      }
      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.Core.PlatformInstallReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.PlatformInstallReq other = (cc.arduino.cli.commands.Core.PlatformInstallReq) obj;

      if (hasInstance() != other.hasInstance()) return false;
      if (hasInstance()) {
        if (!getInstance()
            .equals(other.getInstance())) return false;
      }
      if (!getPlatformPackage()
          .equals(other.getPlatformPackage())) return false;
      if (!getArchitecture()
          .equals(other.getArchitecture())) return false;
      if (!getVersion()
          .equals(other.getVersion())) 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) + PLATFORM_PACKAGE_FIELD_NUMBER;
      hash = (53 * hash) + getPlatformPackage().hashCode();
      hash = (37 * hash) + ARCHITECTURE_FIELD_NUMBER;
      hash = (53 * hash) + getArchitecture().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Core.PlatformInstallReq parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallReq 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.Core.PlatformInstallReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallReq 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.Core.PlatformInstallReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallReq 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.Core.PlatformInstallReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallReq 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.Core.PlatformInstallReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallReq 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.Core.PlatformInstallReq 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.PlatformInstallReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.PlatformInstallReq)
        cc.arduino.cli.commands.Core.PlatformInstallReqOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformInstallReq_descriptor;
      }

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

      // Construct using cc.arduino.cli.commands.Core.PlatformInstallReq.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;
        }
        platformPackage_ = "";

        architecture_ = "";

        version_ = "";

        return this;
      }

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.PlatformInstallReq buildPartial() {
        cc.arduino.cli.commands.Core.PlatformInstallReq result = new cc.arduino.cli.commands.Core.PlatformInstallReq(this);
        if (instanceBuilder_ == null) {
          result.instance_ = instance_;
        } else {
          result.instance_ = instanceBuilder_.build();
        }
        result.platformPackage_ = platformPackage_;
        result.architecture_ = architecture_;
        result.version_ = version_;
        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.Core.PlatformInstallReq) {
          return mergeFrom((cc.arduino.cli.commands.Core.PlatformInstallReq)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.PlatformInstallReq other) {
        if (other == cc.arduino.cli.commands.Core.PlatformInstallReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (!other.getPlatformPackage().isEmpty()) {
          platformPackage_ = other.platformPackage_;
          onChanged();
        }
        if (!other.getArchitecture().isEmpty()) {
          architecture_ = other.architecture_;
          onChanged();
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          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.Core.PlatformInstallReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.PlatformInstallReq) 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 platformPackage_ = "";
      /**
       * <code>string platform_package = 2;</code>
       */
      public java.lang.String getPlatformPackage() {
        java.lang.Object ref = platformPackage_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          platformPackage_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public com.google.protobuf.ByteString
          getPlatformPackageBytes() {
        java.lang.Object ref = platformPackage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          platformPackage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public Builder setPlatformPackage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        platformPackage_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public Builder clearPlatformPackage() {
        
        platformPackage_ = getDefaultInstance().getPlatformPackage();
        onChanged();
        return this;
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public Builder setPlatformPackageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        platformPackage_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object architecture_ = "";
      /**
       * <code>string architecture = 3;</code>
       */
      public java.lang.String getArchitecture() {
        java.lang.Object ref = architecture_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          architecture_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public com.google.protobuf.ByteString
          getArchitectureBytes() {
        java.lang.Object ref = architecture_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          architecture_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public Builder setArchitecture(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        architecture_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public Builder clearArchitecture() {
        
        architecture_ = getDefaultInstance().getArchitecture();
        onChanged();
        return this;
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public Builder setArchitectureBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        architecture_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object version_ = "";
      /**
       * <code>string version = 4;</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 = 4;</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 = 4;</code>
       */
      public Builder setVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string version = 4;</code>
       */
      public Builder clearVersion() {
        
        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      /**
       * <code>string version = 4;</code>
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        version_ = 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.PlatformInstallReq)
    }

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

    public static cc.arduino.cli.commands.Core.PlatformInstallReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    boolean hasProgress();
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    cc.arduino.cli.commands.Common.DownloadProgress getProgress();
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    cc.arduino.cli.commands.Common.DownloadProgressOrBuilder getProgressOrBuilder();

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

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PlatformInstallResp(
        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.DownloadProgress.Builder subBuilder = null;
              if (progress_ != null) {
                subBuilder = progress_.toBuilder();
              }
              progress_ = input.readMessage(cc.arduino.cli.commands.Common.DownloadProgress.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(progress_);
                progress_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              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.Core.internal_static_cc_arduino_cli_commands_PlatformInstallResp_descriptor;
    }

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

    public static final int PROGRESS_FIELD_NUMBER = 1;
    private cc.arduino.cli.commands.Common.DownloadProgress progress_;
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    public boolean hasProgress() {
      return progress_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    public cc.arduino.cli.commands.Common.DownloadProgress getProgress() {
      return progress_ == null ? cc.arduino.cli.commands.Common.DownloadProgress.getDefaultInstance() : progress_;
    }
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    public cc.arduino.cli.commands.Common.DownloadProgressOrBuilder getProgressOrBuilder() {
      return getProgress();
    }

    public static final int TASK_PROGRESS_FIELD_NUMBER = 2;
    private cc.arduino.cli.commands.Common.TaskProgress taskProgress_;
    /**
     * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 2;</code>
     */
    public boolean hasTaskProgress() {
      return taskProgress_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 2;</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 = 2;</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 (progress_ != null) {
        output.writeMessage(1, getProgress());
      }
      if (taskProgress_ != null) {
        output.writeMessage(2, getTaskProgress());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (progress_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getProgress());
      }
      if (taskProgress_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, 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.Core.PlatformInstallResp)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.PlatformInstallResp other = (cc.arduino.cli.commands.Core.PlatformInstallResp) obj;

      if (hasProgress() != other.hasProgress()) return false;
      if (hasProgress()) {
        if (!getProgress()
            .equals(other.getProgress())) return false;
      }
      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 (hasProgress()) {
        hash = (37 * hash) + PROGRESS_FIELD_NUMBER;
        hash = (53 * hash) + getProgress().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.Core.PlatformInstallResp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallResp 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.Core.PlatformInstallResp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallResp 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.Core.PlatformInstallResp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallResp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallResp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallResp 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.Core.PlatformInstallResp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallResp 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.Core.PlatformInstallResp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformInstallResp 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.Core.PlatformInstallResp 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.PlatformInstallResp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.PlatformInstallResp)
        cc.arduino.cli.commands.Core.PlatformInstallRespOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformInstallResp_descriptor;
      }

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

      // Construct using cc.arduino.cli.commands.Core.PlatformInstallResp.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 (progressBuilder_ == null) {
          progress_ = null;
        } else {
          progress_ = null;
          progressBuilder_ = null;
        }
        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.Core.internal_static_cc_arduino_cli_commands_PlatformInstallResp_descriptor;
      }

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.PlatformInstallResp buildPartial() {
        cc.arduino.cli.commands.Core.PlatformInstallResp result = new cc.arduino.cli.commands.Core.PlatformInstallResp(this);
        if (progressBuilder_ == null) {
          result.progress_ = progress_;
        } else {
          result.progress_ = progressBuilder_.build();
        }
        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.Core.PlatformInstallResp) {
          return mergeFrom((cc.arduino.cli.commands.Core.PlatformInstallResp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.PlatformInstallResp other) {
        if (other == cc.arduino.cli.commands.Core.PlatformInstallResp.getDefaultInstance()) return this;
        if (other.hasProgress()) {
          mergeProgress(other.getProgress());
        }
        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.Core.PlatformInstallResp parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.PlatformInstallResp) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private cc.arduino.cli.commands.Common.DownloadProgress progress_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.DownloadProgress, cc.arduino.cli.commands.Common.DownloadProgress.Builder, cc.arduino.cli.commands.Common.DownloadProgressOrBuilder> progressBuilder_;
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public boolean hasProgress() {
        return progressBuilder_ != null || progress_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public cc.arduino.cli.commands.Common.DownloadProgress getProgress() {
        if (progressBuilder_ == null) {
          return progress_ == null ? cc.arduino.cli.commands.Common.DownloadProgress.getDefaultInstance() : progress_;
        } else {
          return progressBuilder_.getMessage();
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public Builder setProgress(cc.arduino.cli.commands.Common.DownloadProgress value) {
        if (progressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          progress_ = value;
          onChanged();
        } else {
          progressBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public Builder setProgress(
          cc.arduino.cli.commands.Common.DownloadProgress.Builder builderForValue) {
        if (progressBuilder_ == null) {
          progress_ = builderForValue.build();
          onChanged();
        } else {
          progressBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public Builder mergeProgress(cc.arduino.cli.commands.Common.DownloadProgress value) {
        if (progressBuilder_ == null) {
          if (progress_ != null) {
            progress_ =
              cc.arduino.cli.commands.Common.DownloadProgress.newBuilder(progress_).mergeFrom(value).buildPartial();
          } else {
            progress_ = value;
          }
          onChanged();
        } else {
          progressBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public Builder clearProgress() {
        if (progressBuilder_ == null) {
          progress_ = null;
          onChanged();
        } else {
          progress_ = null;
          progressBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public cc.arduino.cli.commands.Common.DownloadProgress.Builder getProgressBuilder() {
        
        onChanged();
        return getProgressFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public cc.arduino.cli.commands.Common.DownloadProgressOrBuilder getProgressOrBuilder() {
        if (progressBuilder_ != null) {
          return progressBuilder_.getMessageOrBuilder();
        } else {
          return progress_ == null ?
              cc.arduino.cli.commands.Common.DownloadProgress.getDefaultInstance() : progress_;
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.DownloadProgress, cc.arduino.cli.commands.Common.DownloadProgress.Builder, cc.arduino.cli.commands.Common.DownloadProgressOrBuilder> 
          getProgressFieldBuilder() {
        if (progressBuilder_ == null) {
          progressBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cc.arduino.cli.commands.Common.DownloadProgress, cc.arduino.cli.commands.Common.DownloadProgress.Builder, cc.arduino.cli.commands.Common.DownloadProgressOrBuilder>(
                  getProgress(),
                  getParentForChildren(),
                  isClean());
          progress_ = null;
        }
        return progressBuilder_;
      }

      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 = 2;</code>
       */
      public boolean hasTaskProgress() {
        return taskProgressBuilder_ != null || taskProgress_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 2;</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 = 2;</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 = 2;</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 = 2;</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 = 2;</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 = 2;</code>
       */
      public cc.arduino.cli.commands.Common.TaskProgress.Builder getTaskProgressBuilder() {
        
        onChanged();
        return getTaskProgressFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 2;</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 = 2;</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.PlatformInstallResp)
    }

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

    public static cc.arduino.cli.commands.Core.PlatformInstallResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface PlatformDownloadReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.PlatformDownloadReq)
      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 platform_package = 2;</code>
     */
    java.lang.String getPlatformPackage();
    /**
     * <code>string platform_package = 2;</code>
     */
    com.google.protobuf.ByteString
        getPlatformPackageBytes();

    /**
     * <code>string architecture = 3;</code>
     */
    java.lang.String getArchitecture();
    /**
     * <code>string architecture = 3;</code>
     */
    com.google.protobuf.ByteString
        getArchitectureBytes();

    /**
     * <code>string version = 4;</code>
     */
    java.lang.String getVersion();
    /**
     * <code>string version = 4;</code>
     */
    com.google.protobuf.ByteString
        getVersionBytes();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.PlatformDownloadReq}
   */
  public  static final class PlatformDownloadReq extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.PlatformDownloadReq)
      PlatformDownloadReqOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PlatformDownloadReq.newBuilder() to construct.
    private PlatformDownloadReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PlatformDownloadReq() {
      platformPackage_ = "";
      architecture_ = "";
      version_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PlatformDownloadReq(
        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();

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

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

              version_ = 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.Core.internal_static_cc_arduino_cli_commands_PlatformDownloadReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformDownloadReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Core.PlatformDownloadReq.class, cc.arduino.cli.commands.Core.PlatformDownloadReq.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 PLATFORM_PACKAGE_FIELD_NUMBER = 2;
    private volatile java.lang.Object platformPackage_;
    /**
     * <code>string platform_package = 2;</code>
     */
    public java.lang.String getPlatformPackage() {
      java.lang.Object ref = platformPackage_;
      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();
        platformPackage_ = s;
        return s;
      }
    }
    /**
     * <code>string platform_package = 2;</code>
     */
    public com.google.protobuf.ByteString
        getPlatformPackageBytes() {
      java.lang.Object ref = platformPackage_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        platformPackage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ARCHITECTURE_FIELD_NUMBER = 3;
    private volatile java.lang.Object architecture_;
    /**
     * <code>string architecture = 3;</code>
     */
    public java.lang.String getArchitecture() {
      java.lang.Object ref = architecture_;
      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();
        architecture_ = s;
        return s;
      }
    }
    /**
     * <code>string architecture = 3;</code>
     */
    public com.google.protobuf.ByteString
        getArchitectureBytes() {
      java.lang.Object ref = architecture_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        architecture_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 4;
    private volatile java.lang.Object version_;
    /**
     * <code>string version = 4;</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 = 4;</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;
      }
    }

    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 (!getPlatformPackageBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, platformPackage_);
      }
      if (!getArchitectureBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, architecture_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, version_);
      }
      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 (!getPlatformPackageBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, platformPackage_);
      }
      if (!getArchitectureBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, architecture_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, version_);
      }
      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.Core.PlatformDownloadReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.PlatformDownloadReq other = (cc.arduino.cli.commands.Core.PlatformDownloadReq) obj;

      if (hasInstance() != other.hasInstance()) return false;
      if (hasInstance()) {
        if (!getInstance()
            .equals(other.getInstance())) return false;
      }
      if (!getPlatformPackage()
          .equals(other.getPlatformPackage())) return false;
      if (!getArchitecture()
          .equals(other.getArchitecture())) return false;
      if (!getVersion()
          .equals(other.getVersion())) 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) + PLATFORM_PACKAGE_FIELD_NUMBER;
      hash = (53 * hash) + getPlatformPackage().hashCode();
      hash = (37 * hash) + ARCHITECTURE_FIELD_NUMBER;
      hash = (53 * hash) + getArchitecture().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Core.PlatformDownloadReq parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadReq 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.Core.PlatformDownloadReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadReq 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.Core.PlatformDownloadReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadReq 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.Core.PlatformDownloadReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadReq 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.Core.PlatformDownloadReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadReq 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.Core.PlatformDownloadReq 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.PlatformDownloadReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.PlatformDownloadReq)
        cc.arduino.cli.commands.Core.PlatformDownloadReqOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformDownloadReq_descriptor;
      }

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

      // Construct using cc.arduino.cli.commands.Core.PlatformDownloadReq.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;
        }
        platformPackage_ = "";

        architecture_ = "";

        version_ = "";

        return this;
      }

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.PlatformDownloadReq buildPartial() {
        cc.arduino.cli.commands.Core.PlatformDownloadReq result = new cc.arduino.cli.commands.Core.PlatformDownloadReq(this);
        if (instanceBuilder_ == null) {
          result.instance_ = instance_;
        } else {
          result.instance_ = instanceBuilder_.build();
        }
        result.platformPackage_ = platformPackage_;
        result.architecture_ = architecture_;
        result.version_ = version_;
        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.Core.PlatformDownloadReq) {
          return mergeFrom((cc.arduino.cli.commands.Core.PlatformDownloadReq)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.PlatformDownloadReq other) {
        if (other == cc.arduino.cli.commands.Core.PlatformDownloadReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (!other.getPlatformPackage().isEmpty()) {
          platformPackage_ = other.platformPackage_;
          onChanged();
        }
        if (!other.getArchitecture().isEmpty()) {
          architecture_ = other.architecture_;
          onChanged();
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          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.Core.PlatformDownloadReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.PlatformDownloadReq) 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 platformPackage_ = "";
      /**
       * <code>string platform_package = 2;</code>
       */
      public java.lang.String getPlatformPackage() {
        java.lang.Object ref = platformPackage_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          platformPackage_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public com.google.protobuf.ByteString
          getPlatformPackageBytes() {
        java.lang.Object ref = platformPackage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          platformPackage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public Builder setPlatformPackage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        platformPackage_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public Builder clearPlatformPackage() {
        
        platformPackage_ = getDefaultInstance().getPlatformPackage();
        onChanged();
        return this;
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public Builder setPlatformPackageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        platformPackage_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object architecture_ = "";
      /**
       * <code>string architecture = 3;</code>
       */
      public java.lang.String getArchitecture() {
        java.lang.Object ref = architecture_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          architecture_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public com.google.protobuf.ByteString
          getArchitectureBytes() {
        java.lang.Object ref = architecture_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          architecture_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public Builder setArchitecture(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        architecture_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public Builder clearArchitecture() {
        
        architecture_ = getDefaultInstance().getArchitecture();
        onChanged();
        return this;
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public Builder setArchitectureBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        architecture_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object version_ = "";
      /**
       * <code>string version = 4;</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 = 4;</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 = 4;</code>
       */
      public Builder setVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string version = 4;</code>
       */
      public Builder clearVersion() {
        
        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      /**
       * <code>string version = 4;</code>
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        version_ = 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.PlatformDownloadReq)
    }

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

    public static cc.arduino.cli.commands.Core.PlatformDownloadReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    boolean hasProgress();
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    cc.arduino.cli.commands.Common.DownloadProgress getProgress();
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    cc.arduino.cli.commands.Common.DownloadProgressOrBuilder getProgressOrBuilder();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.PlatformDownloadResp}
   */
  public  static final class PlatformDownloadResp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.PlatformDownloadResp)
      PlatformDownloadRespOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PlatformDownloadResp.newBuilder() to construct.
    private PlatformDownloadResp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PlatformDownloadResp() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PlatformDownloadResp(
        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.DownloadProgress.Builder subBuilder = null;
              if (progress_ != null) {
                subBuilder = progress_.toBuilder();
              }
              progress_ = input.readMessage(cc.arduino.cli.commands.Common.DownloadProgress.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(progress_);
                progress_ = 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.Core.internal_static_cc_arduino_cli_commands_PlatformDownloadResp_descriptor;
    }

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

    public static final int PROGRESS_FIELD_NUMBER = 1;
    private cc.arduino.cli.commands.Common.DownloadProgress progress_;
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    public boolean hasProgress() {
      return progress_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    public cc.arduino.cli.commands.Common.DownloadProgress getProgress() {
      return progress_ == null ? cc.arduino.cli.commands.Common.DownloadProgress.getDefaultInstance() : progress_;
    }
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    public cc.arduino.cli.commands.Common.DownloadProgressOrBuilder getProgressOrBuilder() {
      return getProgress();
    }

    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 (progress_ != null) {
        output.writeMessage(1, getProgress());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (progress_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getProgress());
      }
      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.Core.PlatformDownloadResp)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.PlatformDownloadResp other = (cc.arduino.cli.commands.Core.PlatformDownloadResp) obj;

      if (hasProgress() != other.hasProgress()) return false;
      if (hasProgress()) {
        if (!getProgress()
            .equals(other.getProgress())) 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 (hasProgress()) {
        hash = (37 * hash) + PROGRESS_FIELD_NUMBER;
        hash = (53 * hash) + getProgress().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Core.PlatformDownloadResp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadResp 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.Core.PlatformDownloadResp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadResp 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.Core.PlatformDownloadResp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadResp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadResp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadResp 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.Core.PlatformDownloadResp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadResp 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.Core.PlatformDownloadResp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformDownloadResp 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.Core.PlatformDownloadResp 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.PlatformDownloadResp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.PlatformDownloadResp)
        cc.arduino.cli.commands.Core.PlatformDownloadRespOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformDownloadResp_descriptor;
      }

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

      // Construct using cc.arduino.cli.commands.Core.PlatformDownloadResp.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 (progressBuilder_ == null) {
          progress_ = null;
        } else {
          progress_ = null;
          progressBuilder_ = null;
        }
        return this;
      }

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.PlatformDownloadResp buildPartial() {
        cc.arduino.cli.commands.Core.PlatformDownloadResp result = new cc.arduino.cli.commands.Core.PlatformDownloadResp(this);
        if (progressBuilder_ == null) {
          result.progress_ = progress_;
        } else {
          result.progress_ = progressBuilder_.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.Core.PlatformDownloadResp) {
          return mergeFrom((cc.arduino.cli.commands.Core.PlatformDownloadResp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.PlatformDownloadResp other) {
        if (other == cc.arduino.cli.commands.Core.PlatformDownloadResp.getDefaultInstance()) return this;
        if (other.hasProgress()) {
          mergeProgress(other.getProgress());
        }
        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.Core.PlatformDownloadResp parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.PlatformDownloadResp) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private cc.arduino.cli.commands.Common.DownloadProgress progress_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.DownloadProgress, cc.arduino.cli.commands.Common.DownloadProgress.Builder, cc.arduino.cli.commands.Common.DownloadProgressOrBuilder> progressBuilder_;
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public boolean hasProgress() {
        return progressBuilder_ != null || progress_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public cc.arduino.cli.commands.Common.DownloadProgress getProgress() {
        if (progressBuilder_ == null) {
          return progress_ == null ? cc.arduino.cli.commands.Common.DownloadProgress.getDefaultInstance() : progress_;
        } else {
          return progressBuilder_.getMessage();
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public Builder setProgress(cc.arduino.cli.commands.Common.DownloadProgress value) {
        if (progressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          progress_ = value;
          onChanged();
        } else {
          progressBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public Builder setProgress(
          cc.arduino.cli.commands.Common.DownloadProgress.Builder builderForValue) {
        if (progressBuilder_ == null) {
          progress_ = builderForValue.build();
          onChanged();
        } else {
          progressBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public Builder mergeProgress(cc.arduino.cli.commands.Common.DownloadProgress value) {
        if (progressBuilder_ == null) {
          if (progress_ != null) {
            progress_ =
              cc.arduino.cli.commands.Common.DownloadProgress.newBuilder(progress_).mergeFrom(value).buildPartial();
          } else {
            progress_ = value;
          }
          onChanged();
        } else {
          progressBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public Builder clearProgress() {
        if (progressBuilder_ == null) {
          progress_ = null;
          onChanged();
        } else {
          progress_ = null;
          progressBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public cc.arduino.cli.commands.Common.DownloadProgress.Builder getProgressBuilder() {
        
        onChanged();
        return getProgressFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public cc.arduino.cli.commands.Common.DownloadProgressOrBuilder getProgressOrBuilder() {
        if (progressBuilder_ != null) {
          return progressBuilder_.getMessageOrBuilder();
        } else {
          return progress_ == null ?
              cc.arduino.cli.commands.Common.DownloadProgress.getDefaultInstance() : progress_;
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.DownloadProgress, cc.arduino.cli.commands.Common.DownloadProgress.Builder, cc.arduino.cli.commands.Common.DownloadProgressOrBuilder> 
          getProgressFieldBuilder() {
        if (progressBuilder_ == null) {
          progressBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cc.arduino.cli.commands.Common.DownloadProgress, cc.arduino.cli.commands.Common.DownloadProgress.Builder, cc.arduino.cli.commands.Common.DownloadProgressOrBuilder>(
                  getProgress(),
                  getParentForChildren(),
                  isClean());
          progress_ = null;
        }
        return progressBuilder_;
      }
      @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.PlatformDownloadResp)
    }

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

    public static cc.arduino.cli.commands.Core.PlatformDownloadResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface PlatformUninstallReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.PlatformUninstallReq)
      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 platform_package = 2;</code>
     */
    java.lang.String getPlatformPackage();
    /**
     * <code>string platform_package = 2;</code>
     */
    com.google.protobuf.ByteString
        getPlatformPackageBytes();

    /**
     * <code>string architecture = 3;</code>
     */
    java.lang.String getArchitecture();
    /**
     * <code>string architecture = 3;</code>
     */
    com.google.protobuf.ByteString
        getArchitectureBytes();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.PlatformUninstallReq}
   */
  public  static final class PlatformUninstallReq extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.PlatformUninstallReq)
      PlatformUninstallReqOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PlatformUninstallReq.newBuilder() to construct.
    private PlatformUninstallReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PlatformUninstallReq() {
      platformPackage_ = "";
      architecture_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PlatformUninstallReq(
        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();

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

              architecture_ = 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.Core.internal_static_cc_arduino_cli_commands_PlatformUninstallReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformUninstallReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Core.PlatformUninstallReq.class, cc.arduino.cli.commands.Core.PlatformUninstallReq.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 PLATFORM_PACKAGE_FIELD_NUMBER = 2;
    private volatile java.lang.Object platformPackage_;
    /**
     * <code>string platform_package = 2;</code>
     */
    public java.lang.String getPlatformPackage() {
      java.lang.Object ref = platformPackage_;
      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();
        platformPackage_ = s;
        return s;
      }
    }
    /**
     * <code>string platform_package = 2;</code>
     */
    public com.google.protobuf.ByteString
        getPlatformPackageBytes() {
      java.lang.Object ref = platformPackage_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        platformPackage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ARCHITECTURE_FIELD_NUMBER = 3;
    private volatile java.lang.Object architecture_;
    /**
     * <code>string architecture = 3;</code>
     */
    public java.lang.String getArchitecture() {
      java.lang.Object ref = architecture_;
      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();
        architecture_ = s;
        return s;
      }
    }
    /**
     * <code>string architecture = 3;</code>
     */
    public com.google.protobuf.ByteString
        getArchitectureBytes() {
      java.lang.Object ref = architecture_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        architecture_ = 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 (!getPlatformPackageBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, platformPackage_);
      }
      if (!getArchitectureBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, architecture_);
      }
      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 (!getPlatformPackageBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, platformPackage_);
      }
      if (!getArchitectureBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, architecture_);
      }
      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.Core.PlatformUninstallReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.PlatformUninstallReq other = (cc.arduino.cli.commands.Core.PlatformUninstallReq) obj;

      if (hasInstance() != other.hasInstance()) return false;
      if (hasInstance()) {
        if (!getInstance()
            .equals(other.getInstance())) return false;
      }
      if (!getPlatformPackage()
          .equals(other.getPlatformPackage())) return false;
      if (!getArchitecture()
          .equals(other.getArchitecture())) 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) + PLATFORM_PACKAGE_FIELD_NUMBER;
      hash = (53 * hash) + getPlatformPackage().hashCode();
      hash = (37 * hash) + ARCHITECTURE_FIELD_NUMBER;
      hash = (53 * hash) + getArchitecture().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Core.PlatformUninstallReq parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallReq 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.Core.PlatformUninstallReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallReq 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.Core.PlatformUninstallReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallReq 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.Core.PlatformUninstallReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallReq 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.Core.PlatformUninstallReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallReq 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.Core.PlatformUninstallReq 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.PlatformUninstallReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.PlatformUninstallReq)
        cc.arduino.cli.commands.Core.PlatformUninstallReqOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformUninstallReq_descriptor;
      }

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

      // Construct using cc.arduino.cli.commands.Core.PlatformUninstallReq.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;
        }
        platformPackage_ = "";

        architecture_ = "";

        return this;
      }

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.PlatformUninstallReq buildPartial() {
        cc.arduino.cli.commands.Core.PlatformUninstallReq result = new cc.arduino.cli.commands.Core.PlatformUninstallReq(this);
        if (instanceBuilder_ == null) {
          result.instance_ = instance_;
        } else {
          result.instance_ = instanceBuilder_.build();
        }
        result.platformPackage_ = platformPackage_;
        result.architecture_ = architecture_;
        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.Core.PlatformUninstallReq) {
          return mergeFrom((cc.arduino.cli.commands.Core.PlatformUninstallReq)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.PlatformUninstallReq other) {
        if (other == cc.arduino.cli.commands.Core.PlatformUninstallReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (!other.getPlatformPackage().isEmpty()) {
          platformPackage_ = other.platformPackage_;
          onChanged();
        }
        if (!other.getArchitecture().isEmpty()) {
          architecture_ = other.architecture_;
          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.Core.PlatformUninstallReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.PlatformUninstallReq) 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 platformPackage_ = "";
      /**
       * <code>string platform_package = 2;</code>
       */
      public java.lang.String getPlatformPackage() {
        java.lang.Object ref = platformPackage_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          platformPackage_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public com.google.protobuf.ByteString
          getPlatformPackageBytes() {
        java.lang.Object ref = platformPackage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          platformPackage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public Builder setPlatformPackage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        platformPackage_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public Builder clearPlatformPackage() {
        
        platformPackage_ = getDefaultInstance().getPlatformPackage();
        onChanged();
        return this;
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public Builder setPlatformPackageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        platformPackage_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object architecture_ = "";
      /**
       * <code>string architecture = 3;</code>
       */
      public java.lang.String getArchitecture() {
        java.lang.Object ref = architecture_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          architecture_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public com.google.protobuf.ByteString
          getArchitectureBytes() {
        java.lang.Object ref = architecture_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          architecture_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public Builder setArchitecture(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        architecture_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public Builder clearArchitecture() {
        
        architecture_ = getDefaultInstance().getArchitecture();
        onChanged();
        return this;
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public Builder setArchitectureBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        architecture_ = 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.PlatformUninstallReq)
    }

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

    public static cc.arduino.cli.commands.Core.PlatformUninstallReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface PlatformUninstallRespOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.PlatformUninstallResp)
      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.PlatformUninstallResp}
   */
  public  static final class PlatformUninstallResp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.PlatformUninstallResp)
      PlatformUninstallRespOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PlatformUninstallResp.newBuilder() to construct.
    private PlatformUninstallResp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PlatformUninstallResp() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PlatformUninstallResp(
        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.Core.internal_static_cc_arduino_cli_commands_PlatformUninstallResp_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformUninstallResp_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Core.PlatformUninstallResp.class, cc.arduino.cli.commands.Core.PlatformUninstallResp.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.Core.PlatformUninstallResp)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.PlatformUninstallResp other = (cc.arduino.cli.commands.Core.PlatformUninstallResp) 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.Core.PlatformUninstallResp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallResp 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.Core.PlatformUninstallResp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallResp 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.Core.PlatformUninstallResp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallResp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallResp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallResp 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.Core.PlatformUninstallResp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallResp 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.Core.PlatformUninstallResp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformUninstallResp 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.Core.PlatformUninstallResp 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.PlatformUninstallResp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.PlatformUninstallResp)
        cc.arduino.cli.commands.Core.PlatformUninstallRespOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformUninstallResp_descriptor;
      }

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

      // Construct using cc.arduino.cli.commands.Core.PlatformUninstallResp.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.Core.internal_static_cc_arduino_cli_commands_PlatformUninstallResp_descriptor;
      }

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.PlatformUninstallResp buildPartial() {
        cc.arduino.cli.commands.Core.PlatformUninstallResp result = new cc.arduino.cli.commands.Core.PlatformUninstallResp(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.Core.PlatformUninstallResp) {
          return mergeFrom((cc.arduino.cli.commands.Core.PlatformUninstallResp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.PlatformUninstallResp other) {
        if (other == cc.arduino.cli.commands.Core.PlatformUninstallResp.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.Core.PlatformUninstallResp parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.PlatformUninstallResp) 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.PlatformUninstallResp)
    }

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

    public static cc.arduino.cli.commands.Core.PlatformUninstallResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface PlatformUpgradeReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.PlatformUpgradeReq)
      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 platform_package = 2;</code>
     */
    java.lang.String getPlatformPackage();
    /**
     * <code>string platform_package = 2;</code>
     */
    com.google.protobuf.ByteString
        getPlatformPackageBytes();

    /**
     * <code>string architecture = 3;</code>
     */
    java.lang.String getArchitecture();
    /**
     * <code>string architecture = 3;</code>
     */
    com.google.protobuf.ByteString
        getArchitectureBytes();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.PlatformUpgradeReq}
   */
  public  static final class PlatformUpgradeReq extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.PlatformUpgradeReq)
      PlatformUpgradeReqOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PlatformUpgradeReq.newBuilder() to construct.
    private PlatformUpgradeReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PlatformUpgradeReq() {
      platformPackage_ = "";
      architecture_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PlatformUpgradeReq(
        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();

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

              architecture_ = 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.Core.internal_static_cc_arduino_cli_commands_PlatformUpgradeReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformUpgradeReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Core.PlatformUpgradeReq.class, cc.arduino.cli.commands.Core.PlatformUpgradeReq.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 PLATFORM_PACKAGE_FIELD_NUMBER = 2;
    private volatile java.lang.Object platformPackage_;
    /**
     * <code>string platform_package = 2;</code>
     */
    public java.lang.String getPlatformPackage() {
      java.lang.Object ref = platformPackage_;
      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();
        platformPackage_ = s;
        return s;
      }
    }
    /**
     * <code>string platform_package = 2;</code>
     */
    public com.google.protobuf.ByteString
        getPlatformPackageBytes() {
      java.lang.Object ref = platformPackage_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        platformPackage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ARCHITECTURE_FIELD_NUMBER = 3;
    private volatile java.lang.Object architecture_;
    /**
     * <code>string architecture = 3;</code>
     */
    public java.lang.String getArchitecture() {
      java.lang.Object ref = architecture_;
      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();
        architecture_ = s;
        return s;
      }
    }
    /**
     * <code>string architecture = 3;</code>
     */
    public com.google.protobuf.ByteString
        getArchitectureBytes() {
      java.lang.Object ref = architecture_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        architecture_ = 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 (!getPlatformPackageBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, platformPackage_);
      }
      if (!getArchitectureBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, architecture_);
      }
      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 (!getPlatformPackageBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, platformPackage_);
      }
      if (!getArchitectureBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, architecture_);
      }
      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.Core.PlatformUpgradeReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.PlatformUpgradeReq other = (cc.arduino.cli.commands.Core.PlatformUpgradeReq) obj;

      if (hasInstance() != other.hasInstance()) return false;
      if (hasInstance()) {
        if (!getInstance()
            .equals(other.getInstance())) return false;
      }
      if (!getPlatformPackage()
          .equals(other.getPlatformPackage())) return false;
      if (!getArchitecture()
          .equals(other.getArchitecture())) 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) + PLATFORM_PACKAGE_FIELD_NUMBER;
      hash = (53 * hash) + getPlatformPackage().hashCode();
      hash = (37 * hash) + ARCHITECTURE_FIELD_NUMBER;
      hash = (53 * hash) + getArchitecture().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Core.PlatformUpgradeReq parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeReq 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.Core.PlatformUpgradeReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeReq 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.Core.PlatformUpgradeReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeReq 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.Core.PlatformUpgradeReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeReq 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.Core.PlatformUpgradeReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeReq 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.Core.PlatformUpgradeReq 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.PlatformUpgradeReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.PlatformUpgradeReq)
        cc.arduino.cli.commands.Core.PlatformUpgradeReqOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformUpgradeReq_descriptor;
      }

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

      // Construct using cc.arduino.cli.commands.Core.PlatformUpgradeReq.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;
        }
        platformPackage_ = "";

        architecture_ = "";

        return this;
      }

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.PlatformUpgradeReq buildPartial() {
        cc.arduino.cli.commands.Core.PlatformUpgradeReq result = new cc.arduino.cli.commands.Core.PlatformUpgradeReq(this);
        if (instanceBuilder_ == null) {
          result.instance_ = instance_;
        } else {
          result.instance_ = instanceBuilder_.build();
        }
        result.platformPackage_ = platformPackage_;
        result.architecture_ = architecture_;
        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.Core.PlatformUpgradeReq) {
          return mergeFrom((cc.arduino.cli.commands.Core.PlatformUpgradeReq)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.PlatformUpgradeReq other) {
        if (other == cc.arduino.cli.commands.Core.PlatformUpgradeReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (!other.getPlatformPackage().isEmpty()) {
          platformPackage_ = other.platformPackage_;
          onChanged();
        }
        if (!other.getArchitecture().isEmpty()) {
          architecture_ = other.architecture_;
          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.Core.PlatformUpgradeReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.PlatformUpgradeReq) 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 platformPackage_ = "";
      /**
       * <code>string platform_package = 2;</code>
       */
      public java.lang.String getPlatformPackage() {
        java.lang.Object ref = platformPackage_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          platformPackage_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public com.google.protobuf.ByteString
          getPlatformPackageBytes() {
        java.lang.Object ref = platformPackage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          platformPackage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public Builder setPlatformPackage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        platformPackage_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public Builder clearPlatformPackage() {
        
        platformPackage_ = getDefaultInstance().getPlatformPackage();
        onChanged();
        return this;
      }
      /**
       * <code>string platform_package = 2;</code>
       */
      public Builder setPlatformPackageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        platformPackage_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object architecture_ = "";
      /**
       * <code>string architecture = 3;</code>
       */
      public java.lang.String getArchitecture() {
        java.lang.Object ref = architecture_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          architecture_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public com.google.protobuf.ByteString
          getArchitectureBytes() {
        java.lang.Object ref = architecture_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          architecture_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public Builder setArchitecture(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        architecture_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public Builder clearArchitecture() {
        
        architecture_ = getDefaultInstance().getArchitecture();
        onChanged();
        return this;
      }
      /**
       * <code>string architecture = 3;</code>
       */
      public Builder setArchitectureBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        architecture_ = 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.PlatformUpgradeReq)
    }

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

    public static cc.arduino.cli.commands.Core.PlatformUpgradeReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    boolean hasProgress();
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    cc.arduino.cli.commands.Common.DownloadProgress getProgress();
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    cc.arduino.cli.commands.Common.DownloadProgressOrBuilder getProgressOrBuilder();

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

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PlatformUpgradeResp(
        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.DownloadProgress.Builder subBuilder = null;
              if (progress_ != null) {
                subBuilder = progress_.toBuilder();
              }
              progress_ = input.readMessage(cc.arduino.cli.commands.Common.DownloadProgress.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(progress_);
                progress_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              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.Core.internal_static_cc_arduino_cli_commands_PlatformUpgradeResp_descriptor;
    }

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

    public static final int PROGRESS_FIELD_NUMBER = 1;
    private cc.arduino.cli.commands.Common.DownloadProgress progress_;
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    public boolean hasProgress() {
      return progress_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    public cc.arduino.cli.commands.Common.DownloadProgress getProgress() {
      return progress_ == null ? cc.arduino.cli.commands.Common.DownloadProgress.getDefaultInstance() : progress_;
    }
    /**
     * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
     */
    public cc.arduino.cli.commands.Common.DownloadProgressOrBuilder getProgressOrBuilder() {
      return getProgress();
    }

    public static final int TASK_PROGRESS_FIELD_NUMBER = 2;
    private cc.arduino.cli.commands.Common.TaskProgress taskProgress_;
    /**
     * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 2;</code>
     */
    public boolean hasTaskProgress() {
      return taskProgress_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 2;</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 = 2;</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 (progress_ != null) {
        output.writeMessage(1, getProgress());
      }
      if (taskProgress_ != null) {
        output.writeMessage(2, getTaskProgress());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (progress_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getProgress());
      }
      if (taskProgress_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, 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.Core.PlatformUpgradeResp)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.PlatformUpgradeResp other = (cc.arduino.cli.commands.Core.PlatformUpgradeResp) obj;

      if (hasProgress() != other.hasProgress()) return false;
      if (hasProgress()) {
        if (!getProgress()
            .equals(other.getProgress())) return false;
      }
      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 (hasProgress()) {
        hash = (37 * hash) + PROGRESS_FIELD_NUMBER;
        hash = (53 * hash) + getProgress().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.Core.PlatformUpgradeResp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeResp 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.Core.PlatformUpgradeResp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeResp 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.Core.PlatformUpgradeResp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeResp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeResp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeResp 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.Core.PlatformUpgradeResp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeResp 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.Core.PlatformUpgradeResp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformUpgradeResp 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.Core.PlatformUpgradeResp 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.PlatformUpgradeResp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.PlatformUpgradeResp)
        cc.arduino.cli.commands.Core.PlatformUpgradeRespOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformUpgradeResp_descriptor;
      }

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

      // Construct using cc.arduino.cli.commands.Core.PlatformUpgradeResp.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 (progressBuilder_ == null) {
          progress_ = null;
        } else {
          progress_ = null;
          progressBuilder_ = null;
        }
        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.Core.internal_static_cc_arduino_cli_commands_PlatformUpgradeResp_descriptor;
      }

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.PlatformUpgradeResp buildPartial() {
        cc.arduino.cli.commands.Core.PlatformUpgradeResp result = new cc.arduino.cli.commands.Core.PlatformUpgradeResp(this);
        if (progressBuilder_ == null) {
          result.progress_ = progress_;
        } else {
          result.progress_ = progressBuilder_.build();
        }
        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.Core.PlatformUpgradeResp) {
          return mergeFrom((cc.arduino.cli.commands.Core.PlatformUpgradeResp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.PlatformUpgradeResp other) {
        if (other == cc.arduino.cli.commands.Core.PlatformUpgradeResp.getDefaultInstance()) return this;
        if (other.hasProgress()) {
          mergeProgress(other.getProgress());
        }
        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.Core.PlatformUpgradeResp parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.PlatformUpgradeResp) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private cc.arduino.cli.commands.Common.DownloadProgress progress_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.DownloadProgress, cc.arduino.cli.commands.Common.DownloadProgress.Builder, cc.arduino.cli.commands.Common.DownloadProgressOrBuilder> progressBuilder_;
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public boolean hasProgress() {
        return progressBuilder_ != null || progress_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public cc.arduino.cli.commands.Common.DownloadProgress getProgress() {
        if (progressBuilder_ == null) {
          return progress_ == null ? cc.arduino.cli.commands.Common.DownloadProgress.getDefaultInstance() : progress_;
        } else {
          return progressBuilder_.getMessage();
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public Builder setProgress(cc.arduino.cli.commands.Common.DownloadProgress value) {
        if (progressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          progress_ = value;
          onChanged();
        } else {
          progressBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public Builder setProgress(
          cc.arduino.cli.commands.Common.DownloadProgress.Builder builderForValue) {
        if (progressBuilder_ == null) {
          progress_ = builderForValue.build();
          onChanged();
        } else {
          progressBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public Builder mergeProgress(cc.arduino.cli.commands.Common.DownloadProgress value) {
        if (progressBuilder_ == null) {
          if (progress_ != null) {
            progress_ =
              cc.arduino.cli.commands.Common.DownloadProgress.newBuilder(progress_).mergeFrom(value).buildPartial();
          } else {
            progress_ = value;
          }
          onChanged();
        } else {
          progressBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public Builder clearProgress() {
        if (progressBuilder_ == null) {
          progress_ = null;
          onChanged();
        } else {
          progress_ = null;
          progressBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public cc.arduino.cli.commands.Common.DownloadProgress.Builder getProgressBuilder() {
        
        onChanged();
        return getProgressFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      public cc.arduino.cli.commands.Common.DownloadProgressOrBuilder getProgressOrBuilder() {
        if (progressBuilder_ != null) {
          return progressBuilder_.getMessageOrBuilder();
        } else {
          return progress_ == null ?
              cc.arduino.cli.commands.Common.DownloadProgress.getDefaultInstance() : progress_;
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadProgress progress = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Common.DownloadProgress, cc.arduino.cli.commands.Common.DownloadProgress.Builder, cc.arduino.cli.commands.Common.DownloadProgressOrBuilder> 
          getProgressFieldBuilder() {
        if (progressBuilder_ == null) {
          progressBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cc.arduino.cli.commands.Common.DownloadProgress, cc.arduino.cli.commands.Common.DownloadProgress.Builder, cc.arduino.cli.commands.Common.DownloadProgressOrBuilder>(
                  getProgress(),
                  getParentForChildren(),
                  isClean());
          progress_ = null;
        }
        return progressBuilder_;
      }

      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 = 2;</code>
       */
      public boolean hasTaskProgress() {
        return taskProgressBuilder_ != null || taskProgress_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 2;</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 = 2;</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 = 2;</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 = 2;</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 = 2;</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 = 2;</code>
       */
      public cc.arduino.cli.commands.Common.TaskProgress.Builder getTaskProgressBuilder() {
        
        onChanged();
        return getTaskProgressFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.TaskProgress task_progress = 2;</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 = 2;</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.PlatformUpgradeResp)
    }

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

    public static cc.arduino.cli.commands.Core.PlatformUpgradeResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface PlatformSearchReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.PlatformSearchReq)
      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 search_args = 2;</code>
     */
    java.lang.String getSearchArgs();
    /**
     * <code>string search_args = 2;</code>
     */
    com.google.protobuf.ByteString
        getSearchArgsBytes();

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

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PlatformSearchReq(
        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();

              searchArgs_ = s;
              break;
            }
            case 24: {

              allVersions_ = 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.Core.internal_static_cc_arduino_cli_commands_PlatformSearchReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformSearchReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Core.PlatformSearchReq.class, cc.arduino.cli.commands.Core.PlatformSearchReq.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 volatile java.lang.Object searchArgs_;
    /**
     * <code>string search_args = 2;</code>
     */
    public java.lang.String getSearchArgs() {
      java.lang.Object ref = searchArgs_;
      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();
        searchArgs_ = s;
        return s;
      }
    }
    /**
     * <code>string search_args = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSearchArgsBytes() {
      java.lang.Object ref = searchArgs_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        searchArgs_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ALL_VERSIONS_FIELD_NUMBER = 3;
    private boolean allVersions_;
    /**
     * <code>bool all_versions = 3;</code>
     */
    public boolean getAllVersions() {
      return allVersions_;
    }

    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 (!getSearchArgsBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, searchArgs_);
      }
      if (allVersions_ != false) {
        output.writeBool(3, allVersions_);
      }
      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 (!getSearchArgsBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, searchArgs_);
      }
      if (allVersions_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, allVersions_);
      }
      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.Core.PlatformSearchReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.PlatformSearchReq other = (cc.arduino.cli.commands.Core.PlatformSearchReq) obj;

      if (hasInstance() != other.hasInstance()) return false;
      if (hasInstance()) {
        if (!getInstance()
            .equals(other.getInstance())) return false;
      }
      if (!getSearchArgs()
          .equals(other.getSearchArgs())) return false;
      if (getAllVersions()
          != other.getAllVersions()) 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) + SEARCH_ARGS_FIELD_NUMBER;
      hash = (53 * hash) + getSearchArgs().hashCode();
      hash = (37 * hash) + ALL_VERSIONS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getAllVersions());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Core.PlatformSearchReq parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchReq 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.Core.PlatformSearchReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchReq 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.Core.PlatformSearchReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchReq 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.Core.PlatformSearchReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchReq 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.Core.PlatformSearchReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchReq 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.Core.PlatformSearchReq 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.PlatformSearchReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.PlatformSearchReq)
        cc.arduino.cli.commands.Core.PlatformSearchReqOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformSearchReq_descriptor;
      }

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

      // Construct using cc.arduino.cli.commands.Core.PlatformSearchReq.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_ = "";

        allVersions_ = false;

        return this;
      }

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.PlatformSearchReq buildPartial() {
        cc.arduino.cli.commands.Core.PlatformSearchReq result = new cc.arduino.cli.commands.Core.PlatformSearchReq(this);
        if (instanceBuilder_ == null) {
          result.instance_ = instance_;
        } else {
          result.instance_ = instanceBuilder_.build();
        }
        result.searchArgs_ = searchArgs_;
        result.allVersions_ = allVersions_;
        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.Core.PlatformSearchReq) {
          return mergeFrom((cc.arduino.cli.commands.Core.PlatformSearchReq)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.PlatformSearchReq other) {
        if (other == cc.arduino.cli.commands.Core.PlatformSearchReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (!other.getSearchArgs().isEmpty()) {
          searchArgs_ = other.searchArgs_;
          onChanged();
        }
        if (other.getAllVersions() != false) {
          setAllVersions(other.getAllVersions());
        }
        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.Core.PlatformSearchReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.PlatformSearchReq) 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 searchArgs_ = "";
      /**
       * <code>string search_args = 2;</code>
       */
      public java.lang.String getSearchArgs() {
        java.lang.Object ref = searchArgs_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          searchArgs_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string search_args = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSearchArgsBytes() {
        java.lang.Object ref = searchArgs_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          searchArgs_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string search_args = 2;</code>
       */
      public Builder setSearchArgs(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        searchArgs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string search_args = 2;</code>
       */
      public Builder clearSearchArgs() {
        
        searchArgs_ = getDefaultInstance().getSearchArgs();
        onChanged();
        return this;
      }
      /**
       * <code>string search_args = 2;</code>
       */
      public Builder setSearchArgsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        searchArgs_ = value;
        onChanged();
        return this;
      }

      private boolean allVersions_ ;
      /**
       * <code>bool all_versions = 3;</code>
       */
      public boolean getAllVersions() {
        return allVersions_;
      }
      /**
       * <code>bool all_versions = 3;</code>
       */
      public Builder setAllVersions(boolean value) {
        
        allVersions_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool all_versions = 3;</code>
       */
      public Builder clearAllVersions() {
        
        allVersions_ = 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.PlatformSearchReq)
    }

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

    public static cc.arduino.cli.commands.Core.PlatformSearchReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

    /**
     * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
     */
    java.util.List<cc.arduino.cli.commands.Core.Platform> 
        getSearchOutputList();
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
     */
    cc.arduino.cli.commands.Core.Platform getSearchOutput(int index);
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
     */
    int getSearchOutputCount();
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
     */
    java.util.List<? extends cc.arduino.cli.commands.Core.PlatformOrBuilder> 
        getSearchOutputOrBuilderList();
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
     */
    cc.arduino.cli.commands.Core.PlatformOrBuilder getSearchOutputOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.PlatformSearchResp}
   */
  public  static final class PlatformSearchResp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.PlatformSearchResp)
      PlatformSearchRespOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PlatformSearchResp.newBuilder() to construct.
    private PlatformSearchResp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PlatformSearchResp() {
      searchOutput_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PlatformSearchResp(
        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)) {
                searchOutput_ = new java.util.ArrayList<cc.arduino.cli.commands.Core.Platform>();
                mutable_bitField0_ |= 0x00000001;
              }
              searchOutput_.add(
                  input.readMessage(cc.arduino.cli.commands.Core.Platform.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)) {
          searchOutput_ = java.util.Collections.unmodifiableList(searchOutput_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformSearchResp_descriptor;
    }

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

    public static final int SEARCH_OUTPUT_FIELD_NUMBER = 1;
    private java.util.List<cc.arduino.cli.commands.Core.Platform> searchOutput_;
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
     */
    public java.util.List<cc.arduino.cli.commands.Core.Platform> getSearchOutputList() {
      return searchOutput_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
     */
    public java.util.List<? extends cc.arduino.cli.commands.Core.PlatformOrBuilder> 
        getSearchOutputOrBuilderList() {
      return searchOutput_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
     */
    public int getSearchOutputCount() {
      return searchOutput_.size();
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
     */
    public cc.arduino.cli.commands.Core.Platform getSearchOutput(int index) {
      return searchOutput_.get(index);
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
     */
    public cc.arduino.cli.commands.Core.PlatformOrBuilder getSearchOutputOrBuilder(
        int index) {
      return searchOutput_.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 < searchOutput_.size(); i++) {
        output.writeMessage(1, searchOutput_.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 < searchOutput_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, searchOutput_.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.Core.PlatformSearchResp)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.PlatformSearchResp other = (cc.arduino.cli.commands.Core.PlatformSearchResp) obj;

      if (!getSearchOutputList()
          .equals(other.getSearchOutputList())) 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 (getSearchOutputCount() > 0) {
        hash = (37 * hash) + SEARCH_OUTPUT_FIELD_NUMBER;
        hash = (53 * hash) + getSearchOutputList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Core.PlatformSearchResp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchResp 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.Core.PlatformSearchResp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchResp 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.Core.PlatformSearchResp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchResp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchResp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchResp 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.Core.PlatformSearchResp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchResp 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.Core.PlatformSearchResp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformSearchResp 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.Core.PlatformSearchResp 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.PlatformSearchResp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.PlatformSearchResp)
        cc.arduino.cli.commands.Core.PlatformSearchRespOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformSearchResp_descriptor;
      }

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

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

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

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.PlatformSearchResp buildPartial() {
        cc.arduino.cli.commands.Core.PlatformSearchResp result = new cc.arduino.cli.commands.Core.PlatformSearchResp(this);
        int from_bitField0_ = bitField0_;
        if (searchOutputBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            searchOutput_ = java.util.Collections.unmodifiableList(searchOutput_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.searchOutput_ = searchOutput_;
        } else {
          result.searchOutput_ = searchOutputBuilder_.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.Core.PlatformSearchResp) {
          return mergeFrom((cc.arduino.cli.commands.Core.PlatformSearchResp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.PlatformSearchResp other) {
        if (other == cc.arduino.cli.commands.Core.PlatformSearchResp.getDefaultInstance()) return this;
        if (searchOutputBuilder_ == null) {
          if (!other.searchOutput_.isEmpty()) {
            if (searchOutput_.isEmpty()) {
              searchOutput_ = other.searchOutput_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSearchOutputIsMutable();
              searchOutput_.addAll(other.searchOutput_);
            }
            onChanged();
          }
        } else {
          if (!other.searchOutput_.isEmpty()) {
            if (searchOutputBuilder_.isEmpty()) {
              searchOutputBuilder_.dispose();
              searchOutputBuilder_ = null;
              searchOutput_ = other.searchOutput_;
              bitField0_ = (bitField0_ & ~0x00000001);
              searchOutputBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSearchOutputFieldBuilder() : null;
            } else {
              searchOutputBuilder_.addAllMessages(other.searchOutput_);
            }
          }
        }
        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.Core.PlatformSearchResp parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.PlatformSearchResp) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<cc.arduino.cli.commands.Core.Platform> searchOutput_ =
        java.util.Collections.emptyList();
      private void ensureSearchOutputIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          searchOutput_ = new java.util.ArrayList<cc.arduino.cli.commands.Core.Platform>(searchOutput_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Core.Platform, cc.arduino.cli.commands.Core.Platform.Builder, cc.arduino.cli.commands.Core.PlatformOrBuilder> searchOutputBuilder_;

      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Core.Platform> getSearchOutputList() {
        if (searchOutputBuilder_ == null) {
          return java.util.Collections.unmodifiableList(searchOutput_);
        } else {
          return searchOutputBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public int getSearchOutputCount() {
        if (searchOutputBuilder_ == null) {
          return searchOutput_.size();
        } else {
          return searchOutputBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public cc.arduino.cli.commands.Core.Platform getSearchOutput(int index) {
        if (searchOutputBuilder_ == null) {
          return searchOutput_.get(index);
        } else {
          return searchOutputBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public Builder setSearchOutput(
          int index, cc.arduino.cli.commands.Core.Platform value) {
        if (searchOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSearchOutputIsMutable();
          searchOutput_.set(index, value);
          onChanged();
        } else {
          searchOutputBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public Builder setSearchOutput(
          int index, cc.arduino.cli.commands.Core.Platform.Builder builderForValue) {
        if (searchOutputBuilder_ == null) {
          ensureSearchOutputIsMutable();
          searchOutput_.set(index, builderForValue.build());
          onChanged();
        } else {
          searchOutputBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public Builder addSearchOutput(cc.arduino.cli.commands.Core.Platform value) {
        if (searchOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSearchOutputIsMutable();
          searchOutput_.add(value);
          onChanged();
        } else {
          searchOutputBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public Builder addSearchOutput(
          int index, cc.arduino.cli.commands.Core.Platform value) {
        if (searchOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSearchOutputIsMutable();
          searchOutput_.add(index, value);
          onChanged();
        } else {
          searchOutputBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public Builder addSearchOutput(
          cc.arduino.cli.commands.Core.Platform.Builder builderForValue) {
        if (searchOutputBuilder_ == null) {
          ensureSearchOutputIsMutable();
          searchOutput_.add(builderForValue.build());
          onChanged();
        } else {
          searchOutputBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public Builder addSearchOutput(
          int index, cc.arduino.cli.commands.Core.Platform.Builder builderForValue) {
        if (searchOutputBuilder_ == null) {
          ensureSearchOutputIsMutable();
          searchOutput_.add(index, builderForValue.build());
          onChanged();
        } else {
          searchOutputBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public Builder addAllSearchOutput(
          java.lang.Iterable<? extends cc.arduino.cli.commands.Core.Platform> values) {
        if (searchOutputBuilder_ == null) {
          ensureSearchOutputIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, searchOutput_);
          onChanged();
        } else {
          searchOutputBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public Builder clearSearchOutput() {
        if (searchOutputBuilder_ == null) {
          searchOutput_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          searchOutputBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public Builder removeSearchOutput(int index) {
        if (searchOutputBuilder_ == null) {
          ensureSearchOutputIsMutable();
          searchOutput_.remove(index);
          onChanged();
        } else {
          searchOutputBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public cc.arduino.cli.commands.Core.Platform.Builder getSearchOutputBuilder(
          int index) {
        return getSearchOutputFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public cc.arduino.cli.commands.Core.PlatformOrBuilder getSearchOutputOrBuilder(
          int index) {
        if (searchOutputBuilder_ == null) {
          return searchOutput_.get(index);  } else {
          return searchOutputBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public java.util.List<? extends cc.arduino.cli.commands.Core.PlatformOrBuilder> 
           getSearchOutputOrBuilderList() {
        if (searchOutputBuilder_ != null) {
          return searchOutputBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(searchOutput_);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public cc.arduino.cli.commands.Core.Platform.Builder addSearchOutputBuilder() {
        return getSearchOutputFieldBuilder().addBuilder(
            cc.arduino.cli.commands.Core.Platform.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public cc.arduino.cli.commands.Core.Platform.Builder addSearchOutputBuilder(
          int index) {
        return getSearchOutputFieldBuilder().addBuilder(
            index, cc.arduino.cli.commands.Core.Platform.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform search_output = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Core.Platform.Builder> 
           getSearchOutputBuilderList() {
        return getSearchOutputFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Core.Platform, cc.arduino.cli.commands.Core.Platform.Builder, cc.arduino.cli.commands.Core.PlatformOrBuilder> 
          getSearchOutputFieldBuilder() {
        if (searchOutputBuilder_ == null) {
          searchOutputBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              cc.arduino.cli.commands.Core.Platform, cc.arduino.cli.commands.Core.Platform.Builder, cc.arduino.cli.commands.Core.PlatformOrBuilder>(
                  searchOutput_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          searchOutput_ = null;
        }
        return searchOutputBuilder_;
      }
      @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.PlatformSearchResp)
    }

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

    public static cc.arduino.cli.commands.Core.PlatformSearchResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface PlatformListReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.PlatformListReq)
      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>bool updatable_only = 2;</code>
     */
    boolean getUpdatableOnly();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.PlatformListReq}
   */
  public  static final class PlatformListReq extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.PlatformListReq)
      PlatformListReqOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PlatformListReq.newBuilder() to construct.
    private PlatformListReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PlatformListReq() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PlatformListReq(
        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 16: {

              updatableOnly_ = 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.Core.internal_static_cc_arduino_cli_commands_PlatformListReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformListReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Core.PlatformListReq.class, cc.arduino.cli.commands.Core.PlatformListReq.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 UPDATABLE_ONLY_FIELD_NUMBER = 2;
    private boolean updatableOnly_;
    /**
     * <code>bool updatable_only = 2;</code>
     */
    public boolean getUpdatableOnly() {
      return updatableOnly_;
    }

    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 (updatableOnly_ != false) {
        output.writeBool(2, updatableOnly_);
      }
      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 (updatableOnly_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, updatableOnly_);
      }
      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.Core.PlatformListReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.PlatformListReq other = (cc.arduino.cli.commands.Core.PlatformListReq) obj;

      if (hasInstance() != other.hasInstance()) return false;
      if (hasInstance()) {
        if (!getInstance()
            .equals(other.getInstance())) return false;
      }
      if (getUpdatableOnly()
          != other.getUpdatableOnly()) 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) + UPDATABLE_ONLY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getUpdatableOnly());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Core.PlatformListReq parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformListReq 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.Core.PlatformListReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformListReq 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.Core.PlatformListReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformListReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.PlatformListReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformListReq 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.Core.PlatformListReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformListReq 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.Core.PlatformListReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformListReq 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.Core.PlatformListReq 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.PlatformListReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.PlatformListReq)
        cc.arduino.cli.commands.Core.PlatformListReqOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformListReq_descriptor;
      }

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

      // Construct using cc.arduino.cli.commands.Core.PlatformListReq.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;
        }
        updatableOnly_ = false;

        return this;
      }

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.PlatformListReq buildPartial() {
        cc.arduino.cli.commands.Core.PlatformListReq result = new cc.arduino.cli.commands.Core.PlatformListReq(this);
        if (instanceBuilder_ == null) {
          result.instance_ = instance_;
        } else {
          result.instance_ = instanceBuilder_.build();
        }
        result.updatableOnly_ = updatableOnly_;
        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.Core.PlatformListReq) {
          return mergeFrom((cc.arduino.cli.commands.Core.PlatformListReq)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.PlatformListReq other) {
        if (other == cc.arduino.cli.commands.Core.PlatformListReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (other.getUpdatableOnly() != false) {
          setUpdatableOnly(other.getUpdatableOnly());
        }
        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.Core.PlatformListReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.PlatformListReq) 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 boolean updatableOnly_ ;
      /**
       * <code>bool updatable_only = 2;</code>
       */
      public boolean getUpdatableOnly() {
        return updatableOnly_;
      }
      /**
       * <code>bool updatable_only = 2;</code>
       */
      public Builder setUpdatableOnly(boolean value) {
        
        updatableOnly_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool updatable_only = 2;</code>
       */
      public Builder clearUpdatableOnly() {
        
        updatableOnly_ = 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.PlatformListReq)
    }

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

    public static cc.arduino.cli.commands.Core.PlatformListReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

    /**
     * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
     */
    java.util.List<cc.arduino.cli.commands.Core.Platform> 
        getInstalledPlatformList();
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
     */
    cc.arduino.cli.commands.Core.Platform getInstalledPlatform(int index);
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
     */
    int getInstalledPlatformCount();
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
     */
    java.util.List<? extends cc.arduino.cli.commands.Core.PlatformOrBuilder> 
        getInstalledPlatformOrBuilderList();
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
     */
    cc.arduino.cli.commands.Core.PlatformOrBuilder getInstalledPlatformOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.PlatformListResp}
   */
  public  static final class PlatformListResp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.PlatformListResp)
      PlatformListRespOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PlatformListResp.newBuilder() to construct.
    private PlatformListResp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PlatformListResp() {
      installedPlatform_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PlatformListResp(
        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)) {
                installedPlatform_ = new java.util.ArrayList<cc.arduino.cli.commands.Core.Platform>();
                mutable_bitField0_ |= 0x00000001;
              }
              installedPlatform_.add(
                  input.readMessage(cc.arduino.cli.commands.Core.Platform.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)) {
          installedPlatform_ = java.util.Collections.unmodifiableList(installedPlatform_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformListResp_descriptor;
    }

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

    public static final int INSTALLED_PLATFORM_FIELD_NUMBER = 1;
    private java.util.List<cc.arduino.cli.commands.Core.Platform> installedPlatform_;
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
     */
    public java.util.List<cc.arduino.cli.commands.Core.Platform> getInstalledPlatformList() {
      return installedPlatform_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
     */
    public java.util.List<? extends cc.arduino.cli.commands.Core.PlatformOrBuilder> 
        getInstalledPlatformOrBuilderList() {
      return installedPlatform_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
     */
    public int getInstalledPlatformCount() {
      return installedPlatform_.size();
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
     */
    public cc.arduino.cli.commands.Core.Platform getInstalledPlatform(int index) {
      return installedPlatform_.get(index);
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
     */
    public cc.arduino.cli.commands.Core.PlatformOrBuilder getInstalledPlatformOrBuilder(
        int index) {
      return installedPlatform_.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 < installedPlatform_.size(); i++) {
        output.writeMessage(1, installedPlatform_.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 < installedPlatform_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, installedPlatform_.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.Core.PlatformListResp)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.PlatformListResp other = (cc.arduino.cli.commands.Core.PlatformListResp) obj;

      if (!getInstalledPlatformList()
          .equals(other.getInstalledPlatformList())) 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 (getInstalledPlatformCount() > 0) {
        hash = (37 * hash) + INSTALLED_PLATFORM_FIELD_NUMBER;
        hash = (53 * hash) + getInstalledPlatformList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cc.arduino.cli.commands.Core.PlatformListResp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformListResp 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.Core.PlatformListResp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformListResp 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.Core.PlatformListResp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.PlatformListResp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.PlatformListResp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformListResp 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.Core.PlatformListResp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformListResp 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.Core.PlatformListResp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.PlatformListResp 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.Core.PlatformListResp 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.PlatformListResp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.PlatformListResp)
        cc.arduino.cli.commands.Core.PlatformListRespOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_PlatformListResp_descriptor;
      }

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

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

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

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.PlatformListResp buildPartial() {
        cc.arduino.cli.commands.Core.PlatformListResp result = new cc.arduino.cli.commands.Core.PlatformListResp(this);
        int from_bitField0_ = bitField0_;
        if (installedPlatformBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            installedPlatform_ = java.util.Collections.unmodifiableList(installedPlatform_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.installedPlatform_ = installedPlatform_;
        } else {
          result.installedPlatform_ = installedPlatformBuilder_.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.Core.PlatformListResp) {
          return mergeFrom((cc.arduino.cli.commands.Core.PlatformListResp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.PlatformListResp other) {
        if (other == cc.arduino.cli.commands.Core.PlatformListResp.getDefaultInstance()) return this;
        if (installedPlatformBuilder_ == null) {
          if (!other.installedPlatform_.isEmpty()) {
            if (installedPlatform_.isEmpty()) {
              installedPlatform_ = other.installedPlatform_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureInstalledPlatformIsMutable();
              installedPlatform_.addAll(other.installedPlatform_);
            }
            onChanged();
          }
        } else {
          if (!other.installedPlatform_.isEmpty()) {
            if (installedPlatformBuilder_.isEmpty()) {
              installedPlatformBuilder_.dispose();
              installedPlatformBuilder_ = null;
              installedPlatform_ = other.installedPlatform_;
              bitField0_ = (bitField0_ & ~0x00000001);
              installedPlatformBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getInstalledPlatformFieldBuilder() : null;
            } else {
              installedPlatformBuilder_.addAllMessages(other.installedPlatform_);
            }
          }
        }
        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.Core.PlatformListResp parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.PlatformListResp) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<cc.arduino.cli.commands.Core.Platform> installedPlatform_ =
        java.util.Collections.emptyList();
      private void ensureInstalledPlatformIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          installedPlatform_ = new java.util.ArrayList<cc.arduino.cli.commands.Core.Platform>(installedPlatform_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Core.Platform, cc.arduino.cli.commands.Core.Platform.Builder, cc.arduino.cli.commands.Core.PlatformOrBuilder> installedPlatformBuilder_;

      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Core.Platform> getInstalledPlatformList() {
        if (installedPlatformBuilder_ == null) {
          return java.util.Collections.unmodifiableList(installedPlatform_);
        } else {
          return installedPlatformBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public int getInstalledPlatformCount() {
        if (installedPlatformBuilder_ == null) {
          return installedPlatform_.size();
        } else {
          return installedPlatformBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public cc.arduino.cli.commands.Core.Platform getInstalledPlatform(int index) {
        if (installedPlatformBuilder_ == null) {
          return installedPlatform_.get(index);
        } else {
          return installedPlatformBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public Builder setInstalledPlatform(
          int index, cc.arduino.cli.commands.Core.Platform value) {
        if (installedPlatformBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInstalledPlatformIsMutable();
          installedPlatform_.set(index, value);
          onChanged();
        } else {
          installedPlatformBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public Builder setInstalledPlatform(
          int index, cc.arduino.cli.commands.Core.Platform.Builder builderForValue) {
        if (installedPlatformBuilder_ == null) {
          ensureInstalledPlatformIsMutable();
          installedPlatform_.set(index, builderForValue.build());
          onChanged();
        } else {
          installedPlatformBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public Builder addInstalledPlatform(cc.arduino.cli.commands.Core.Platform value) {
        if (installedPlatformBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInstalledPlatformIsMutable();
          installedPlatform_.add(value);
          onChanged();
        } else {
          installedPlatformBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public Builder addInstalledPlatform(
          int index, cc.arduino.cli.commands.Core.Platform value) {
        if (installedPlatformBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInstalledPlatformIsMutable();
          installedPlatform_.add(index, value);
          onChanged();
        } else {
          installedPlatformBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public Builder addInstalledPlatform(
          cc.arduino.cli.commands.Core.Platform.Builder builderForValue) {
        if (installedPlatformBuilder_ == null) {
          ensureInstalledPlatformIsMutable();
          installedPlatform_.add(builderForValue.build());
          onChanged();
        } else {
          installedPlatformBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public Builder addInstalledPlatform(
          int index, cc.arduino.cli.commands.Core.Platform.Builder builderForValue) {
        if (installedPlatformBuilder_ == null) {
          ensureInstalledPlatformIsMutable();
          installedPlatform_.add(index, builderForValue.build());
          onChanged();
        } else {
          installedPlatformBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public Builder addAllInstalledPlatform(
          java.lang.Iterable<? extends cc.arduino.cli.commands.Core.Platform> values) {
        if (installedPlatformBuilder_ == null) {
          ensureInstalledPlatformIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, installedPlatform_);
          onChanged();
        } else {
          installedPlatformBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public Builder clearInstalledPlatform() {
        if (installedPlatformBuilder_ == null) {
          installedPlatform_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          installedPlatformBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public Builder removeInstalledPlatform(int index) {
        if (installedPlatformBuilder_ == null) {
          ensureInstalledPlatformIsMutable();
          installedPlatform_.remove(index);
          onChanged();
        } else {
          installedPlatformBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public cc.arduino.cli.commands.Core.Platform.Builder getInstalledPlatformBuilder(
          int index) {
        return getInstalledPlatformFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public cc.arduino.cli.commands.Core.PlatformOrBuilder getInstalledPlatformOrBuilder(
          int index) {
        if (installedPlatformBuilder_ == null) {
          return installedPlatform_.get(index);  } else {
          return installedPlatformBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public java.util.List<? extends cc.arduino.cli.commands.Core.PlatformOrBuilder> 
           getInstalledPlatformOrBuilderList() {
        if (installedPlatformBuilder_ != null) {
          return installedPlatformBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(installedPlatform_);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public cc.arduino.cli.commands.Core.Platform.Builder addInstalledPlatformBuilder() {
        return getInstalledPlatformFieldBuilder().addBuilder(
            cc.arduino.cli.commands.Core.Platform.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public cc.arduino.cli.commands.Core.Platform.Builder addInstalledPlatformBuilder(
          int index) {
        return getInstalledPlatformFieldBuilder().addBuilder(
            index, cc.arduino.cli.commands.Core.Platform.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Platform installed_platform = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Core.Platform.Builder> 
           getInstalledPlatformBuilderList() {
        return getInstalledPlatformFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Core.Platform, cc.arduino.cli.commands.Core.Platform.Builder, cc.arduino.cli.commands.Core.PlatformOrBuilder> 
          getInstalledPlatformFieldBuilder() {
        if (installedPlatformBuilder_ == null) {
          installedPlatformBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              cc.arduino.cli.commands.Core.Platform, cc.arduino.cli.commands.Core.Platform.Builder, cc.arduino.cli.commands.Core.PlatformOrBuilder>(
                  installedPlatform_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          installedPlatform_ = null;
        }
        return installedPlatformBuilder_;
      }
      @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.PlatformListResp)
    }

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

    public static cc.arduino.cli.commands.Core.PlatformListResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

    /**
     * <code>string ID = 1;</code>
     */
    java.lang.String getID();
    /**
     * <code>string ID = 1;</code>
     */
    com.google.protobuf.ByteString
        getIDBytes();

    /**
     * <code>string Installed = 2;</code>
     */
    java.lang.String getInstalled();
    /**
     * <code>string Installed = 2;</code>
     */
    com.google.protobuf.ByteString
        getInstalledBytes();

    /**
     * <code>string Latest = 3;</code>
     */
    java.lang.String getLatest();
    /**
     * <code>string Latest = 3;</code>
     */
    com.google.protobuf.ByteString
        getLatestBytes();

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

    /**
     * <code>string Maintainer = 5;</code>
     */
    java.lang.String getMaintainer();
    /**
     * <code>string Maintainer = 5;</code>
     */
    com.google.protobuf.ByteString
        getMaintainerBytes();

    /**
     * <code>string Website = 6;</code>
     */
    java.lang.String getWebsite();
    /**
     * <code>string Website = 6;</code>
     */
    com.google.protobuf.ByteString
        getWebsiteBytes();

    /**
     * <code>string Email = 7;</code>
     */
    java.lang.String getEmail();
    /**
     * <code>string Email = 7;</code>
     */
    com.google.protobuf.ByteString
        getEmailBytes();

    /**
     * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
     */
    java.util.List<cc.arduino.cli.commands.Core.Board> 
        getBoardsList();
    /**
     * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
     */
    cc.arduino.cli.commands.Core.Board getBoards(int index);
    /**
     * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
     */
    int getBoardsCount();
    /**
     * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
     */
    java.util.List<? extends cc.arduino.cli.commands.Core.BoardOrBuilder> 
        getBoardsOrBuilderList();
    /**
     * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
     */
    cc.arduino.cli.commands.Core.BoardOrBuilder getBoardsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.Platform}
   */
  public  static final class Platform extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.Platform)
      PlatformOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Platform.newBuilder() to construct.
    private Platform(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Platform() {
      iD_ = "";
      installed_ = "";
      latest_ = "";
      name_ = "";
      maintainer_ = "";
      website_ = "";
      email_ = "";
      boards_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Platform(
        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();

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

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

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

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

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

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

              email_ = s;
              break;
            }
            case 66: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                boards_ = new java.util.ArrayList<cc.arduino.cli.commands.Core.Board>();
                mutable_bitField0_ |= 0x00000001;
              }
              boards_.add(
                  input.readMessage(cc.arduino.cli.commands.Core.Board.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.Core.internal_static_cc_arduino_cli_commands_Platform_descriptor;
    }

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

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object iD_;
    /**
     * <code>string ID = 1;</code>
     */
    public java.lang.String getID() {
      java.lang.Object ref = iD_;
      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();
        iD_ = s;
        return s;
      }
    }
    /**
     * <code>string ID = 1;</code>
     */
    public com.google.protobuf.ByteString
        getIDBytes() {
      java.lang.Object ref = iD_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        iD_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INSTALLED_FIELD_NUMBER = 2;
    private volatile java.lang.Object installed_;
    /**
     * <code>string Installed = 2;</code>
     */
    public java.lang.String getInstalled() {
      java.lang.Object ref = installed_;
      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();
        installed_ = s;
        return s;
      }
    }
    /**
     * <code>string Installed = 2;</code>
     */
    public com.google.protobuf.ByteString
        getInstalledBytes() {
      java.lang.Object ref = installed_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        installed_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LATEST_FIELD_NUMBER = 3;
    private volatile java.lang.Object latest_;
    /**
     * <code>string Latest = 3;</code>
     */
    public java.lang.String getLatest() {
      java.lang.Object ref = latest_;
      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();
        latest_ = s;
        return s;
      }
    }
    /**
     * <code>string Latest = 3;</code>
     */
    public com.google.protobuf.ByteString
        getLatestBytes() {
      java.lang.Object ref = latest_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        latest_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 4;
    private volatile java.lang.Object name_;
    /**
     * <code>string Name = 4;</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 = 4;</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 MAINTAINER_FIELD_NUMBER = 5;
    private volatile java.lang.Object maintainer_;
    /**
     * <code>string Maintainer = 5;</code>
     */
    public java.lang.String getMaintainer() {
      java.lang.Object ref = maintainer_;
      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();
        maintainer_ = s;
        return s;
      }
    }
    /**
     * <code>string Maintainer = 5;</code>
     */
    public com.google.protobuf.ByteString
        getMaintainerBytes() {
      java.lang.Object ref = maintainer_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        maintainer_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WEBSITE_FIELD_NUMBER = 6;
    private volatile java.lang.Object website_;
    /**
     * <code>string Website = 6;</code>
     */
    public java.lang.String getWebsite() {
      java.lang.Object ref = website_;
      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();
        website_ = s;
        return s;
      }
    }
    /**
     * <code>string Website = 6;</code>
     */
    public com.google.protobuf.ByteString
        getWebsiteBytes() {
      java.lang.Object ref = website_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        website_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EMAIL_FIELD_NUMBER = 7;
    private volatile java.lang.Object email_;
    /**
     * <code>string Email = 7;</code>
     */
    public java.lang.String getEmail() {
      java.lang.Object ref = email_;
      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();
        email_ = s;
        return s;
      }
    }
    /**
     * <code>string Email = 7;</code>
     */
    public com.google.protobuf.ByteString
        getEmailBytes() {
      java.lang.Object ref = email_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        email_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BOARDS_FIELD_NUMBER = 8;
    private java.util.List<cc.arduino.cli.commands.Core.Board> boards_;
    /**
     * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
     */
    public java.util.List<cc.arduino.cli.commands.Core.Board> getBoardsList() {
      return boards_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
     */
    public java.util.List<? extends cc.arduino.cli.commands.Core.BoardOrBuilder> 
        getBoardsOrBuilderList() {
      return boards_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
     */
    public int getBoardsCount() {
      return boards_.size();
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
     */
    public cc.arduino.cli.commands.Core.Board getBoards(int index) {
      return boards_.get(index);
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
     */
    public cc.arduino.cli.commands.Core.BoardOrBuilder 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 (!getIDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, iD_);
      }
      if (!getInstalledBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, installed_);
      }
      if (!getLatestBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, latest_);
      }
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, name_);
      }
      if (!getMaintainerBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, maintainer_);
      }
      if (!getWebsiteBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, website_);
      }
      if (!getEmailBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, email_);
      }
      for (int i = 0; i < boards_.size(); i++) {
        output.writeMessage(8, boards_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getIDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, iD_);
      }
      if (!getInstalledBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, installed_);
      }
      if (!getLatestBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, latest_);
      }
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, name_);
      }
      if (!getMaintainerBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, maintainer_);
      }
      if (!getWebsiteBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, website_);
      }
      if (!getEmailBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, email_);
      }
      for (int i = 0; i < boards_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, 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.Core.Platform)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.Platform other = (cc.arduino.cli.commands.Core.Platform) obj;

      if (!getID()
          .equals(other.getID())) return false;
      if (!getInstalled()
          .equals(other.getInstalled())) return false;
      if (!getLatest()
          .equals(other.getLatest())) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getMaintainer()
          .equals(other.getMaintainer())) return false;
      if (!getWebsite()
          .equals(other.getWebsite())) return false;
      if (!getEmail()
          .equals(other.getEmail())) 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) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getID().hashCode();
      hash = (37 * hash) + INSTALLED_FIELD_NUMBER;
      hash = (53 * hash) + getInstalled().hashCode();
      hash = (37 * hash) + LATEST_FIELD_NUMBER;
      hash = (53 * hash) + getLatest().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + MAINTAINER_FIELD_NUMBER;
      hash = (53 * hash) + getMaintainer().hashCode();
      hash = (37 * hash) + WEBSITE_FIELD_NUMBER;
      hash = (53 * hash) + getWebsite().hashCode();
      hash = (37 * hash) + EMAIL_FIELD_NUMBER;
      hash = (53 * hash) + getEmail().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.Core.Platform parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.Platform 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.Core.Platform parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.Platform 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.Core.Platform parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.Platform parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.Platform parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.Platform 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.Core.Platform parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.Platform 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.Core.Platform parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.Platform 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.Core.Platform 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.Platform}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.Platform)
        cc.arduino.cli.commands.Core.PlatformOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_Platform_descriptor;
      }

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

      // Construct using cc.arduino.cli.commands.Core.Platform.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();
        iD_ = "";

        installed_ = "";

        latest_ = "";

        name_ = "";

        maintainer_ = "";

        website_ = "";

        email_ = "";

        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.Core.internal_static_cc_arduino_cli_commands_Platform_descriptor;
      }

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.Platform buildPartial() {
        cc.arduino.cli.commands.Core.Platform result = new cc.arduino.cli.commands.Core.Platform(this);
        int from_bitField0_ = bitField0_;
        result.iD_ = iD_;
        result.installed_ = installed_;
        result.latest_ = latest_;
        result.name_ = name_;
        result.maintainer_ = maintainer_;
        result.website_ = website_;
        result.email_ = email_;
        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.Core.Platform) {
          return mergeFrom((cc.arduino.cli.commands.Core.Platform)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.Platform other) {
        if (other == cc.arduino.cli.commands.Core.Platform.getDefaultInstance()) return this;
        if (!other.getID().isEmpty()) {
          iD_ = other.iD_;
          onChanged();
        }
        if (!other.getInstalled().isEmpty()) {
          installed_ = other.installed_;
          onChanged();
        }
        if (!other.getLatest().isEmpty()) {
          latest_ = other.latest_;
          onChanged();
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getMaintainer().isEmpty()) {
          maintainer_ = other.maintainer_;
          onChanged();
        }
        if (!other.getWebsite().isEmpty()) {
          website_ = other.website_;
          onChanged();
        }
        if (!other.getEmail().isEmpty()) {
          email_ = other.email_;
          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.Core.Platform parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.Platform) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object iD_ = "";
      /**
       * <code>string ID = 1;</code>
       */
      public java.lang.String getID() {
        java.lang.Object ref = iD_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          iD_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string ID = 1;</code>
       */
      public com.google.protobuf.ByteString
          getIDBytes() {
        java.lang.Object ref = iD_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          iD_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string ID = 1;</code>
       */
      public Builder setID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        iD_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string ID = 1;</code>
       */
      public Builder clearID() {
        
        iD_ = getDefaultInstance().getID();
        onChanged();
        return this;
      }
      /**
       * <code>string ID = 1;</code>
       */
      public Builder setIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        iD_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object installed_ = "";
      /**
       * <code>string Installed = 2;</code>
       */
      public java.lang.String getInstalled() {
        java.lang.Object ref = installed_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          installed_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string Installed = 2;</code>
       */
      public com.google.protobuf.ByteString
          getInstalledBytes() {
        java.lang.Object ref = installed_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          installed_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string Installed = 2;</code>
       */
      public Builder setInstalled(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        installed_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string Installed = 2;</code>
       */
      public Builder clearInstalled() {
        
        installed_ = getDefaultInstance().getInstalled();
        onChanged();
        return this;
      }
      /**
       * <code>string Installed = 2;</code>
       */
      public Builder setInstalledBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        installed_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object latest_ = "";
      /**
       * <code>string Latest = 3;</code>
       */
      public java.lang.String getLatest() {
        java.lang.Object ref = latest_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          latest_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string Latest = 3;</code>
       */
      public com.google.protobuf.ByteString
          getLatestBytes() {
        java.lang.Object ref = latest_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          latest_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string Latest = 3;</code>
       */
      public Builder setLatest(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        latest_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string Latest = 3;</code>
       */
      public Builder clearLatest() {
        
        latest_ = getDefaultInstance().getLatest();
        onChanged();
        return this;
      }
      /**
       * <code>string Latest = 3;</code>
       */
      public Builder setLatestBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        latest_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string Name = 4;</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 = 4;</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 = 4;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string Name = 4;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string Name = 4;</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 maintainer_ = "";
      /**
       * <code>string Maintainer = 5;</code>
       */
      public java.lang.String getMaintainer() {
        java.lang.Object ref = maintainer_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          maintainer_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string Maintainer = 5;</code>
       */
      public com.google.protobuf.ByteString
          getMaintainerBytes() {
        java.lang.Object ref = maintainer_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          maintainer_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string Maintainer = 5;</code>
       */
      public Builder setMaintainer(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        maintainer_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string Maintainer = 5;</code>
       */
      public Builder clearMaintainer() {
        
        maintainer_ = getDefaultInstance().getMaintainer();
        onChanged();
        return this;
      }
      /**
       * <code>string Maintainer = 5;</code>
       */
      public Builder setMaintainerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        maintainer_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object website_ = "";
      /**
       * <code>string Website = 6;</code>
       */
      public java.lang.String getWebsite() {
        java.lang.Object ref = website_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          website_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string Website = 6;</code>
       */
      public com.google.protobuf.ByteString
          getWebsiteBytes() {
        java.lang.Object ref = website_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          website_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string Website = 6;</code>
       */
      public Builder setWebsite(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        website_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string Website = 6;</code>
       */
      public Builder clearWebsite() {
        
        website_ = getDefaultInstance().getWebsite();
        onChanged();
        return this;
      }
      /**
       * <code>string Website = 6;</code>
       */
      public Builder setWebsiteBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        website_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object email_ = "";
      /**
       * <code>string Email = 7;</code>
       */
      public java.lang.String getEmail() {
        java.lang.Object ref = email_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          email_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string Email = 7;</code>
       */
      public com.google.protobuf.ByteString
          getEmailBytes() {
        java.lang.Object ref = email_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          email_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string Email = 7;</code>
       */
      public Builder setEmail(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        email_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string Email = 7;</code>
       */
      public Builder clearEmail() {
        
        email_ = getDefaultInstance().getEmail();
        onChanged();
        return this;
      }
      /**
       * <code>string Email = 7;</code>
       */
      public Builder setEmailBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        email_ = value;
        onChanged();
        return this;
      }

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

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

      /**
       * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Core.Board> getBoardsList() {
        if (boardsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(boards_);
        } else {
          return boardsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
       */
      public int getBoardsCount() {
        if (boardsBuilder_ == null) {
          return boards_.size();
        } else {
          return boardsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
       */
      public cc.arduino.cli.commands.Core.Board getBoards(int index) {
        if (boardsBuilder_ == null) {
          return boards_.get(index);
        } else {
          return boardsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
       */
      public Builder setBoards(
          int index, cc.arduino.cli.commands.Core.Board 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.Board Boards = 8;</code>
       */
      public Builder setBoards(
          int index, cc.arduino.cli.commands.Core.Board.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.Board Boards = 8;</code>
       */
      public Builder addBoards(cc.arduino.cli.commands.Core.Board 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.Board Boards = 8;</code>
       */
      public Builder addBoards(
          int index, cc.arduino.cli.commands.Core.Board 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.Board Boards = 8;</code>
       */
      public Builder addBoards(
          cc.arduino.cli.commands.Core.Board.Builder builderForValue) {
        if (boardsBuilder_ == null) {
          ensureBoardsIsMutable();
          boards_.add(builderForValue.build());
          onChanged();
        } else {
          boardsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
       */
      public Builder addBoards(
          int index, cc.arduino.cli.commands.Core.Board.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.Board Boards = 8;</code>
       */
      public Builder addAllBoards(
          java.lang.Iterable<? extends cc.arduino.cli.commands.Core.Board> 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.Board Boards = 8;</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.Board Boards = 8;</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.Board Boards = 8;</code>
       */
      public cc.arduino.cli.commands.Core.Board.Builder getBoardsBuilder(
          int index) {
        return getBoardsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
       */
      public cc.arduino.cli.commands.Core.BoardOrBuilder getBoardsOrBuilder(
          int index) {
        if (boardsBuilder_ == null) {
          return boards_.get(index);  } else {
          return boardsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
       */
      public java.util.List<? extends cc.arduino.cli.commands.Core.BoardOrBuilder> 
           getBoardsOrBuilderList() {
        if (boardsBuilder_ != null) {
          return boardsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(boards_);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
       */
      public cc.arduino.cli.commands.Core.Board.Builder addBoardsBuilder() {
        return getBoardsFieldBuilder().addBuilder(
            cc.arduino.cli.commands.Core.Board.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
       */
      public cc.arduino.cli.commands.Core.Board.Builder addBoardsBuilder(
          int index) {
        return getBoardsFieldBuilder().addBuilder(
            index, cc.arduino.cli.commands.Core.Board.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.Board Boards = 8;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Core.Board.Builder> 
           getBoardsBuilderList() {
        return getBoardsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Core.Board, cc.arduino.cli.commands.Core.Board.Builder, cc.arduino.cli.commands.Core.BoardOrBuilder> 
          getBoardsFieldBuilder() {
        if (boardsBuilder_ == null) {
          boardsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              cc.arduino.cli.commands.Core.Board, cc.arduino.cli.commands.Core.Board.Builder, cc.arduino.cli.commands.Core.BoardOrBuilder>(
                  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.Platform)
    }

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

    public static cc.arduino.cli.commands.Core.Platform getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface BoardOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.Board)
      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.Board}
   */
  public  static final class Board extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.Board)
      BoardOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Board.newBuilder() to construct.
    private Board(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Board() {
      name_ = "";
      fqbn_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Board(
        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.Core.internal_static_cc_arduino_cli_commands_Board_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_Board_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Core.Board.class, cc.arduino.cli.commands.Core.Board.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.Core.Board)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Core.Board other = (cc.arduino.cli.commands.Core.Board) 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.Core.Board parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.Board 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.Core.Board parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.Board 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.Core.Board parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cc.arduino.cli.commands.Core.Board parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cc.arduino.cli.commands.Core.Board parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.Board 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.Core.Board parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.Board 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.Core.Board parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cc.arduino.cli.commands.Core.Board 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.Core.Board 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.Board}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cc.arduino.cli.commands.Board)
        cc.arduino.cli.commands.Core.BoardOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cc.arduino.cli.commands.Core.internal_static_cc_arduino_cli_commands_Board_descriptor;
      }

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

      // Construct using cc.arduino.cli.commands.Core.Board.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.Core.internal_static_cc_arduino_cli_commands_Board_descriptor;
      }

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Core.Board buildPartial() {
        cc.arduino.cli.commands.Core.Board result = new cc.arduino.cli.commands.Core.Board(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.Core.Board) {
          return mergeFrom((cc.arduino.cli.commands.Core.Board)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Core.Board other) {
        if (other == cc.arduino.cli.commands.Core.Board.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.Core.Board parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Core.Board) 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.Board)
    }

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

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

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

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

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

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

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_PlatformInstallReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_PlatformInstallReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_PlatformInstallResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_PlatformInstallResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_PlatformDownloadReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_PlatformDownloadReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_PlatformDownloadResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_PlatformDownloadResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_PlatformUninstallReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_PlatformUninstallReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_PlatformUninstallResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_PlatformUninstallResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_PlatformUpgradeReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_PlatformUpgradeReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_PlatformUpgradeResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_PlatformUpgradeResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_PlatformSearchReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_PlatformSearchReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_PlatformSearchResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_PlatformSearchResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_PlatformListReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_PlatformListReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_PlatformListResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_PlatformListResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_Platform_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_Platform_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_Board_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_Board_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\023commands/core.proto\022\027cc.arduino.cli.co" +
      "mmands\032\025commands/common.proto\"\212\001\n\022Platfo" +
      "rmInstallReq\0223\n\010instance\030\001 \001(\0132!.cc.ardu" +
      "ino.cli.commands.Instance\022\030\n\020platform_pa" +
      "ckage\030\002 \001(\t\022\024\n\014architecture\030\003 \001(\t\022\017\n\007ver" +
      "sion\030\004 \001(\t\"\220\001\n\023PlatformInstallResp\022;\n\010pr" +
      "ogress\030\001 \001(\0132).cc.arduino.cli.commands.D" +
      "ownloadProgress\022<\n\rtask_progress\030\002 \001(\0132%" +
      ".cc.arduino.cli.commands.TaskProgress\"\213\001" +
      "\n\023PlatformDownloadReq\0223\n\010instance\030\001 \001(\0132" +
      "!.cc.arduino.cli.commands.Instance\022\030\n\020pl" +
      "atform_package\030\002 \001(\t\022\024\n\014architecture\030\003 \001" +
      "(\t\022\017\n\007version\030\004 \001(\t\"S\n\024PlatformDownloadR" +
      "esp\022;\n\010progress\030\001 \001(\0132).cc.arduino.cli.c" +
      "ommands.DownloadProgress\"{\n\024PlatformUnin" +
      "stallReq\0223\n\010instance\030\001 \001(\0132!.cc.arduino." +
      "cli.commands.Instance\022\030\n\020platform_packag" +
      "e\030\002 \001(\t\022\024\n\014architecture\030\003 \001(\t\"U\n\025Platfor" +
      "mUninstallResp\022<\n\rtask_progress\030\001 \001(\0132%." +
      "cc.arduino.cli.commands.TaskProgress\"y\n\022" +
      "PlatformUpgradeReq\0223\n\010instance\030\001 \001(\0132!.c" +
      "c.arduino.cli.commands.Instance\022\030\n\020platf" +
      "orm_package\030\002 \001(\t\022\024\n\014architecture\030\003 \001(\t\"" +
      "\220\001\n\023PlatformUpgradeResp\022;\n\010progress\030\001 \001(" +
      "\0132).cc.arduino.cli.commands.DownloadProg" +
      "ress\022<\n\rtask_progress\030\002 \001(\0132%.cc.arduino" +
      ".cli.commands.TaskProgress\"s\n\021PlatformSe" +
      "archReq\0223\n\010instance\030\001 \001(\0132!.cc.arduino.c" +
      "li.commands.Instance\022\023\n\013search_args\030\002 \001(" +
      "\t\022\024\n\014all_versions\030\003 \001(\010\"N\n\022PlatformSearc" +
      "hResp\0228\n\rsearch_output\030\001 \003(\0132!.cc.arduin" +
      "o.cli.commands.Platform\"^\n\017PlatformListR" +
      "eq\0223\n\010instance\030\001 \001(\0132!.cc.arduino.cli.co" +
      "mmands.Instance\022\026\n\016updatable_only\030\002 \001(\010\"" +
      "Q\n\020PlatformListResp\022=\n\022installed_platfor" +
      "m\030\001 \003(\0132!.cc.arduino.cli.commands.Platfo" +
      "rm\"\253\001\n\010Platform\022\n\n\002ID\030\001 \001(\t\022\021\n\tInstalled" +
      "\030\002 \001(\t\022\016\n\006Latest\030\003 \001(\t\022\014\n\004Name\030\004 \001(\t\022\022\n\n" +
      "Maintainer\030\005 \001(\t\022\017\n\007Website\030\006 \001(\t\022\r\n\005Ema" +
      "il\030\007 \001(\t\022.\n\006Boards\030\010 \003(\0132\036.cc.arduino.cl" +
      "i.commands.Board\"#\n\005Board\022\014\n\004name\030\001 \001(\t\022" +
      "\014\n\004fqbn\030\002 \001(\tB-Z+github.com/arduino/ardu" +
      "ino-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_PlatformInstallReq_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_cc_arduino_cli_commands_PlatformInstallReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_PlatformInstallReq_descriptor,
        new java.lang.String[] { "Instance", "PlatformPackage", "Architecture", "Version", });
    internal_static_cc_arduino_cli_commands_PlatformInstallResp_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_cc_arduino_cli_commands_PlatformInstallResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_PlatformInstallResp_descriptor,
        new java.lang.String[] { "Progress", "TaskProgress", });
    internal_static_cc_arduino_cli_commands_PlatformDownloadReq_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_cc_arduino_cli_commands_PlatformDownloadReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_PlatformDownloadReq_descriptor,
        new java.lang.String[] { "Instance", "PlatformPackage", "Architecture", "Version", });
    internal_static_cc_arduino_cli_commands_PlatformDownloadResp_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_cc_arduino_cli_commands_PlatformDownloadResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_PlatformDownloadResp_descriptor,
        new java.lang.String[] { "Progress", });
    internal_static_cc_arduino_cli_commands_PlatformUninstallReq_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_cc_arduino_cli_commands_PlatformUninstallReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_PlatformUninstallReq_descriptor,
        new java.lang.String[] { "Instance", "PlatformPackage", "Architecture", });
    internal_static_cc_arduino_cli_commands_PlatformUninstallResp_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_cc_arduino_cli_commands_PlatformUninstallResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_PlatformUninstallResp_descriptor,
        new java.lang.String[] { "TaskProgress", });
    internal_static_cc_arduino_cli_commands_PlatformUpgradeReq_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_cc_arduino_cli_commands_PlatformUpgradeReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_PlatformUpgradeReq_descriptor,
        new java.lang.String[] { "Instance", "PlatformPackage", "Architecture", });
    internal_static_cc_arduino_cli_commands_PlatformUpgradeResp_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_cc_arduino_cli_commands_PlatformUpgradeResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_PlatformUpgradeResp_descriptor,
        new java.lang.String[] { "Progress", "TaskProgress", });
    internal_static_cc_arduino_cli_commands_PlatformSearchReq_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_cc_arduino_cli_commands_PlatformSearchReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_PlatformSearchReq_descriptor,
        new java.lang.String[] { "Instance", "SearchArgs", "AllVersions", });
    internal_static_cc_arduino_cli_commands_PlatformSearchResp_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_cc_arduino_cli_commands_PlatformSearchResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_PlatformSearchResp_descriptor,
        new java.lang.String[] { "SearchOutput", });
    internal_static_cc_arduino_cli_commands_PlatformListReq_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_cc_arduino_cli_commands_PlatformListReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_PlatformListReq_descriptor,
        new java.lang.String[] { "Instance", "UpdatableOnly", });
    internal_static_cc_arduino_cli_commands_PlatformListResp_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_cc_arduino_cli_commands_PlatformListResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_PlatformListResp_descriptor,
        new java.lang.String[] { "InstalledPlatform", });
    internal_static_cc_arduino_cli_commands_Platform_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_cc_arduino_cli_commands_Platform_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_Platform_descriptor,
        new java.lang.String[] { "ID", "Installed", "Latest", "Name", "Maintainer", "Website", "Email", "Boards", });
    internal_static_cc_arduino_cli_commands_Board_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_cc_arduino_cli_commands_Board_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_Board_descriptor,
        new java.lang.String[] { "Name", "Fqbn", });
    cc.arduino.cli.commands.Common.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
