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

package cc.arduino.cli.commands;

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

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code cc.arduino.cli.commands.LibraryLayout}
   */
  public enum LibraryLayout
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>flat_layout = 0;</code>
     */
    flat_layout(0),
    /**
     * <code>recursive_layout = 1;</code>
     */
    recursive_layout(1),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>flat_layout = 0;</code>
     */
    public static final int flat_layout_VALUE = 0;
    /**
     * <code>recursive_layout = 1;</code>
     */
    public static final int recursive_layout_VALUE = 1;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static LibraryLayout valueOf(int value) {
      return forNumber(value);
    }

    public static LibraryLayout forNumber(int value) {
      switch (value) {
        case 0: return flat_layout;
        case 1: return recursive_layout;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<LibraryLayout>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        LibraryLayout> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<LibraryLayout>() {
            public LibraryLayout findValueByNumber(int number) {
              return LibraryLayout.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Lib.getDescriptor().getEnumTypes().get(0);
    }

    private static final LibraryLayout[] VALUES = values();

    public static LibraryLayout valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private LibraryLayout(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:cc.arduino.cli.commands.LibraryLayout)
  }

  /**
   * Protobuf enum {@code cc.arduino.cli.commands.LibraryLocation}
   */
  public enum LibraryLocation
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>ide_builtin = 0;</code>
     */
    ide_builtin(0),
    /**
     * <code>platform_builtin = 1;</code>
     */
    platform_builtin(1),
    /**
     * <code>referenced_platform_builtin = 2;</code>
     */
    referenced_platform_builtin(2),
    /**
     * <code>sketchbook = 3;</code>
     */
    sketchbook(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>ide_builtin = 0;</code>
     */
    public static final int ide_builtin_VALUE = 0;
    /**
     * <code>platform_builtin = 1;</code>
     */
    public static final int platform_builtin_VALUE = 1;
    /**
     * <code>referenced_platform_builtin = 2;</code>
     */
    public static final int referenced_platform_builtin_VALUE = 2;
    /**
     * <code>sketchbook = 3;</code>
     */
    public static final int sketchbook_VALUE = 3;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static LibraryLocation valueOf(int value) {
      return forNumber(value);
    }

    public static LibraryLocation forNumber(int value) {
      switch (value) {
        case 0: return ide_builtin;
        case 1: return platform_builtin;
        case 2: return referenced_platform_builtin;
        case 3: return sketchbook;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<LibraryLocation>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        LibraryLocation> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<LibraryLocation>() {
            public LibraryLocation findValueByNumber(int number) {
              return LibraryLocation.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Lib.getDescriptor().getEnumTypes().get(1);
    }

    private static final LibraryLocation[] VALUES = values();

    public static LibraryLocation valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private LibraryLocation(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:cc.arduino.cli.commands.LibraryLocation)
  }

  public interface LibraryDownloadReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.LibraryDownloadReq)
      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 name = 2;</code>
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

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

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

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

              name_ = s;
              break;
            }
            case 26: {
              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.Lib.internal_static_cc_arduino_cli_commands_LibraryDownloadReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_LibraryDownloadReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Lib.LibraryDownloadReq.class, cc.arduino.cli.commands.Lib.LibraryDownloadReq.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 NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 2;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 3;
    private volatile java.lang.Object version_;
    /**
     * <code>string version = 3;</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 = 3;</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 (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, 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 (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, 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.Lib.LibraryDownloadReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.LibraryDownloadReq other = (cc.arduino.cli.commands.Lib.LibraryDownloadReq) obj;

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

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

      // Construct using cc.arduino.cli.commands.Lib.LibraryDownloadReq.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;
        }
        name_ = "";

        version_ = "";

        return this;
      }

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

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

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

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

      public Builder mergeFrom(cc.arduino.cli.commands.Lib.LibraryDownloadReq other) {
        if (other == cc.arduino.cli.commands.Lib.LibraryDownloadReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          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.Lib.LibraryDownloadReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Lib.LibraryDownloadReq) 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 name_ = "";
      /**
       * <code>string name = 2;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

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

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

    public static cc.arduino.cli.commands.Lib.LibraryDownloadReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

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

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

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

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

      // Construct using cc.arduino.cli.commands.Lib.LibraryDownloadResp.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.Lib.internal_static_cc_arduino_cli_commands_LibraryDownloadResp_descriptor;
      }

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

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

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

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

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

    public static cc.arduino.cli.commands.Lib.LibraryDownloadResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface LibraryInstallReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.LibraryInstallReq)
      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 name = 2;</code>
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

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

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

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

              name_ = s;
              break;
            }
            case 26: {
              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.Lib.internal_static_cc_arduino_cli_commands_LibraryInstallReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_LibraryInstallReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Lib.LibraryInstallReq.class, cc.arduino.cli.commands.Lib.LibraryInstallReq.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 NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 2;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 3;
    private volatile java.lang.Object version_;
    /**
     * <code>string version = 3;</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 = 3;</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 (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, 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 (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, 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.Lib.LibraryInstallReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.LibraryInstallReq other = (cc.arduino.cli.commands.Lib.LibraryInstallReq) obj;

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

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

      // Construct using cc.arduino.cli.commands.Lib.LibraryInstallReq.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;
        }
        name_ = "";

        version_ = "";

        return this;
      }

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

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

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

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

      public Builder mergeFrom(cc.arduino.cli.commands.Lib.LibraryInstallReq other) {
        if (other == cc.arduino.cli.commands.Lib.LibraryInstallReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          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.Lib.LibraryInstallReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Lib.LibraryInstallReq) 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 name_ = "";
      /**
       * <code>string name = 2;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

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

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

    public static cc.arduino.cli.commands.Lib.LibraryInstallReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

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

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

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

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

      // Construct using cc.arduino.cli.commands.Lib.LibraryInstallResp.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.Lib.internal_static_cc_arduino_cli_commands_LibraryInstallResp_descriptor;
      }

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

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

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

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

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

    public static cc.arduino.cli.commands.Lib.LibraryInstallResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface LibraryUninstallReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.LibraryUninstallReq)
      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 name = 2;</code>
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

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

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

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

              name_ = s;
              break;
            }
            case 26: {
              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.Lib.internal_static_cc_arduino_cli_commands_LibraryUninstallReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_LibraryUninstallReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Lib.LibraryUninstallReq.class, cc.arduino.cli.commands.Lib.LibraryUninstallReq.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 NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 2;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 3;
    private volatile java.lang.Object version_;
    /**
     * <code>string version = 3;</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 = 3;</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 (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, 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 (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, 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.Lib.LibraryUninstallReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.LibraryUninstallReq other = (cc.arduino.cli.commands.Lib.LibraryUninstallReq) obj;

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

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

      // Construct using cc.arduino.cli.commands.Lib.LibraryUninstallReq.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;
        }
        name_ = "";

        version_ = "";

        return this;
      }

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

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

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

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

      public Builder mergeFrom(cc.arduino.cli.commands.Lib.LibraryUninstallReq other) {
        if (other == cc.arduino.cli.commands.Lib.LibraryUninstallReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          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.Lib.LibraryUninstallReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Lib.LibraryUninstallReq) 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 name_ = "";
      /**
       * <code>string name = 2;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

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

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

    public static cc.arduino.cli.commands.Lib.LibraryUninstallReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

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

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

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

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

      // Construct using cc.arduino.cli.commands.Lib.LibraryUninstallResp.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.Lib.internal_static_cc_arduino_cli_commands_LibraryUninstallResp_descriptor;
      }

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

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

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

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

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

    public static cc.arduino.cli.commands.Lib.LibraryUninstallResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

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

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

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

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

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

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

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

    public static cc.arduino.cli.commands.Lib.LibraryUpgradeAllReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

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

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

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

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

      // Construct using cc.arduino.cli.commands.Lib.LibraryUpgradeAllResp.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.Lib.internal_static_cc_arduino_cli_commands_LibraryUpgradeAllResp_descriptor;
      }

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

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

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

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

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

    public static cc.arduino.cli.commands.Lib.LibraryUpgradeAllResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface LibraryResolveDependenciesReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.LibraryResolveDependenciesReq)
      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 name = 2;</code>
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

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

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

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

              name_ = s;
              break;
            }
            case 26: {
              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.Lib.internal_static_cc_arduino_cli_commands_LibraryResolveDependenciesReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_LibraryResolveDependenciesReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Lib.LibraryResolveDependenciesReq.class, cc.arduino.cli.commands.Lib.LibraryResolveDependenciesReq.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 NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 2;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 3;
    private volatile java.lang.Object version_;
    /**
     * <code>string version = 3;</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 = 3;</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 (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, 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 (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, 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.Lib.LibraryResolveDependenciesReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.LibraryResolveDependenciesReq other = (cc.arduino.cli.commands.Lib.LibraryResolveDependenciesReq) obj;

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

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

      // Construct using cc.arduino.cli.commands.Lib.LibraryResolveDependenciesReq.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;
        }
        name_ = "";

        version_ = "";

        return this;
      }

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

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

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

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

      public Builder mergeFrom(cc.arduino.cli.commands.Lib.LibraryResolveDependenciesReq other) {
        if (other == cc.arduino.cli.commands.Lib.LibraryResolveDependenciesReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          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.Lib.LibraryResolveDependenciesReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Lib.LibraryResolveDependenciesReq) 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 name_ = "";
      /**
       * <code>string name = 2;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

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

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

    public static cc.arduino.cli.commands.Lib.LibraryResolveDependenciesReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

    /**
     * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
     */
    java.util.List<cc.arduino.cli.commands.Lib.LibraryDependencyStatus> 
        getDependenciesList();
    /**
     * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
     */
    cc.arduino.cli.commands.Lib.LibraryDependencyStatus getDependencies(int index);
    /**
     * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
     */
    int getDependenciesCount();
    /**
     * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
     */
    java.util.List<? extends cc.arduino.cli.commands.Lib.LibraryDependencyStatusOrBuilder> 
        getDependenciesOrBuilderList();
    /**
     * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
     */
    cc.arduino.cli.commands.Lib.LibraryDependencyStatusOrBuilder getDependenciesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.LibraryResolveDependenciesResp}
   */
  public  static final class LibraryResolveDependenciesResp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.LibraryResolveDependenciesResp)
      LibraryResolveDependenciesRespOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LibraryResolveDependenciesResp.newBuilder() to construct.
    private LibraryResolveDependenciesResp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LibraryResolveDependenciesResp() {
      dependencies_ = java.util.Collections.emptyList();
    }

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

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

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

    public static final int DEPENDENCIES_FIELD_NUMBER = 1;
    private java.util.List<cc.arduino.cli.commands.Lib.LibraryDependencyStatus> dependencies_;
    /**
     * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
     */
    public java.util.List<cc.arduino.cli.commands.Lib.LibraryDependencyStatus> getDependenciesList() {
      return dependencies_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
     */
    public java.util.List<? extends cc.arduino.cli.commands.Lib.LibraryDependencyStatusOrBuilder> 
        getDependenciesOrBuilderList() {
      return dependencies_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
     */
    public int getDependenciesCount() {
      return dependencies_.size();
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
     */
    public cc.arduino.cli.commands.Lib.LibraryDependencyStatus getDependencies(int index) {
      return dependencies_.get(index);
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
     */
    public cc.arduino.cli.commands.Lib.LibraryDependencyStatusOrBuilder getDependenciesOrBuilder(
        int index) {
      return dependencies_.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 < dependencies_.size(); i++) {
        output.writeMessage(1, dependencies_.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 < dependencies_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, dependencies_.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.Lib.LibraryResolveDependenciesResp)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.LibraryResolveDependenciesResp other = (cc.arduino.cli.commands.Lib.LibraryResolveDependenciesResp) obj;

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

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

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

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

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

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

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

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

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

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

      private java.util.List<cc.arduino.cli.commands.Lib.LibraryDependencyStatus> dependencies_ =
        java.util.Collections.emptyList();
      private void ensureDependenciesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          dependencies_ = new java.util.ArrayList<cc.arduino.cli.commands.Lib.LibraryDependencyStatus>(dependencies_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Lib.LibraryDependencyStatus, cc.arduino.cli.commands.Lib.LibraryDependencyStatus.Builder, cc.arduino.cli.commands.Lib.LibraryDependencyStatusOrBuilder> dependenciesBuilder_;

      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Lib.LibraryDependencyStatus> getDependenciesList() {
        if (dependenciesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(dependencies_);
        } else {
          return dependenciesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public int getDependenciesCount() {
        if (dependenciesBuilder_ == null) {
          return dependencies_.size();
        } else {
          return dependenciesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.LibraryDependencyStatus getDependencies(int index) {
        if (dependenciesBuilder_ == null) {
          return dependencies_.get(index);
        } else {
          return dependenciesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public Builder setDependencies(
          int index, cc.arduino.cli.commands.Lib.LibraryDependencyStatus value) {
        if (dependenciesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDependenciesIsMutable();
          dependencies_.set(index, value);
          onChanged();
        } else {
          dependenciesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public Builder setDependencies(
          int index, cc.arduino.cli.commands.Lib.LibraryDependencyStatus.Builder builderForValue) {
        if (dependenciesBuilder_ == null) {
          ensureDependenciesIsMutable();
          dependencies_.set(index, builderForValue.build());
          onChanged();
        } else {
          dependenciesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public Builder addDependencies(cc.arduino.cli.commands.Lib.LibraryDependencyStatus value) {
        if (dependenciesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDependenciesIsMutable();
          dependencies_.add(value);
          onChanged();
        } else {
          dependenciesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public Builder addDependencies(
          int index, cc.arduino.cli.commands.Lib.LibraryDependencyStatus value) {
        if (dependenciesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDependenciesIsMutable();
          dependencies_.add(index, value);
          onChanged();
        } else {
          dependenciesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public Builder addDependencies(
          cc.arduino.cli.commands.Lib.LibraryDependencyStatus.Builder builderForValue) {
        if (dependenciesBuilder_ == null) {
          ensureDependenciesIsMutable();
          dependencies_.add(builderForValue.build());
          onChanged();
        } else {
          dependenciesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public Builder addDependencies(
          int index, cc.arduino.cli.commands.Lib.LibraryDependencyStatus.Builder builderForValue) {
        if (dependenciesBuilder_ == null) {
          ensureDependenciesIsMutable();
          dependencies_.add(index, builderForValue.build());
          onChanged();
        } else {
          dependenciesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public Builder addAllDependencies(
          java.lang.Iterable<? extends cc.arduino.cli.commands.Lib.LibraryDependencyStatus> values) {
        if (dependenciesBuilder_ == null) {
          ensureDependenciesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, dependencies_);
          onChanged();
        } else {
          dependenciesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public Builder clearDependencies() {
        if (dependenciesBuilder_ == null) {
          dependencies_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          dependenciesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public Builder removeDependencies(int index) {
        if (dependenciesBuilder_ == null) {
          ensureDependenciesIsMutable();
          dependencies_.remove(index);
          onChanged();
        } else {
          dependenciesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.LibraryDependencyStatus.Builder getDependenciesBuilder(
          int index) {
        return getDependenciesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.LibraryDependencyStatusOrBuilder getDependenciesOrBuilder(
          int index) {
        if (dependenciesBuilder_ == null) {
          return dependencies_.get(index);  } else {
          return dependenciesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public java.util.List<? extends cc.arduino.cli.commands.Lib.LibraryDependencyStatusOrBuilder> 
           getDependenciesOrBuilderList() {
        if (dependenciesBuilder_ != null) {
          return dependenciesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(dependencies_);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.LibraryDependencyStatus.Builder addDependenciesBuilder() {
        return getDependenciesFieldBuilder().addBuilder(
            cc.arduino.cli.commands.Lib.LibraryDependencyStatus.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.LibraryDependencyStatus.Builder addDependenciesBuilder(
          int index) {
        return getDependenciesFieldBuilder().addBuilder(
            index, cc.arduino.cli.commands.Lib.LibraryDependencyStatus.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.LibraryDependencyStatus dependencies = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Lib.LibraryDependencyStatus.Builder> 
           getDependenciesBuilderList() {
        return getDependenciesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Lib.LibraryDependencyStatus, cc.arduino.cli.commands.Lib.LibraryDependencyStatus.Builder, cc.arduino.cli.commands.Lib.LibraryDependencyStatusOrBuilder> 
          getDependenciesFieldBuilder() {
        if (dependenciesBuilder_ == null) {
          dependenciesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              cc.arduino.cli.commands.Lib.LibraryDependencyStatus, cc.arduino.cli.commands.Lib.LibraryDependencyStatus.Builder, cc.arduino.cli.commands.Lib.LibraryDependencyStatusOrBuilder>(
                  dependencies_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          dependencies_ = null;
        }
        return dependenciesBuilder_;
      }
      @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.LibraryResolveDependenciesResp)
    }

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

    public static cc.arduino.cli.commands.Lib.LibraryResolveDependenciesResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface LibraryDependencyStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.LibraryDependencyStatus)
      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 versionRequired = 2;</code>
     */
    java.lang.String getVersionRequired();
    /**
     * <code>string versionRequired = 2;</code>
     */
    com.google.protobuf.ByteString
        getVersionRequiredBytes();

    /**
     * <code>string versionInstalled = 3;</code>
     */
    java.lang.String getVersionInstalled();
    /**
     * <code>string versionInstalled = 3;</code>
     */
    com.google.protobuf.ByteString
        getVersionInstalledBytes();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.LibraryDependencyStatus}
   */
  public  static final class LibraryDependencyStatus extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.LibraryDependencyStatus)
      LibraryDependencyStatusOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LibraryDependencyStatus.newBuilder() to construct.
    private LibraryDependencyStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LibraryDependencyStatus() {
      name_ = "";
      versionRequired_ = "";
      versionInstalled_ = "";
    }

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

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

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

              versionInstalled_ = 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.Lib.internal_static_cc_arduino_cli_commands_LibraryDependencyStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_LibraryDependencyStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Lib.LibraryDependencyStatus.class, cc.arduino.cli.commands.Lib.LibraryDependencyStatus.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 VERSIONREQUIRED_FIELD_NUMBER = 2;
    private volatile java.lang.Object versionRequired_;
    /**
     * <code>string versionRequired = 2;</code>
     */
    public java.lang.String getVersionRequired() {
      java.lang.Object ref = versionRequired_;
      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();
        versionRequired_ = s;
        return s;
      }
    }
    /**
     * <code>string versionRequired = 2;</code>
     */
    public com.google.protobuf.ByteString
        getVersionRequiredBytes() {
      java.lang.Object ref = versionRequired_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        versionRequired_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSIONINSTALLED_FIELD_NUMBER = 3;
    private volatile java.lang.Object versionInstalled_;
    /**
     * <code>string versionInstalled = 3;</code>
     */
    public java.lang.String getVersionInstalled() {
      java.lang.Object ref = versionInstalled_;
      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();
        versionInstalled_ = s;
        return s;
      }
    }
    /**
     * <code>string versionInstalled = 3;</code>
     */
    public com.google.protobuf.ByteString
        getVersionInstalledBytes() {
      java.lang.Object ref = versionInstalled_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        versionInstalled_ = 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 (!getVersionRequiredBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, versionRequired_);
      }
      if (!getVersionInstalledBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, versionInstalled_);
      }
      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 (!getVersionRequiredBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, versionRequired_);
      }
      if (!getVersionInstalledBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, versionInstalled_);
      }
      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.Lib.LibraryDependencyStatus)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.LibraryDependencyStatus other = (cc.arduino.cli.commands.Lib.LibraryDependencyStatus) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getVersionRequired()
          .equals(other.getVersionRequired())) return false;
      if (!getVersionInstalled()
          .equals(other.getVersionInstalled())) 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) + VERSIONREQUIRED_FIELD_NUMBER;
      hash = (53 * hash) + getVersionRequired().hashCode();
      hash = (37 * hash) + VERSIONINSTALLED_FIELD_NUMBER;
      hash = (53 * hash) + getVersionInstalled().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

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

        versionRequired_ = "";

        versionInstalled_ = "";

        return this;
      }

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

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

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

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

      public Builder mergeFrom(cc.arduino.cli.commands.Lib.LibraryDependencyStatus other) {
        if (other == cc.arduino.cli.commands.Lib.LibraryDependencyStatus.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getVersionRequired().isEmpty()) {
          versionRequired_ = other.versionRequired_;
          onChanged();
        }
        if (!other.getVersionInstalled().isEmpty()) {
          versionInstalled_ = other.versionInstalled_;
          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.Lib.LibraryDependencyStatus parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Lib.LibraryDependencyStatus) 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 versionRequired_ = "";
      /**
       * <code>string versionRequired = 2;</code>
       */
      public java.lang.String getVersionRequired() {
        java.lang.Object ref = versionRequired_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          versionRequired_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string versionRequired = 2;</code>
       */
      public com.google.protobuf.ByteString
          getVersionRequiredBytes() {
        java.lang.Object ref = versionRequired_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          versionRequired_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string versionRequired = 2;</code>
       */
      public Builder setVersionRequired(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        versionRequired_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string versionRequired = 2;</code>
       */
      public Builder clearVersionRequired() {
        
        versionRequired_ = getDefaultInstance().getVersionRequired();
        onChanged();
        return this;
      }
      /**
       * <code>string versionRequired = 2;</code>
       */
      public Builder setVersionRequiredBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        versionRequired_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object versionInstalled_ = "";
      /**
       * <code>string versionInstalled = 3;</code>
       */
      public java.lang.String getVersionInstalled() {
        java.lang.Object ref = versionInstalled_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          versionInstalled_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string versionInstalled = 3;</code>
       */
      public com.google.protobuf.ByteString
          getVersionInstalledBytes() {
        java.lang.Object ref = versionInstalled_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          versionInstalled_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string versionInstalled = 3;</code>
       */
      public Builder setVersionInstalled(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        versionInstalled_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string versionInstalled = 3;</code>
       */
      public Builder clearVersionInstalled() {
        
        versionInstalled_ = getDefaultInstance().getVersionInstalled();
        onChanged();
        return this;
      }
      /**
       * <code>string versionInstalled = 3;</code>
       */
      public Builder setVersionInstalledBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        versionInstalled_ = 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.LibraryDependencyStatus)
    }

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

    public static cc.arduino.cli.commands.Lib.LibraryDependencyStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface LibrarySearchReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.LibrarySearchReq)
      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 query = 2;</code>
     */
    java.lang.String getQuery();
    /**
     * <code>string query = 2;</code>
     */
    com.google.protobuf.ByteString
        getQueryBytes();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.LibrarySearchReq}
   */
  public  static final class LibrarySearchReq extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.LibrarySearchReq)
      LibrarySearchReqOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LibrarySearchReq.newBuilder() to construct.
    private LibrarySearchReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LibrarySearchReq() {
      query_ = "";
    }

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

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

              query_ = 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.Lib.internal_static_cc_arduino_cli_commands_LibrarySearchReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_LibrarySearchReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Lib.LibrarySearchReq.class, cc.arduino.cli.commands.Lib.LibrarySearchReq.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 QUERY_FIELD_NUMBER = 2;
    private volatile java.lang.Object query_;
    /**
     * <code>string query = 2;</code>
     */
    public java.lang.String getQuery() {
      java.lang.Object ref = query_;
      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();
        query_ = s;
        return s;
      }
    }
    /**
     * <code>string query = 2;</code>
     */
    public com.google.protobuf.ByteString
        getQueryBytes() {
      java.lang.Object ref = query_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        query_ = 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 (!getQueryBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, query_);
      }
      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 (!getQueryBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, query_);
      }
      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.Lib.LibrarySearchReq)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.LibrarySearchReq other = (cc.arduino.cli.commands.Lib.LibrarySearchReq) obj;

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

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

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

      // Construct using cc.arduino.cli.commands.Lib.LibrarySearchReq.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;
        }
        query_ = "";

        return this;
      }

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

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

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

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

      public Builder mergeFrom(cc.arduino.cli.commands.Lib.LibrarySearchReq other) {
        if (other == cc.arduino.cli.commands.Lib.LibrarySearchReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (!other.getQuery().isEmpty()) {
          query_ = other.query_;
          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.Lib.LibrarySearchReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Lib.LibrarySearchReq) 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 query_ = "";
      /**
       * <code>string query = 2;</code>
       */
      public java.lang.String getQuery() {
        java.lang.Object ref = query_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          query_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string query = 2;</code>
       */
      public com.google.protobuf.ByteString
          getQueryBytes() {
        java.lang.Object ref = query_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          query_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string query = 2;</code>
       */
      public Builder setQuery(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        query_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string query = 2;</code>
       */
      public Builder clearQuery() {
        
        query_ = getDefaultInstance().getQuery();
        onChanged();
        return this;
      }
      /**
       * <code>string query = 2;</code>
       */
      public Builder setQueryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        query_ = 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.LibrarySearchReq)
    }

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

    public static cc.arduino.cli.commands.Lib.LibrarySearchReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

    /**
     * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
     */
    java.util.List<cc.arduino.cli.commands.Lib.SearchedLibrary> 
        getLibrariesList();
    /**
     * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
     */
    cc.arduino.cli.commands.Lib.SearchedLibrary getLibraries(int index);
    /**
     * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
     */
    int getLibrariesCount();
    /**
     * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
     */
    java.util.List<? extends cc.arduino.cli.commands.Lib.SearchedLibraryOrBuilder> 
        getLibrariesOrBuilderList();
    /**
     * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
     */
    cc.arduino.cli.commands.Lib.SearchedLibraryOrBuilder getLibrariesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.LibrarySearchResp}
   */
  public  static final class LibrarySearchResp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.LibrarySearchResp)
      LibrarySearchRespOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LibrarySearchResp.newBuilder() to construct.
    private LibrarySearchResp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LibrarySearchResp() {
      libraries_ = java.util.Collections.emptyList();
    }

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

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

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

    public static final int LIBRARIES_FIELD_NUMBER = 1;
    private java.util.List<cc.arduino.cli.commands.Lib.SearchedLibrary> libraries_;
    /**
     * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
     */
    public java.util.List<cc.arduino.cli.commands.Lib.SearchedLibrary> getLibrariesList() {
      return libraries_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
     */
    public java.util.List<? extends cc.arduino.cli.commands.Lib.SearchedLibraryOrBuilder> 
        getLibrariesOrBuilderList() {
      return libraries_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
     */
    public int getLibrariesCount() {
      return libraries_.size();
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
     */
    public cc.arduino.cli.commands.Lib.SearchedLibrary getLibraries(int index) {
      return libraries_.get(index);
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
     */
    public cc.arduino.cli.commands.Lib.SearchedLibraryOrBuilder getLibrariesOrBuilder(
        int index) {
      return libraries_.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 < libraries_.size(); i++) {
        output.writeMessage(1, libraries_.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 < libraries_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, libraries_.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.Lib.LibrarySearchResp)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.LibrarySearchResp other = (cc.arduino.cli.commands.Lib.LibrarySearchResp) obj;

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

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

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

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

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

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

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

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

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

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

      private java.util.List<cc.arduino.cli.commands.Lib.SearchedLibrary> libraries_ =
        java.util.Collections.emptyList();
      private void ensureLibrariesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          libraries_ = new java.util.ArrayList<cc.arduino.cli.commands.Lib.SearchedLibrary>(libraries_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Lib.SearchedLibrary, cc.arduino.cli.commands.Lib.SearchedLibrary.Builder, cc.arduino.cli.commands.Lib.SearchedLibraryOrBuilder> librariesBuilder_;

      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Lib.SearchedLibrary> getLibrariesList() {
        if (librariesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(libraries_);
        } else {
          return librariesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public int getLibrariesCount() {
        if (librariesBuilder_ == null) {
          return libraries_.size();
        } else {
          return librariesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.SearchedLibrary getLibraries(int index) {
        if (librariesBuilder_ == null) {
          return libraries_.get(index);
        } else {
          return librariesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public Builder setLibraries(
          int index, cc.arduino.cli.commands.Lib.SearchedLibrary value) {
        if (librariesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLibrariesIsMutable();
          libraries_.set(index, value);
          onChanged();
        } else {
          librariesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public Builder setLibraries(
          int index, cc.arduino.cli.commands.Lib.SearchedLibrary.Builder builderForValue) {
        if (librariesBuilder_ == null) {
          ensureLibrariesIsMutable();
          libraries_.set(index, builderForValue.build());
          onChanged();
        } else {
          librariesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public Builder addLibraries(cc.arduino.cli.commands.Lib.SearchedLibrary value) {
        if (librariesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLibrariesIsMutable();
          libraries_.add(value);
          onChanged();
        } else {
          librariesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public Builder addLibraries(
          int index, cc.arduino.cli.commands.Lib.SearchedLibrary value) {
        if (librariesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLibrariesIsMutable();
          libraries_.add(index, value);
          onChanged();
        } else {
          librariesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public Builder addLibraries(
          cc.arduino.cli.commands.Lib.SearchedLibrary.Builder builderForValue) {
        if (librariesBuilder_ == null) {
          ensureLibrariesIsMutable();
          libraries_.add(builderForValue.build());
          onChanged();
        } else {
          librariesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public Builder addLibraries(
          int index, cc.arduino.cli.commands.Lib.SearchedLibrary.Builder builderForValue) {
        if (librariesBuilder_ == null) {
          ensureLibrariesIsMutable();
          libraries_.add(index, builderForValue.build());
          onChanged();
        } else {
          librariesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public Builder addAllLibraries(
          java.lang.Iterable<? extends cc.arduino.cli.commands.Lib.SearchedLibrary> values) {
        if (librariesBuilder_ == null) {
          ensureLibrariesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, libraries_);
          onChanged();
        } else {
          librariesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public Builder clearLibraries() {
        if (librariesBuilder_ == null) {
          libraries_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          librariesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public Builder removeLibraries(int index) {
        if (librariesBuilder_ == null) {
          ensureLibrariesIsMutable();
          libraries_.remove(index);
          onChanged();
        } else {
          librariesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.SearchedLibrary.Builder getLibrariesBuilder(
          int index) {
        return getLibrariesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.SearchedLibraryOrBuilder getLibrariesOrBuilder(
          int index) {
        if (librariesBuilder_ == null) {
          return libraries_.get(index);  } else {
          return librariesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public java.util.List<? extends cc.arduino.cli.commands.Lib.SearchedLibraryOrBuilder> 
           getLibrariesOrBuilderList() {
        if (librariesBuilder_ != null) {
          return librariesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(libraries_);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.SearchedLibrary.Builder addLibrariesBuilder() {
        return getLibrariesFieldBuilder().addBuilder(
            cc.arduino.cli.commands.Lib.SearchedLibrary.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.SearchedLibrary.Builder addLibrariesBuilder(
          int index) {
        return getLibrariesFieldBuilder().addBuilder(
            index, cc.arduino.cli.commands.Lib.SearchedLibrary.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.SearchedLibrary libraries = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Lib.SearchedLibrary.Builder> 
           getLibrariesBuilderList() {
        return getLibrariesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Lib.SearchedLibrary, cc.arduino.cli.commands.Lib.SearchedLibrary.Builder, cc.arduino.cli.commands.Lib.SearchedLibraryOrBuilder> 
          getLibrariesFieldBuilder() {
        if (librariesBuilder_ == null) {
          librariesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              cc.arduino.cli.commands.Lib.SearchedLibrary, cc.arduino.cli.commands.Lib.SearchedLibrary.Builder, cc.arduino.cli.commands.Lib.SearchedLibraryOrBuilder>(
                  libraries_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          libraries_ = null;
        }
        return librariesBuilder_;
      }
      @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.LibrarySearchResp)
    }

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

    public static cc.arduino.cli.commands.Lib.LibrarySearchResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

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

    /**
     * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
     */
    int getReleasesCount();
    /**
     * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
     */
    boolean containsReleases(
        java.lang.String key);
    /**
     * Use {@link #getReleasesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease>
    getReleases();
    /**
     * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
     */
    java.util.Map<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease>
    getReleasesMap();
    /**
     * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
     */

    cc.arduino.cli.commands.Lib.LibraryRelease getReleasesOrDefault(
        java.lang.String key,
        cc.arduino.cli.commands.Lib.LibraryRelease defaultValue);
    /**
     * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
     */

    cc.arduino.cli.commands.Lib.LibraryRelease getReleasesOrThrow(
        java.lang.String key);

    /**
     * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
     */
    boolean hasLatest();
    /**
     * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
     */
    cc.arduino.cli.commands.Lib.LibraryRelease getLatest();
    /**
     * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
     */
    cc.arduino.cli.commands.Lib.LibraryReleaseOrBuilder getLatestOrBuilder();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.SearchedLibrary}
   */
  public  static final class SearchedLibrary extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.SearchedLibrary)
      SearchedLibraryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SearchedLibrary.newBuilder() to construct.
    private SearchedLibrary(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SearchedLibrary() {
      name_ = "";
    }

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

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

              name_ = s;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                releases_ = com.google.protobuf.MapField.newMapField(
                    ReleasesDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease>
              releases__ = input.readMessage(
                  ReleasesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              releases_.getMutableMap().put(
                  releases__.getKey(), releases__.getValue());
              break;
            }
            case 26: {
              cc.arduino.cli.commands.Lib.LibraryRelease.Builder subBuilder = null;
              if (latest_ != null) {
                subBuilder = latest_.toBuilder();
              }
              latest_ = input.readMessage(cc.arduino.cli.commands.Lib.LibraryRelease.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(latest_);
                latest_ = 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.Lib.internal_static_cc_arduino_cli_commands_SearchedLibrary_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 2:
          return internalGetReleases();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_SearchedLibrary_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Lib.SearchedLibrary.class, cc.arduino.cli.commands.Lib.SearchedLibrary.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 RELEASES_FIELD_NUMBER = 2;
    private static final class ReleasesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease>newDefaultInstance(
                  cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_SearchedLibrary_ReleasesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  cc.arduino.cli.commands.Lib.LibraryRelease.getDefaultInstance());
    }
    private com.google.protobuf.MapField<
        java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease> releases_;
    private com.google.protobuf.MapField<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease>
    internalGetReleases() {
      if (releases_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            ReleasesDefaultEntryHolder.defaultEntry);
      }
      return releases_;
    }

    public int getReleasesCount() {
      return internalGetReleases().getMap().size();
    }
    /**
     * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
     */

    public boolean containsReleases(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetReleases().getMap().containsKey(key);
    }
    /**
     * Use {@link #getReleasesMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease> getReleases() {
      return getReleasesMap();
    }
    /**
     * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
     */

    public java.util.Map<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease> getReleasesMap() {
      return internalGetReleases().getMap();
    }
    /**
     * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
     */

    public cc.arduino.cli.commands.Lib.LibraryRelease getReleasesOrDefault(
        java.lang.String key,
        cc.arduino.cli.commands.Lib.LibraryRelease defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease> map =
          internalGetReleases().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
     */

    public cc.arduino.cli.commands.Lib.LibraryRelease getReleasesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease> map =
          internalGetReleases().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int LATEST_FIELD_NUMBER = 3;
    private cc.arduino.cli.commands.Lib.LibraryRelease latest_;
    /**
     * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
     */
    public boolean hasLatest() {
      return latest_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
     */
    public cc.arduino.cli.commands.Lib.LibraryRelease getLatest() {
      return latest_ == null ? cc.arduino.cli.commands.Lib.LibraryRelease.getDefaultInstance() : latest_;
    }
    /**
     * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
     */
    public cc.arduino.cli.commands.Lib.LibraryReleaseOrBuilder getLatestOrBuilder() {
      return getLatest();
    }

    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_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetReleases(),
          ReleasesDefaultEntryHolder.defaultEntry,
          2);
      if (latest_ != null) {
        output.writeMessage(3, getLatest());
      }
      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_);
      }
      for (java.util.Map.Entry<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease> entry
           : internalGetReleases().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease>
        releases__ = ReleasesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, releases__);
      }
      if (latest_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getLatest());
      }
      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.Lib.SearchedLibrary)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.SearchedLibrary other = (cc.arduino.cli.commands.Lib.SearchedLibrary) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!internalGetReleases().equals(
          other.internalGetReleases())) return false;
      if (hasLatest() != other.hasLatest()) return false;
      if (hasLatest()) {
        if (!getLatest()
            .equals(other.getLatest())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (!internalGetReleases().getMap().isEmpty()) {
        hash = (37 * hash) + RELEASES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetReleases().hashCode();
      }
      if (hasLatest()) {
        hash = (37 * hash) + LATEST_FIELD_NUMBER;
        hash = (53 * hash) + getLatest().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 2:
            return internalGetReleases();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableReleases();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_SearchedLibrary_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Lib.SearchedLibrary.class, cc.arduino.cli.commands.Lib.SearchedLibrary.Builder.class);
      }

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

        internalGetMutableReleases().clear();
        if (latestBuilder_ == null) {
          latest_ = null;
        } else {
          latest_ = null;
          latestBuilder_ = null;
        }
        return this;
      }

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Lib.SearchedLibrary buildPartial() {
        cc.arduino.cli.commands.Lib.SearchedLibrary result = new cc.arduino.cli.commands.Lib.SearchedLibrary(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        result.releases_ = internalGetReleases();
        result.releases_.makeImmutable();
        if (latestBuilder_ == null) {
          result.latest_ = latest_;
        } else {
          result.latest_ = latestBuilder_.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.Lib.SearchedLibrary) {
          return mergeFrom((cc.arduino.cli.commands.Lib.SearchedLibrary)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Lib.SearchedLibrary other) {
        if (other == cc.arduino.cli.commands.Lib.SearchedLibrary.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        internalGetMutableReleases().mergeFrom(
            other.internalGetReleases());
        if (other.hasLatest()) {
          mergeLatest(other.getLatest());
        }
        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.Lib.SearchedLibrary parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Lib.SearchedLibrary) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      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 com.google.protobuf.MapField<
          java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease> releases_;
      private com.google.protobuf.MapField<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease>
      internalGetReleases() {
        if (releases_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              ReleasesDefaultEntryHolder.defaultEntry);
        }
        return releases_;
      }
      private com.google.protobuf.MapField<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease>
      internalGetMutableReleases() {
        onChanged();;
        if (releases_ == null) {
          releases_ = com.google.protobuf.MapField.newMapField(
              ReleasesDefaultEntryHolder.defaultEntry);
        }
        if (!releases_.isMutable()) {
          releases_ = releases_.copy();
        }
        return releases_;
      }

      public int getReleasesCount() {
        return internalGetReleases().getMap().size();
      }
      /**
       * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
       */

      public boolean containsReleases(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetReleases().getMap().containsKey(key);
      }
      /**
       * Use {@link #getReleasesMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease> getReleases() {
        return getReleasesMap();
      }
      /**
       * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
       */

      public java.util.Map<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease> getReleasesMap() {
        return internalGetReleases().getMap();
      }
      /**
       * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
       */

      public cc.arduino.cli.commands.Lib.LibraryRelease getReleasesOrDefault(
          java.lang.String key,
          cc.arduino.cli.commands.Lib.LibraryRelease defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease> map =
            internalGetReleases().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
       */

      public cc.arduino.cli.commands.Lib.LibraryRelease getReleasesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease> map =
            internalGetReleases().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearReleases() {
        internalGetMutableReleases().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
       */

      public Builder removeReleases(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableReleases().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease>
      getMutableReleases() {
        return internalGetMutableReleases().getMutableMap();
      }
      /**
       * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
       */
      public Builder putReleases(
          java.lang.String key,
          cc.arduino.cli.commands.Lib.LibraryRelease value) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        if (value == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableReleases().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <code>map&lt;string, .cc.arduino.cli.commands.LibraryRelease&gt; releases = 2;</code>
       */

      public Builder putAllReleases(
          java.util.Map<java.lang.String, cc.arduino.cli.commands.Lib.LibraryRelease> values) {
        internalGetMutableReleases().getMutableMap()
            .putAll(values);
        return this;
      }

      private cc.arduino.cli.commands.Lib.LibraryRelease latest_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Lib.LibraryRelease, cc.arduino.cli.commands.Lib.LibraryRelease.Builder, cc.arduino.cli.commands.Lib.LibraryReleaseOrBuilder> latestBuilder_;
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
       */
      public boolean hasLatest() {
        return latestBuilder_ != null || latest_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
       */
      public cc.arduino.cli.commands.Lib.LibraryRelease getLatest() {
        if (latestBuilder_ == null) {
          return latest_ == null ? cc.arduino.cli.commands.Lib.LibraryRelease.getDefaultInstance() : latest_;
        } else {
          return latestBuilder_.getMessage();
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
       */
      public Builder setLatest(cc.arduino.cli.commands.Lib.LibraryRelease value) {
        if (latestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          latest_ = value;
          onChanged();
        } else {
          latestBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
       */
      public Builder setLatest(
          cc.arduino.cli.commands.Lib.LibraryRelease.Builder builderForValue) {
        if (latestBuilder_ == null) {
          latest_ = builderForValue.build();
          onChanged();
        } else {
          latestBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
       */
      public Builder mergeLatest(cc.arduino.cli.commands.Lib.LibraryRelease value) {
        if (latestBuilder_ == null) {
          if (latest_ != null) {
            latest_ =
              cc.arduino.cli.commands.Lib.LibraryRelease.newBuilder(latest_).mergeFrom(value).buildPartial();
          } else {
            latest_ = value;
          }
          onChanged();
        } else {
          latestBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
       */
      public Builder clearLatest() {
        if (latestBuilder_ == null) {
          latest_ = null;
          onChanged();
        } else {
          latest_ = null;
          latestBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
       */
      public cc.arduino.cli.commands.Lib.LibraryRelease.Builder getLatestBuilder() {
        
        onChanged();
        return getLatestFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
       */
      public cc.arduino.cli.commands.Lib.LibraryReleaseOrBuilder getLatestOrBuilder() {
        if (latestBuilder_ != null) {
          return latestBuilder_.getMessageOrBuilder();
        } else {
          return latest_ == null ?
              cc.arduino.cli.commands.Lib.LibraryRelease.getDefaultInstance() : latest_;
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease latest = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Lib.LibraryRelease, cc.arduino.cli.commands.Lib.LibraryRelease.Builder, cc.arduino.cli.commands.Lib.LibraryReleaseOrBuilder> 
          getLatestFieldBuilder() {
        if (latestBuilder_ == null) {
          latestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cc.arduino.cli.commands.Lib.LibraryRelease, cc.arduino.cli.commands.Lib.LibraryRelease.Builder, cc.arduino.cli.commands.Lib.LibraryReleaseOrBuilder>(
                  getLatest(),
                  getParentForChildren(),
                  isClean());
          latest_ = null;
        }
        return latestBuilder_;
      }
      @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.SearchedLibrary)
    }

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

    public static cc.arduino.cli.commands.Lib.SearchedLibrary getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

    /**
     * <code>string author = 1;</code>
     */
    java.lang.String getAuthor();
    /**
     * <code>string author = 1;</code>
     */
    com.google.protobuf.ByteString
        getAuthorBytes();

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

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

    /**
     * <code>string sentence = 4;</code>
     */
    java.lang.String getSentence();
    /**
     * <code>string sentence = 4;</code>
     */
    com.google.protobuf.ByteString
        getSentenceBytes();

    /**
     * <code>string paragraph = 5;</code>
     */
    java.lang.String getParagraph();
    /**
     * <code>string paragraph = 5;</code>
     */
    com.google.protobuf.ByteString
        getParagraphBytes();

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

    /**
     * <code>string category = 7;</code>
     */
    java.lang.String getCategory();
    /**
     * <code>string category = 7;</code>
     */
    com.google.protobuf.ByteString
        getCategoryBytes();

    /**
     * <code>repeated string architectures = 8;</code>
     */
    java.util.List<java.lang.String>
        getArchitecturesList();
    /**
     * <code>repeated string architectures = 8;</code>
     */
    int getArchitecturesCount();
    /**
     * <code>repeated string architectures = 8;</code>
     */
    java.lang.String getArchitectures(int index);
    /**
     * <code>repeated string architectures = 8;</code>
     */
    com.google.protobuf.ByteString
        getArchitecturesBytes(int index);

    /**
     * <code>repeated string types = 9;</code>
     */
    java.util.List<java.lang.String>
        getTypesList();
    /**
     * <code>repeated string types = 9;</code>
     */
    int getTypesCount();
    /**
     * <code>repeated string types = 9;</code>
     */
    java.lang.String getTypes(int index);
    /**
     * <code>repeated string types = 9;</code>
     */
    com.google.protobuf.ByteString
        getTypesBytes(int index);

    /**
     * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
     */
    boolean hasResources();
    /**
     * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
     */
    cc.arduino.cli.commands.Lib.DownloadResource getResources();
    /**
     * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
     */
    cc.arduino.cli.commands.Lib.DownloadResourceOrBuilder getResourcesOrBuilder();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.LibraryRelease}
   */
  public  static final class LibraryRelease extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.LibraryRelease)
      LibraryReleaseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LibraryRelease.newBuilder() to construct.
    private LibraryRelease(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LibraryRelease() {
      author_ = "";
      version_ = "";
      maintainer_ = "";
      sentence_ = "";
      paragraph_ = "";
      website_ = "";
      category_ = "";
      architectures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      types_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

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

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

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

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

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

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

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

              category_ = s;
              break;
            }
            case 66: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                architectures_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              architectures_.add(s);
              break;
            }
            case 74: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                types_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              types_.add(s);
              break;
            }
            case 82: {
              cc.arduino.cli.commands.Lib.DownloadResource.Builder subBuilder = null;
              if (resources_ != null) {
                subBuilder = resources_.toBuilder();
              }
              resources_ = input.readMessage(cc.arduino.cli.commands.Lib.DownloadResource.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(resources_);
                resources_ = 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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          architectures_ = architectures_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          types_ = types_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_LibraryRelease_descriptor;
    }

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

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

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

    public static final int MAINTAINER_FIELD_NUMBER = 3;
    private volatile java.lang.Object maintainer_;
    /**
     * <code>string maintainer = 3;</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 = 3;</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 SENTENCE_FIELD_NUMBER = 4;
    private volatile java.lang.Object sentence_;
    /**
     * <code>string sentence = 4;</code>
     */
    public java.lang.String getSentence() {
      java.lang.Object ref = sentence_;
      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();
        sentence_ = s;
        return s;
      }
    }
    /**
     * <code>string sentence = 4;</code>
     */
    public com.google.protobuf.ByteString
        getSentenceBytes() {
      java.lang.Object ref = sentence_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sentence_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PARAGRAPH_FIELD_NUMBER = 5;
    private volatile java.lang.Object paragraph_;
    /**
     * <code>string paragraph = 5;</code>
     */
    public java.lang.String getParagraph() {
      java.lang.Object ref = paragraph_;
      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();
        paragraph_ = s;
        return s;
      }
    }
    /**
     * <code>string paragraph = 5;</code>
     */
    public com.google.protobuf.ByteString
        getParagraphBytes() {
      java.lang.Object ref = paragraph_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        paragraph_ = 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 CATEGORY_FIELD_NUMBER = 7;
    private volatile java.lang.Object category_;
    /**
     * <code>string category = 7;</code>
     */
    public java.lang.String getCategory() {
      java.lang.Object ref = category_;
      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();
        category_ = s;
        return s;
      }
    }
    /**
     * <code>string category = 7;</code>
     */
    public com.google.protobuf.ByteString
        getCategoryBytes() {
      java.lang.Object ref = category_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        category_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ARCHITECTURES_FIELD_NUMBER = 8;
    private com.google.protobuf.LazyStringList architectures_;
    /**
     * <code>repeated string architectures = 8;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getArchitecturesList() {
      return architectures_;
    }
    /**
     * <code>repeated string architectures = 8;</code>
     */
    public int getArchitecturesCount() {
      return architectures_.size();
    }
    /**
     * <code>repeated string architectures = 8;</code>
     */
    public java.lang.String getArchitectures(int index) {
      return architectures_.get(index);
    }
    /**
     * <code>repeated string architectures = 8;</code>
     */
    public com.google.protobuf.ByteString
        getArchitecturesBytes(int index) {
      return architectures_.getByteString(index);
    }

    public static final int TYPES_FIELD_NUMBER = 9;
    private com.google.protobuf.LazyStringList types_;
    /**
     * <code>repeated string types = 9;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getTypesList() {
      return types_;
    }
    /**
     * <code>repeated string types = 9;</code>
     */
    public int getTypesCount() {
      return types_.size();
    }
    /**
     * <code>repeated string types = 9;</code>
     */
    public java.lang.String getTypes(int index) {
      return types_.get(index);
    }
    /**
     * <code>repeated string types = 9;</code>
     */
    public com.google.protobuf.ByteString
        getTypesBytes(int index) {
      return types_.getByteString(index);
    }

    public static final int RESOURCES_FIELD_NUMBER = 10;
    private cc.arduino.cli.commands.Lib.DownloadResource resources_;
    /**
     * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
     */
    public boolean hasResources() {
      return resources_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
     */
    public cc.arduino.cli.commands.Lib.DownloadResource getResources() {
      return resources_ == null ? cc.arduino.cli.commands.Lib.DownloadResource.getDefaultInstance() : resources_;
    }
    /**
     * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
     */
    public cc.arduino.cli.commands.Lib.DownloadResourceOrBuilder getResourcesOrBuilder() {
      return getResources();
    }

    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 (!getAuthorBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, author_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, version_);
      }
      if (!getMaintainerBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, maintainer_);
      }
      if (!getSentenceBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, sentence_);
      }
      if (!getParagraphBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, paragraph_);
      }
      if (!getWebsiteBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, website_);
      }
      if (!getCategoryBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, category_);
      }
      for (int i = 0; i < architectures_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, architectures_.getRaw(i));
      }
      for (int i = 0; i < types_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, types_.getRaw(i));
      }
      if (resources_ != null) {
        output.writeMessage(10, getResources());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getAuthorBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, author_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, version_);
      }
      if (!getMaintainerBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, maintainer_);
      }
      if (!getSentenceBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, sentence_);
      }
      if (!getParagraphBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, paragraph_);
      }
      if (!getWebsiteBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, website_);
      }
      if (!getCategoryBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, category_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < architectures_.size(); i++) {
          dataSize += computeStringSizeNoTag(architectures_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getArchitecturesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < types_.size(); i++) {
          dataSize += computeStringSizeNoTag(types_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTypesList().size();
      }
      if (resources_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getResources());
      }
      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.Lib.LibraryRelease)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.LibraryRelease other = (cc.arduino.cli.commands.Lib.LibraryRelease) obj;

      if (!getAuthor()
          .equals(other.getAuthor())) return false;
      if (!getVersion()
          .equals(other.getVersion())) return false;
      if (!getMaintainer()
          .equals(other.getMaintainer())) return false;
      if (!getSentence()
          .equals(other.getSentence())) return false;
      if (!getParagraph()
          .equals(other.getParagraph())) return false;
      if (!getWebsite()
          .equals(other.getWebsite())) return false;
      if (!getCategory()
          .equals(other.getCategory())) return false;
      if (!getArchitecturesList()
          .equals(other.getArchitecturesList())) return false;
      if (!getTypesList()
          .equals(other.getTypesList())) return false;
      if (hasResources() != other.hasResources()) return false;
      if (hasResources()) {
        if (!getResources()
            .equals(other.getResources())) 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) + AUTHOR_FIELD_NUMBER;
      hash = (53 * hash) + getAuthor().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (37 * hash) + MAINTAINER_FIELD_NUMBER;
      hash = (53 * hash) + getMaintainer().hashCode();
      hash = (37 * hash) + SENTENCE_FIELD_NUMBER;
      hash = (53 * hash) + getSentence().hashCode();
      hash = (37 * hash) + PARAGRAPH_FIELD_NUMBER;
      hash = (53 * hash) + getParagraph().hashCode();
      hash = (37 * hash) + WEBSITE_FIELD_NUMBER;
      hash = (53 * hash) + getWebsite().hashCode();
      hash = (37 * hash) + CATEGORY_FIELD_NUMBER;
      hash = (53 * hash) + getCategory().hashCode();
      if (getArchitecturesCount() > 0) {
        hash = (37 * hash) + ARCHITECTURES_FIELD_NUMBER;
        hash = (53 * hash) + getArchitecturesList().hashCode();
      }
      if (getTypesCount() > 0) {
        hash = (37 * hash) + TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getTypesList().hashCode();
      }
      if (hasResources()) {
        hash = (37 * hash) + RESOURCES_FIELD_NUMBER;
        hash = (53 * hash) + getResources().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      // Construct using cc.arduino.cli.commands.Lib.LibraryRelease.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();
        author_ = "";

        version_ = "";

        maintainer_ = "";

        sentence_ = "";

        paragraph_ = "";

        website_ = "";

        category_ = "";

        architectures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        types_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (resourcesBuilder_ == null) {
          resources_ = null;
        } else {
          resources_ = null;
          resourcesBuilder_ = null;
        }
        return this;
      }

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Lib.LibraryRelease buildPartial() {
        cc.arduino.cli.commands.Lib.LibraryRelease result = new cc.arduino.cli.commands.Lib.LibraryRelease(this);
        int from_bitField0_ = bitField0_;
        result.author_ = author_;
        result.version_ = version_;
        result.maintainer_ = maintainer_;
        result.sentence_ = sentence_;
        result.paragraph_ = paragraph_;
        result.website_ = website_;
        result.category_ = category_;
        if (((bitField0_ & 0x00000001) != 0)) {
          architectures_ = architectures_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.architectures_ = architectures_;
        if (((bitField0_ & 0x00000002) != 0)) {
          types_ = types_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.types_ = types_;
        if (resourcesBuilder_ == null) {
          result.resources_ = resources_;
        } else {
          result.resources_ = resourcesBuilder_.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.Lib.LibraryRelease) {
          return mergeFrom((cc.arduino.cli.commands.Lib.LibraryRelease)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Lib.LibraryRelease other) {
        if (other == cc.arduino.cli.commands.Lib.LibraryRelease.getDefaultInstance()) return this;
        if (!other.getAuthor().isEmpty()) {
          author_ = other.author_;
          onChanged();
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          onChanged();
        }
        if (!other.getMaintainer().isEmpty()) {
          maintainer_ = other.maintainer_;
          onChanged();
        }
        if (!other.getSentence().isEmpty()) {
          sentence_ = other.sentence_;
          onChanged();
        }
        if (!other.getParagraph().isEmpty()) {
          paragraph_ = other.paragraph_;
          onChanged();
        }
        if (!other.getWebsite().isEmpty()) {
          website_ = other.website_;
          onChanged();
        }
        if (!other.getCategory().isEmpty()) {
          category_ = other.category_;
          onChanged();
        }
        if (!other.architectures_.isEmpty()) {
          if (architectures_.isEmpty()) {
            architectures_ = other.architectures_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureArchitecturesIsMutable();
            architectures_.addAll(other.architectures_);
          }
          onChanged();
        }
        if (!other.types_.isEmpty()) {
          if (types_.isEmpty()) {
            types_ = other.types_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureTypesIsMutable();
            types_.addAll(other.types_);
          }
          onChanged();
        }
        if (other.hasResources()) {
          mergeResources(other.getResources());
        }
        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.Lib.LibraryRelease parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Lib.LibraryRelease) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object author_ = "";
      /**
       * <code>string author = 1;</code>
       */
      public java.lang.String getAuthor() {
        java.lang.Object ref = author_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          author_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string author = 1;</code>
       */
      public com.google.protobuf.ByteString
          getAuthorBytes() {
        java.lang.Object ref = author_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          author_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string author = 1;</code>
       */
      public Builder setAuthor(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        author_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string author = 1;</code>
       */
      public Builder clearAuthor() {
        
        author_ = getDefaultInstance().getAuthor();
        onChanged();
        return this;
      }
      /**
       * <code>string author = 1;</code>
       */
      public Builder setAuthorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        author_ = value;
        onChanged();
        return this;
      }

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

      private java.lang.Object maintainer_ = "";
      /**
       * <code>string maintainer = 3;</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 = 3;</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 = 3;</code>
       */
      public Builder setMaintainer(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        maintainer_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string maintainer = 3;</code>
       */
      public Builder clearMaintainer() {
        
        maintainer_ = getDefaultInstance().getMaintainer();
        onChanged();
        return this;
      }
      /**
       * <code>string maintainer = 3;</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 sentence_ = "";
      /**
       * <code>string sentence = 4;</code>
       */
      public java.lang.String getSentence() {
        java.lang.Object ref = sentence_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sentence_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string sentence = 4;</code>
       */
      public com.google.protobuf.ByteString
          getSentenceBytes() {
        java.lang.Object ref = sentence_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sentence_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string sentence = 4;</code>
       */
      public Builder setSentence(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sentence_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string sentence = 4;</code>
       */
      public Builder clearSentence() {
        
        sentence_ = getDefaultInstance().getSentence();
        onChanged();
        return this;
      }
      /**
       * <code>string sentence = 4;</code>
       */
      public Builder setSentenceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sentence_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object paragraph_ = "";
      /**
       * <code>string paragraph = 5;</code>
       */
      public java.lang.String getParagraph() {
        java.lang.Object ref = paragraph_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          paragraph_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string paragraph = 5;</code>
       */
      public com.google.protobuf.ByteString
          getParagraphBytes() {
        java.lang.Object ref = paragraph_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          paragraph_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string paragraph = 5;</code>
       */
      public Builder setParagraph(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        paragraph_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string paragraph = 5;</code>
       */
      public Builder clearParagraph() {
        
        paragraph_ = getDefaultInstance().getParagraph();
        onChanged();
        return this;
      }
      /**
       * <code>string paragraph = 5;</code>
       */
      public Builder setParagraphBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        paragraph_ = 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 category_ = "";
      /**
       * <code>string category = 7;</code>
       */
      public java.lang.String getCategory() {
        java.lang.Object ref = category_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          category_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string category = 7;</code>
       */
      public com.google.protobuf.ByteString
          getCategoryBytes() {
        java.lang.Object ref = category_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          category_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string category = 7;</code>
       */
      public Builder setCategory(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        category_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string category = 7;</code>
       */
      public Builder clearCategory() {
        
        category_ = getDefaultInstance().getCategory();
        onChanged();
        return this;
      }
      /**
       * <code>string category = 7;</code>
       */
      public Builder setCategoryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        category_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList architectures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureArchitecturesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          architectures_ = new com.google.protobuf.LazyStringArrayList(architectures_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getArchitecturesList() {
        return architectures_.getUnmodifiableView();
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public int getArchitecturesCount() {
        return architectures_.size();
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public java.lang.String getArchitectures(int index) {
        return architectures_.get(index);
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public com.google.protobuf.ByteString
          getArchitecturesBytes(int index) {
        return architectures_.getByteString(index);
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public Builder setArchitectures(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArchitecturesIsMutable();
        architectures_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public Builder addArchitectures(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArchitecturesIsMutable();
        architectures_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public Builder addAllArchitectures(
          java.lang.Iterable<java.lang.String> values) {
        ensureArchitecturesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, architectures_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public Builder clearArchitectures() {
        architectures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public Builder addArchitecturesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureArchitecturesIsMutable();
        architectures_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList types_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureTypesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          types_ = new com.google.protobuf.LazyStringArrayList(types_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getTypesList() {
        return types_.getUnmodifiableView();
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public int getTypesCount() {
        return types_.size();
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public java.lang.String getTypes(int index) {
        return types_.get(index);
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public com.google.protobuf.ByteString
          getTypesBytes(int index) {
        return types_.getByteString(index);
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public Builder setTypes(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTypesIsMutable();
        types_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public Builder addTypes(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTypesIsMutable();
        types_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public Builder addAllTypes(
          java.lang.Iterable<java.lang.String> values) {
        ensureTypesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, types_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public Builder clearTypes() {
        types_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public Builder addTypesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureTypesIsMutable();
        types_.add(value);
        onChanged();
        return this;
      }

      private cc.arduino.cli.commands.Lib.DownloadResource resources_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Lib.DownloadResource, cc.arduino.cli.commands.Lib.DownloadResource.Builder, cc.arduino.cli.commands.Lib.DownloadResourceOrBuilder> resourcesBuilder_;
      /**
       * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
       */
      public boolean hasResources() {
        return resourcesBuilder_ != null || resources_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
       */
      public cc.arduino.cli.commands.Lib.DownloadResource getResources() {
        if (resourcesBuilder_ == null) {
          return resources_ == null ? cc.arduino.cli.commands.Lib.DownloadResource.getDefaultInstance() : resources_;
        } else {
          return resourcesBuilder_.getMessage();
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
       */
      public Builder setResources(cc.arduino.cli.commands.Lib.DownloadResource value) {
        if (resourcesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          resources_ = value;
          onChanged();
        } else {
          resourcesBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
       */
      public Builder setResources(
          cc.arduino.cli.commands.Lib.DownloadResource.Builder builderForValue) {
        if (resourcesBuilder_ == null) {
          resources_ = builderForValue.build();
          onChanged();
        } else {
          resourcesBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
       */
      public Builder mergeResources(cc.arduino.cli.commands.Lib.DownloadResource value) {
        if (resourcesBuilder_ == null) {
          if (resources_ != null) {
            resources_ =
              cc.arduino.cli.commands.Lib.DownloadResource.newBuilder(resources_).mergeFrom(value).buildPartial();
          } else {
            resources_ = value;
          }
          onChanged();
        } else {
          resourcesBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
       */
      public Builder clearResources() {
        if (resourcesBuilder_ == null) {
          resources_ = null;
          onChanged();
        } else {
          resources_ = null;
          resourcesBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
       */
      public cc.arduino.cli.commands.Lib.DownloadResource.Builder getResourcesBuilder() {
        
        onChanged();
        return getResourcesFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
       */
      public cc.arduino.cli.commands.Lib.DownloadResourceOrBuilder getResourcesOrBuilder() {
        if (resourcesBuilder_ != null) {
          return resourcesBuilder_.getMessageOrBuilder();
        } else {
          return resources_ == null ?
              cc.arduino.cli.commands.Lib.DownloadResource.getDefaultInstance() : resources_;
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.DownloadResource resources = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Lib.DownloadResource, cc.arduino.cli.commands.Lib.DownloadResource.Builder, cc.arduino.cli.commands.Lib.DownloadResourceOrBuilder> 
          getResourcesFieldBuilder() {
        if (resourcesBuilder_ == null) {
          resourcesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cc.arduino.cli.commands.Lib.DownloadResource, cc.arduino.cli.commands.Lib.DownloadResource.Builder, cc.arduino.cli.commands.Lib.DownloadResourceOrBuilder>(
                  getResources(),
                  getParentForChildren(),
                  isClean());
          resources_ = null;
        }
        return resourcesBuilder_;
      }
      @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.LibraryRelease)
    }

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

    public static cc.arduino.cli.commands.Lib.LibraryRelease getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

    /**
     * <code>string url = 1;</code>
     */
    java.lang.String getUrl();
    /**
     * <code>string url = 1;</code>
     */
    com.google.protobuf.ByteString
        getUrlBytes();

    /**
     * <code>string archivefilename = 2;</code>
     */
    java.lang.String getArchivefilename();
    /**
     * <code>string archivefilename = 2;</code>
     */
    com.google.protobuf.ByteString
        getArchivefilenameBytes();

    /**
     * <code>string checksum = 3;</code>
     */
    java.lang.String getChecksum();
    /**
     * <code>string checksum = 3;</code>
     */
    com.google.protobuf.ByteString
        getChecksumBytes();

    /**
     * <code>int64 size = 4;</code>
     */
    long getSize();

    /**
     * <code>string cachepath = 5;</code>
     */
    java.lang.String getCachepath();
    /**
     * <code>string cachepath = 5;</code>
     */
    com.google.protobuf.ByteString
        getCachepathBytes();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.DownloadResource}
   */
  public  static final class DownloadResource extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.DownloadResource)
      DownloadResourceOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DownloadResource.newBuilder() to construct.
    private DownloadResource(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DownloadResource() {
      url_ = "";
      archivefilename_ = "";
      checksum_ = "";
      cachepath_ = "";
    }

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

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

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

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

              checksum_ = s;
              break;
            }
            case 32: {

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

              cachepath_ = 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.Lib.internal_static_cc_arduino_cli_commands_DownloadResource_descriptor;
    }

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

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

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

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

    public static final int SIZE_FIELD_NUMBER = 4;
    private long size_;
    /**
     * <code>int64 size = 4;</code>
     */
    public long getSize() {
      return size_;
    }

    public static final int CACHEPATH_FIELD_NUMBER = 5;
    private volatile java.lang.Object cachepath_;
    /**
     * <code>string cachepath = 5;</code>
     */
    public java.lang.String getCachepath() {
      java.lang.Object ref = cachepath_;
      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();
        cachepath_ = s;
        return s;
      }
    }
    /**
     * <code>string cachepath = 5;</code>
     */
    public com.google.protobuf.ByteString
        getCachepathBytes() {
      java.lang.Object ref = cachepath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        cachepath_ = 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 (!getUrlBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, url_);
      }
      if (!getArchivefilenameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, archivefilename_);
      }
      if (!getChecksumBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, checksum_);
      }
      if (size_ != 0L) {
        output.writeInt64(4, size_);
      }
      if (!getCachepathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, cachepath_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getUrlBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, url_);
      }
      if (!getArchivefilenameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, archivefilename_);
      }
      if (!getChecksumBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, checksum_);
      }
      if (size_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, size_);
      }
      if (!getCachepathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, cachepath_);
      }
      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.Lib.DownloadResource)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.DownloadResource other = (cc.arduino.cli.commands.Lib.DownloadResource) obj;

      if (!getUrl()
          .equals(other.getUrl())) return false;
      if (!getArchivefilename()
          .equals(other.getArchivefilename())) return false;
      if (!getChecksum()
          .equals(other.getChecksum())) return false;
      if (getSize()
          != other.getSize()) return false;
      if (!getCachepath()
          .equals(other.getCachepath())) 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) + URL_FIELD_NUMBER;
      hash = (53 * hash) + getUrl().hashCode();
      hash = (37 * hash) + ARCHIVEFILENAME_FIELD_NUMBER;
      hash = (53 * hash) + getArchivefilename().hashCode();
      hash = (37 * hash) + CHECKSUM_FIELD_NUMBER;
      hash = (53 * hash) + getChecksum().hashCode();
      hash = (37 * hash) + SIZE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getSize());
      hash = (37 * hash) + CACHEPATH_FIELD_NUMBER;
      hash = (53 * hash) + getCachepath().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      // Construct using cc.arduino.cli.commands.Lib.DownloadResource.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();
        url_ = "";

        archivefilename_ = "";

        checksum_ = "";

        size_ = 0L;

        cachepath_ = "";

        return this;
      }

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Lib.DownloadResource buildPartial() {
        cc.arduino.cli.commands.Lib.DownloadResource result = new cc.arduino.cli.commands.Lib.DownloadResource(this);
        result.url_ = url_;
        result.archivefilename_ = archivefilename_;
        result.checksum_ = checksum_;
        result.size_ = size_;
        result.cachepath_ = cachepath_;
        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.Lib.DownloadResource) {
          return mergeFrom((cc.arduino.cli.commands.Lib.DownloadResource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Lib.DownloadResource other) {
        if (other == cc.arduino.cli.commands.Lib.DownloadResource.getDefaultInstance()) return this;
        if (!other.getUrl().isEmpty()) {
          url_ = other.url_;
          onChanged();
        }
        if (!other.getArchivefilename().isEmpty()) {
          archivefilename_ = other.archivefilename_;
          onChanged();
        }
        if (!other.getChecksum().isEmpty()) {
          checksum_ = other.checksum_;
          onChanged();
        }
        if (other.getSize() != 0L) {
          setSize(other.getSize());
        }
        if (!other.getCachepath().isEmpty()) {
          cachepath_ = other.cachepath_;
          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.Lib.DownloadResource parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Lib.DownloadResource) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object url_ = "";
      /**
       * <code>string url = 1;</code>
       */
      public java.lang.String getUrl() {
        java.lang.Object ref = url_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          url_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string url = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUrlBytes() {
        java.lang.Object ref = url_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          url_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string url = 1;</code>
       */
      public Builder setUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        url_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string url = 1;</code>
       */
      public Builder clearUrl() {
        
        url_ = getDefaultInstance().getUrl();
        onChanged();
        return this;
      }
      /**
       * <code>string url = 1;</code>
       */
      public Builder setUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        url_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object archivefilename_ = "";
      /**
       * <code>string archivefilename = 2;</code>
       */
      public java.lang.String getArchivefilename() {
        java.lang.Object ref = archivefilename_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          archivefilename_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string archivefilename = 2;</code>
       */
      public com.google.protobuf.ByteString
          getArchivefilenameBytes() {
        java.lang.Object ref = archivefilename_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          archivefilename_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string archivefilename = 2;</code>
       */
      public Builder setArchivefilename(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        archivefilename_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string archivefilename = 2;</code>
       */
      public Builder clearArchivefilename() {
        
        archivefilename_ = getDefaultInstance().getArchivefilename();
        onChanged();
        return this;
      }
      /**
       * <code>string archivefilename = 2;</code>
       */
      public Builder setArchivefilenameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        archivefilename_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object checksum_ = "";
      /**
       * <code>string checksum = 3;</code>
       */
      public java.lang.String getChecksum() {
        java.lang.Object ref = checksum_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          checksum_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string checksum = 3;</code>
       */
      public com.google.protobuf.ByteString
          getChecksumBytes() {
        java.lang.Object ref = checksum_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          checksum_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string checksum = 3;</code>
       */
      public Builder setChecksum(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        checksum_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string checksum = 3;</code>
       */
      public Builder clearChecksum() {
        
        checksum_ = getDefaultInstance().getChecksum();
        onChanged();
        return this;
      }
      /**
       * <code>string checksum = 3;</code>
       */
      public Builder setChecksumBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        checksum_ = value;
        onChanged();
        return this;
      }

      private long size_ ;
      /**
       * <code>int64 size = 4;</code>
       */
      public long getSize() {
        return size_;
      }
      /**
       * <code>int64 size = 4;</code>
       */
      public Builder setSize(long value) {
        
        size_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 size = 4;</code>
       */
      public Builder clearSize() {
        
        size_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object cachepath_ = "";
      /**
       * <code>string cachepath = 5;</code>
       */
      public java.lang.String getCachepath() {
        java.lang.Object ref = cachepath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          cachepath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string cachepath = 5;</code>
       */
      public com.google.protobuf.ByteString
          getCachepathBytes() {
        java.lang.Object ref = cachepath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          cachepath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string cachepath = 5;</code>
       */
      public Builder setCachepath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        cachepath_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string cachepath = 5;</code>
       */
      public Builder clearCachepath() {
        
        cachepath_ = getDefaultInstance().getCachepath();
        onChanged();
        return this;
      }
      /**
       * <code>string cachepath = 5;</code>
       */
      public Builder setCachepathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        cachepath_ = 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.DownloadResource)
    }

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

    public static cc.arduino.cli.commands.Lib.DownloadResource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface LibraryListReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.LibraryListReq)
      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 all = 2;</code>
     */
    boolean getAll();

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

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

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

              all_ = input.readBool();
              break;
            }
            case 24: {

              updatable_ = 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.Lib.internal_static_cc_arduino_cli_commands_LibraryListReq_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_LibraryListReq_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Lib.LibraryListReq.class, cc.arduino.cli.commands.Lib.LibraryListReq.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 ALL_FIELD_NUMBER = 2;
    private boolean all_;
    /**
     * <code>bool all = 2;</code>
     */
    public boolean getAll() {
      return all_;
    }

    public static final int UPDATABLE_FIELD_NUMBER = 3;
    private boolean updatable_;
    /**
     * <code>bool updatable = 3;</code>
     */
    public boolean getUpdatable() {
      return updatable_;
    }

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

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

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

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

      // Construct using cc.arduino.cli.commands.Lib.LibraryListReq.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;
        }
        all_ = false;

        updatable_ = false;

        return this;
      }

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

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

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

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

      public Builder mergeFrom(cc.arduino.cli.commands.Lib.LibraryListReq other) {
        if (other == cc.arduino.cli.commands.Lib.LibraryListReq.getDefaultInstance()) return this;
        if (other.hasInstance()) {
          mergeInstance(other.getInstance());
        }
        if (other.getAll() != false) {
          setAll(other.getAll());
        }
        if (other.getUpdatable() != false) {
          setUpdatable(other.getUpdatable());
        }
        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.Lib.LibraryListReq parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Lib.LibraryListReq) 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 all_ ;
      /**
       * <code>bool all = 2;</code>
       */
      public boolean getAll() {
        return all_;
      }
      /**
       * <code>bool all = 2;</code>
       */
      public Builder setAll(boolean value) {
        
        all_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool all = 2;</code>
       */
      public Builder clearAll() {
        
        all_ = false;
        onChanged();
        return this;
      }

      private boolean updatable_ ;
      /**
       * <code>bool updatable = 3;</code>
       */
      public boolean getUpdatable() {
        return updatable_;
      }
      /**
       * <code>bool updatable = 3;</code>
       */
      public Builder setUpdatable(boolean value) {
        
        updatable_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool updatable = 3;</code>
       */
      public Builder clearUpdatable() {
        
        updatable_ = 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.LibraryListReq)
    }

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

    public static cc.arduino.cli.commands.Lib.LibraryListReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

    /**
     * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
     */
    java.util.List<cc.arduino.cli.commands.Lib.InstalledLibrary> 
        getInstalledLibraryList();
    /**
     * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
     */
    cc.arduino.cli.commands.Lib.InstalledLibrary getInstalledLibrary(int index);
    /**
     * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
     */
    int getInstalledLibraryCount();
    /**
     * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
     */
    java.util.List<? extends cc.arduino.cli.commands.Lib.InstalledLibraryOrBuilder> 
        getInstalledLibraryOrBuilderList();
    /**
     * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
     */
    cc.arduino.cli.commands.Lib.InstalledLibraryOrBuilder getInstalledLibraryOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.LibraryListResp}
   */
  public  static final class LibraryListResp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.LibraryListResp)
      LibraryListRespOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LibraryListResp.newBuilder() to construct.
    private LibraryListResp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LibraryListResp() {
      installedLibrary_ = java.util.Collections.emptyList();
    }

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

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

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

    public static final int INSTALLED_LIBRARY_FIELD_NUMBER = 1;
    private java.util.List<cc.arduino.cli.commands.Lib.InstalledLibrary> installedLibrary_;
    /**
     * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
     */
    public java.util.List<cc.arduino.cli.commands.Lib.InstalledLibrary> getInstalledLibraryList() {
      return installedLibrary_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
     */
    public java.util.List<? extends cc.arduino.cli.commands.Lib.InstalledLibraryOrBuilder> 
        getInstalledLibraryOrBuilderList() {
      return installedLibrary_;
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
     */
    public int getInstalledLibraryCount() {
      return installedLibrary_.size();
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
     */
    public cc.arduino.cli.commands.Lib.InstalledLibrary getInstalledLibrary(int index) {
      return installedLibrary_.get(index);
    }
    /**
     * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
     */
    public cc.arduino.cli.commands.Lib.InstalledLibraryOrBuilder getInstalledLibraryOrBuilder(
        int index) {
      return installedLibrary_.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 < installedLibrary_.size(); i++) {
        output.writeMessage(1, installedLibrary_.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 < installedLibrary_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, installedLibrary_.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.Lib.LibraryListResp)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.LibraryListResp other = (cc.arduino.cli.commands.Lib.LibraryListResp) obj;

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

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

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

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

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

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

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

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

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

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

      private java.util.List<cc.arduino.cli.commands.Lib.InstalledLibrary> installedLibrary_ =
        java.util.Collections.emptyList();
      private void ensureInstalledLibraryIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          installedLibrary_ = new java.util.ArrayList<cc.arduino.cli.commands.Lib.InstalledLibrary>(installedLibrary_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Lib.InstalledLibrary, cc.arduino.cli.commands.Lib.InstalledLibrary.Builder, cc.arduino.cli.commands.Lib.InstalledLibraryOrBuilder> installedLibraryBuilder_;

      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Lib.InstalledLibrary> getInstalledLibraryList() {
        if (installedLibraryBuilder_ == null) {
          return java.util.Collections.unmodifiableList(installedLibrary_);
        } else {
          return installedLibraryBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public int getInstalledLibraryCount() {
        if (installedLibraryBuilder_ == null) {
          return installedLibrary_.size();
        } else {
          return installedLibraryBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.InstalledLibrary getInstalledLibrary(int index) {
        if (installedLibraryBuilder_ == null) {
          return installedLibrary_.get(index);
        } else {
          return installedLibraryBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public Builder setInstalledLibrary(
          int index, cc.arduino.cli.commands.Lib.InstalledLibrary value) {
        if (installedLibraryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInstalledLibraryIsMutable();
          installedLibrary_.set(index, value);
          onChanged();
        } else {
          installedLibraryBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public Builder setInstalledLibrary(
          int index, cc.arduino.cli.commands.Lib.InstalledLibrary.Builder builderForValue) {
        if (installedLibraryBuilder_ == null) {
          ensureInstalledLibraryIsMutable();
          installedLibrary_.set(index, builderForValue.build());
          onChanged();
        } else {
          installedLibraryBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public Builder addInstalledLibrary(cc.arduino.cli.commands.Lib.InstalledLibrary value) {
        if (installedLibraryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInstalledLibraryIsMutable();
          installedLibrary_.add(value);
          onChanged();
        } else {
          installedLibraryBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public Builder addInstalledLibrary(
          int index, cc.arduino.cli.commands.Lib.InstalledLibrary value) {
        if (installedLibraryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInstalledLibraryIsMutable();
          installedLibrary_.add(index, value);
          onChanged();
        } else {
          installedLibraryBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public Builder addInstalledLibrary(
          cc.arduino.cli.commands.Lib.InstalledLibrary.Builder builderForValue) {
        if (installedLibraryBuilder_ == null) {
          ensureInstalledLibraryIsMutable();
          installedLibrary_.add(builderForValue.build());
          onChanged();
        } else {
          installedLibraryBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public Builder addInstalledLibrary(
          int index, cc.arduino.cli.commands.Lib.InstalledLibrary.Builder builderForValue) {
        if (installedLibraryBuilder_ == null) {
          ensureInstalledLibraryIsMutable();
          installedLibrary_.add(index, builderForValue.build());
          onChanged();
        } else {
          installedLibraryBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public Builder addAllInstalledLibrary(
          java.lang.Iterable<? extends cc.arduino.cli.commands.Lib.InstalledLibrary> values) {
        if (installedLibraryBuilder_ == null) {
          ensureInstalledLibraryIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, installedLibrary_);
          onChanged();
        } else {
          installedLibraryBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public Builder clearInstalledLibrary() {
        if (installedLibraryBuilder_ == null) {
          installedLibrary_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          installedLibraryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public Builder removeInstalledLibrary(int index) {
        if (installedLibraryBuilder_ == null) {
          ensureInstalledLibraryIsMutable();
          installedLibrary_.remove(index);
          onChanged();
        } else {
          installedLibraryBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.InstalledLibrary.Builder getInstalledLibraryBuilder(
          int index) {
        return getInstalledLibraryFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.InstalledLibraryOrBuilder getInstalledLibraryOrBuilder(
          int index) {
        if (installedLibraryBuilder_ == null) {
          return installedLibrary_.get(index);  } else {
          return installedLibraryBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public java.util.List<? extends cc.arduino.cli.commands.Lib.InstalledLibraryOrBuilder> 
           getInstalledLibraryOrBuilderList() {
        if (installedLibraryBuilder_ != null) {
          return installedLibraryBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(installedLibrary_);
        }
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.InstalledLibrary.Builder addInstalledLibraryBuilder() {
        return getInstalledLibraryFieldBuilder().addBuilder(
            cc.arduino.cli.commands.Lib.InstalledLibrary.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.InstalledLibrary.Builder addInstalledLibraryBuilder(
          int index) {
        return getInstalledLibraryFieldBuilder().addBuilder(
            index, cc.arduino.cli.commands.Lib.InstalledLibrary.getDefaultInstance());
      }
      /**
       * <code>repeated .cc.arduino.cli.commands.InstalledLibrary installed_library = 1;</code>
       */
      public java.util.List<cc.arduino.cli.commands.Lib.InstalledLibrary.Builder> 
           getInstalledLibraryBuilderList() {
        return getInstalledLibraryFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          cc.arduino.cli.commands.Lib.InstalledLibrary, cc.arduino.cli.commands.Lib.InstalledLibrary.Builder, cc.arduino.cli.commands.Lib.InstalledLibraryOrBuilder> 
          getInstalledLibraryFieldBuilder() {
        if (installedLibraryBuilder_ == null) {
          installedLibraryBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              cc.arduino.cli.commands.Lib.InstalledLibrary, cc.arduino.cli.commands.Lib.InstalledLibrary.Builder, cc.arduino.cli.commands.Lib.InstalledLibraryOrBuilder>(
                  installedLibrary_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          installedLibrary_ = null;
        }
        return installedLibraryBuilder_;
      }
      @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.LibraryListResp)
    }

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

    public static cc.arduino.cli.commands.Lib.LibraryListResp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

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

    /**
     * <code>.cc.arduino.cli.commands.Library library = 1;</code>
     */
    boolean hasLibrary();
    /**
     * <code>.cc.arduino.cli.commands.Library library = 1;</code>
     */
    cc.arduino.cli.commands.Lib.Library getLibrary();
    /**
     * <code>.cc.arduino.cli.commands.Library library = 1;</code>
     */
    cc.arduino.cli.commands.Lib.LibraryOrBuilder getLibraryOrBuilder();

    /**
     * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
     */
    boolean hasRelease();
    /**
     * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
     */
    cc.arduino.cli.commands.Lib.LibraryRelease getRelease();
    /**
     * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
     */
    cc.arduino.cli.commands.Lib.LibraryReleaseOrBuilder getReleaseOrBuilder();
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.InstalledLibrary}
   */
  public  static final class InstalledLibrary extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.InstalledLibrary)
      InstalledLibraryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use InstalledLibrary.newBuilder() to construct.
    private InstalledLibrary(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private InstalledLibrary() {
    }

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

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

              break;
            }
            case 18: {
              cc.arduino.cli.commands.Lib.LibraryRelease.Builder subBuilder = null;
              if (release_ != null) {
                subBuilder = release_.toBuilder();
              }
              release_ = input.readMessage(cc.arduino.cli.commands.Lib.LibraryRelease.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(release_);
                release_ = 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.Lib.internal_static_cc_arduino_cli_commands_InstalledLibrary_descriptor;
    }

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

    public static final int LIBRARY_FIELD_NUMBER = 1;
    private cc.arduino.cli.commands.Lib.Library library_;
    /**
     * <code>.cc.arduino.cli.commands.Library library = 1;</code>
     */
    public boolean hasLibrary() {
      return library_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.Library library = 1;</code>
     */
    public cc.arduino.cli.commands.Lib.Library getLibrary() {
      return library_ == null ? cc.arduino.cli.commands.Lib.Library.getDefaultInstance() : library_;
    }
    /**
     * <code>.cc.arduino.cli.commands.Library library = 1;</code>
     */
    public cc.arduino.cli.commands.Lib.LibraryOrBuilder getLibraryOrBuilder() {
      return getLibrary();
    }

    public static final int RELEASE_FIELD_NUMBER = 2;
    private cc.arduino.cli.commands.Lib.LibraryRelease release_;
    /**
     * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
     */
    public boolean hasRelease() {
      return release_ != null;
    }
    /**
     * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
     */
    public cc.arduino.cli.commands.Lib.LibraryRelease getRelease() {
      return release_ == null ? cc.arduino.cli.commands.Lib.LibraryRelease.getDefaultInstance() : release_;
    }
    /**
     * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
     */
    public cc.arduino.cli.commands.Lib.LibraryReleaseOrBuilder getReleaseOrBuilder() {
      return getRelease();
    }

    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 (library_ != null) {
        output.writeMessage(1, getLibrary());
      }
      if (release_ != null) {
        output.writeMessage(2, getRelease());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (library_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getLibrary());
      }
      if (release_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getRelease());
      }
      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.Lib.InstalledLibrary)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.InstalledLibrary other = (cc.arduino.cli.commands.Lib.InstalledLibrary) obj;

      if (hasLibrary() != other.hasLibrary()) return false;
      if (hasLibrary()) {
        if (!getLibrary()
            .equals(other.getLibrary())) return false;
      }
      if (hasRelease() != other.hasRelease()) return false;
      if (hasRelease()) {
        if (!getRelease()
            .equals(other.getRelease())) 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 (hasLibrary()) {
        hash = (37 * hash) + LIBRARY_FIELD_NUMBER;
        hash = (53 * hash) + getLibrary().hashCode();
      }
      if (hasRelease()) {
        hash = (37 * hash) + RELEASE_FIELD_NUMBER;
        hash = (53 * hash) + getRelease().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      // Construct using cc.arduino.cli.commands.Lib.InstalledLibrary.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 (libraryBuilder_ == null) {
          library_ = null;
        } else {
          library_ = null;
          libraryBuilder_ = null;
        }
        if (releaseBuilder_ == null) {
          release_ = null;
        } else {
          release_ = null;
          releaseBuilder_ = null;
        }
        return this;
      }

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Lib.InstalledLibrary buildPartial() {
        cc.arduino.cli.commands.Lib.InstalledLibrary result = new cc.arduino.cli.commands.Lib.InstalledLibrary(this);
        if (libraryBuilder_ == null) {
          result.library_ = library_;
        } else {
          result.library_ = libraryBuilder_.build();
        }
        if (releaseBuilder_ == null) {
          result.release_ = release_;
        } else {
          result.release_ = releaseBuilder_.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.Lib.InstalledLibrary) {
          return mergeFrom((cc.arduino.cli.commands.Lib.InstalledLibrary)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Lib.InstalledLibrary other) {
        if (other == cc.arduino.cli.commands.Lib.InstalledLibrary.getDefaultInstance()) return this;
        if (other.hasLibrary()) {
          mergeLibrary(other.getLibrary());
        }
        if (other.hasRelease()) {
          mergeRelease(other.getRelease());
        }
        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.Lib.InstalledLibrary parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Lib.InstalledLibrary) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private cc.arduino.cli.commands.Lib.Library library_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Lib.Library, cc.arduino.cli.commands.Lib.Library.Builder, cc.arduino.cli.commands.Lib.LibraryOrBuilder> libraryBuilder_;
      /**
       * <code>.cc.arduino.cli.commands.Library library = 1;</code>
       */
      public boolean hasLibrary() {
        return libraryBuilder_ != null || library_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.Library library = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.Library getLibrary() {
        if (libraryBuilder_ == null) {
          return library_ == null ? cc.arduino.cli.commands.Lib.Library.getDefaultInstance() : library_;
        } else {
          return libraryBuilder_.getMessage();
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.Library library = 1;</code>
       */
      public Builder setLibrary(cc.arduino.cli.commands.Lib.Library value) {
        if (libraryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          library_ = value;
          onChanged();
        } else {
          libraryBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Library library = 1;</code>
       */
      public Builder setLibrary(
          cc.arduino.cli.commands.Lib.Library.Builder builderForValue) {
        if (libraryBuilder_ == null) {
          library_ = builderForValue.build();
          onChanged();
        } else {
          libraryBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Library library = 1;</code>
       */
      public Builder mergeLibrary(cc.arduino.cli.commands.Lib.Library value) {
        if (libraryBuilder_ == null) {
          if (library_ != null) {
            library_ =
              cc.arduino.cli.commands.Lib.Library.newBuilder(library_).mergeFrom(value).buildPartial();
          } else {
            library_ = value;
          }
          onChanged();
        } else {
          libraryBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Library library = 1;</code>
       */
      public Builder clearLibrary() {
        if (libraryBuilder_ == null) {
          library_ = null;
          onChanged();
        } else {
          library_ = null;
          libraryBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.Library library = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.Library.Builder getLibraryBuilder() {
        
        onChanged();
        return getLibraryFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.Library library = 1;</code>
       */
      public cc.arduino.cli.commands.Lib.LibraryOrBuilder getLibraryOrBuilder() {
        if (libraryBuilder_ != null) {
          return libraryBuilder_.getMessageOrBuilder();
        } else {
          return library_ == null ?
              cc.arduino.cli.commands.Lib.Library.getDefaultInstance() : library_;
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.Library library = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Lib.Library, cc.arduino.cli.commands.Lib.Library.Builder, cc.arduino.cli.commands.Lib.LibraryOrBuilder> 
          getLibraryFieldBuilder() {
        if (libraryBuilder_ == null) {
          libraryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cc.arduino.cli.commands.Lib.Library, cc.arduino.cli.commands.Lib.Library.Builder, cc.arduino.cli.commands.Lib.LibraryOrBuilder>(
                  getLibrary(),
                  getParentForChildren(),
                  isClean());
          library_ = null;
        }
        return libraryBuilder_;
      }

      private cc.arduino.cli.commands.Lib.LibraryRelease release_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Lib.LibraryRelease, cc.arduino.cli.commands.Lib.LibraryRelease.Builder, cc.arduino.cli.commands.Lib.LibraryReleaseOrBuilder> releaseBuilder_;
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
       */
      public boolean hasRelease() {
        return releaseBuilder_ != null || release_ != null;
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
       */
      public cc.arduino.cli.commands.Lib.LibraryRelease getRelease() {
        if (releaseBuilder_ == null) {
          return release_ == null ? cc.arduino.cli.commands.Lib.LibraryRelease.getDefaultInstance() : release_;
        } else {
          return releaseBuilder_.getMessage();
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
       */
      public Builder setRelease(cc.arduino.cli.commands.Lib.LibraryRelease value) {
        if (releaseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          release_ = value;
          onChanged();
        } else {
          releaseBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
       */
      public Builder setRelease(
          cc.arduino.cli.commands.Lib.LibraryRelease.Builder builderForValue) {
        if (releaseBuilder_ == null) {
          release_ = builderForValue.build();
          onChanged();
        } else {
          releaseBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
       */
      public Builder mergeRelease(cc.arduino.cli.commands.Lib.LibraryRelease value) {
        if (releaseBuilder_ == null) {
          if (release_ != null) {
            release_ =
              cc.arduino.cli.commands.Lib.LibraryRelease.newBuilder(release_).mergeFrom(value).buildPartial();
          } else {
            release_ = value;
          }
          onChanged();
        } else {
          releaseBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
       */
      public Builder clearRelease() {
        if (releaseBuilder_ == null) {
          release_ = null;
          onChanged();
        } else {
          release_ = null;
          releaseBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
       */
      public cc.arduino.cli.commands.Lib.LibraryRelease.Builder getReleaseBuilder() {
        
        onChanged();
        return getReleaseFieldBuilder().getBuilder();
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
       */
      public cc.arduino.cli.commands.Lib.LibraryReleaseOrBuilder getReleaseOrBuilder() {
        if (releaseBuilder_ != null) {
          return releaseBuilder_.getMessageOrBuilder();
        } else {
          return release_ == null ?
              cc.arduino.cli.commands.Lib.LibraryRelease.getDefaultInstance() : release_;
        }
      }
      /**
       * <code>.cc.arduino.cli.commands.LibraryRelease release = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cc.arduino.cli.commands.Lib.LibraryRelease, cc.arduino.cli.commands.Lib.LibraryRelease.Builder, cc.arduino.cli.commands.Lib.LibraryReleaseOrBuilder> 
          getReleaseFieldBuilder() {
        if (releaseBuilder_ == null) {
          releaseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cc.arduino.cli.commands.Lib.LibraryRelease, cc.arduino.cli.commands.Lib.LibraryRelease.Builder, cc.arduino.cli.commands.Lib.LibraryReleaseOrBuilder>(
                  getRelease(),
                  getParentForChildren(),
                  isClean());
          release_ = null;
        }
        return releaseBuilder_;
      }
      @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.InstalledLibrary)
    }

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

    public static cc.arduino.cli.commands.Lib.InstalledLibrary getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface LibraryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cc.arduino.cli.commands.Library)
      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 author = 2;</code>
     */
    java.lang.String getAuthor();
    /**
     * <code>string author = 2;</code>
     */
    com.google.protobuf.ByteString
        getAuthorBytes();

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

    /**
     * <code>string sentence = 4;</code>
     */
    java.lang.String getSentence();
    /**
     * <code>string sentence = 4;</code>
     */
    com.google.protobuf.ByteString
        getSentenceBytes();

    /**
     * <code>string paragraph = 5;</code>
     */
    java.lang.String getParagraph();
    /**
     * <code>string paragraph = 5;</code>
     */
    com.google.protobuf.ByteString
        getParagraphBytes();

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

    /**
     * <code>string category = 7;</code>
     */
    java.lang.String getCategory();
    /**
     * <code>string category = 7;</code>
     */
    com.google.protobuf.ByteString
        getCategoryBytes();

    /**
     * <code>repeated string architectures = 8;</code>
     */
    java.util.List<java.lang.String>
        getArchitecturesList();
    /**
     * <code>repeated string architectures = 8;</code>
     */
    int getArchitecturesCount();
    /**
     * <code>repeated string architectures = 8;</code>
     */
    java.lang.String getArchitectures(int index);
    /**
     * <code>repeated string architectures = 8;</code>
     */
    com.google.protobuf.ByteString
        getArchitecturesBytes(int index);

    /**
     * <code>repeated string types = 9;</code>
     */
    java.util.List<java.lang.String>
        getTypesList();
    /**
     * <code>repeated string types = 9;</code>
     */
    int getTypesCount();
    /**
     * <code>repeated string types = 9;</code>
     */
    java.lang.String getTypes(int index);
    /**
     * <code>repeated string types = 9;</code>
     */
    com.google.protobuf.ByteString
        getTypesBytes(int index);

    /**
     * <code>string install_dir = 10;</code>
     */
    java.lang.String getInstallDir();
    /**
     * <code>string install_dir = 10;</code>
     */
    com.google.protobuf.ByteString
        getInstallDirBytes();

    /**
     * <code>string source_dir = 11;</code>
     */
    java.lang.String getSourceDir();
    /**
     * <code>string source_dir = 11;</code>
     */
    com.google.protobuf.ByteString
        getSourceDirBytes();

    /**
     * <code>string utility_dir = 12;</code>
     */
    java.lang.String getUtilityDir();
    /**
     * <code>string utility_dir = 12;</code>
     */
    com.google.protobuf.ByteString
        getUtilityDirBytes();

    /**
     * <code>string location = 13;</code>
     */
    java.lang.String getLocation();
    /**
     * <code>string location = 13;</code>
     */
    com.google.protobuf.ByteString
        getLocationBytes();

    /**
     * <code>string container_platform = 14;</code>
     */
    java.lang.String getContainerPlatform();
    /**
     * <code>string container_platform = 14;</code>
     */
    com.google.protobuf.ByteString
        getContainerPlatformBytes();

    /**
     * <code>string layout = 15;</code>
     */
    java.lang.String getLayout();
    /**
     * <code>string layout = 15;</code>
     */
    com.google.protobuf.ByteString
        getLayoutBytes();

    /**
     * <code>string real_name = 16;</code>
     */
    java.lang.String getRealName();
    /**
     * <code>string real_name = 16;</code>
     */
    com.google.protobuf.ByteString
        getRealNameBytes();

    /**
     * <code>bool dot_a_linkage = 17;</code>
     */
    boolean getDotALinkage();

    /**
     * <code>bool precompiled = 18;</code>
     */
    boolean getPrecompiled();

    /**
     * <code>string ld_flags = 19;</code>
     */
    java.lang.String getLdFlags();
    /**
     * <code>string ld_flags = 19;</code>
     */
    com.google.protobuf.ByteString
        getLdFlagsBytes();

    /**
     * <code>bool is_legacy = 20;</code>
     */
    boolean getIsLegacy();

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

    /**
     * <code>string license = 22;</code>
     */
    java.lang.String getLicense();
    /**
     * <code>string license = 22;</code>
     */
    com.google.protobuf.ByteString
        getLicenseBytes();

    /**
     * <code>map&lt;string, string&gt; properties = 23;</code>
     */
    int getPropertiesCount();
    /**
     * <code>map&lt;string, string&gt; properties = 23;</code>
     */
    boolean containsProperties(
        java.lang.String key);
    /**
     * Use {@link #getPropertiesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getProperties();
    /**
     * <code>map&lt;string, string&gt; properties = 23;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getPropertiesMap();
    /**
     * <code>map&lt;string, string&gt; properties = 23;</code>
     */

    java.lang.String getPropertiesOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * <code>map&lt;string, string&gt; properties = 23;</code>
     */

    java.lang.String getPropertiesOrThrow(
        java.lang.String key);
  }
  /**
   * Protobuf type {@code cc.arduino.cli.commands.Library}
   */
  public  static final class Library extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cc.arduino.cli.commands.Library)
      LibraryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Library.newBuilder() to construct.
    private Library(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Library() {
      name_ = "";
      author_ = "";
      maintainer_ = "";
      sentence_ = "";
      paragraph_ = "";
      website_ = "";
      category_ = "";
      architectures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      types_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      installDir_ = "";
      sourceDir_ = "";
      utilityDir_ = "";
      location_ = "";
      containerPlatform_ = "";
      layout_ = "";
      realName_ = "";
      ldFlags_ = "";
      version_ = "";
      license_ = "";
    }

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

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

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

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

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

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

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

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

              category_ = s;
              break;
            }
            case 66: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                architectures_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              architectures_.add(s);
              break;
            }
            case 74: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                types_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              types_.add(s);
              break;
            }
            case 82: {
              java.lang.String s = input.readStringRequireUtf8();

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

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

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

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

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

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

              realName_ = s;
              break;
            }
            case 136: {

              dotALinkage_ = input.readBool();
              break;
            }
            case 144: {

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

              ldFlags_ = s;
              break;
            }
            case 160: {

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

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

              license_ = s;
              break;
            }
            case 186: {
              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                properties_ = com.google.protobuf.MapField.newMapField(
                    PropertiesDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000004;
              }
              com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
              properties__ = input.readMessage(
                  PropertiesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              properties_.getMutableMap().put(
                  properties__.getKey(), properties__.getValue());
              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)) {
          architectures_ = architectures_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          types_ = types_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_Library_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 23:
          return internalGetProperties();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_Library_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cc.arduino.cli.commands.Lib.Library.class, cc.arduino.cli.commands.Lib.Library.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 AUTHOR_FIELD_NUMBER = 2;
    private volatile java.lang.Object author_;
    /**
     * <code>string author = 2;</code>
     */
    public java.lang.String getAuthor() {
      java.lang.Object ref = author_;
      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();
        author_ = s;
        return s;
      }
    }
    /**
     * <code>string author = 2;</code>
     */
    public com.google.protobuf.ByteString
        getAuthorBytes() {
      java.lang.Object ref = author_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        author_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MAINTAINER_FIELD_NUMBER = 3;
    private volatile java.lang.Object maintainer_;
    /**
     * <code>string maintainer = 3;</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 = 3;</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 SENTENCE_FIELD_NUMBER = 4;
    private volatile java.lang.Object sentence_;
    /**
     * <code>string sentence = 4;</code>
     */
    public java.lang.String getSentence() {
      java.lang.Object ref = sentence_;
      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();
        sentence_ = s;
        return s;
      }
    }
    /**
     * <code>string sentence = 4;</code>
     */
    public com.google.protobuf.ByteString
        getSentenceBytes() {
      java.lang.Object ref = sentence_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sentence_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PARAGRAPH_FIELD_NUMBER = 5;
    private volatile java.lang.Object paragraph_;
    /**
     * <code>string paragraph = 5;</code>
     */
    public java.lang.String getParagraph() {
      java.lang.Object ref = paragraph_;
      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();
        paragraph_ = s;
        return s;
      }
    }
    /**
     * <code>string paragraph = 5;</code>
     */
    public com.google.protobuf.ByteString
        getParagraphBytes() {
      java.lang.Object ref = paragraph_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        paragraph_ = 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 CATEGORY_FIELD_NUMBER = 7;
    private volatile java.lang.Object category_;
    /**
     * <code>string category = 7;</code>
     */
    public java.lang.String getCategory() {
      java.lang.Object ref = category_;
      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();
        category_ = s;
        return s;
      }
    }
    /**
     * <code>string category = 7;</code>
     */
    public com.google.protobuf.ByteString
        getCategoryBytes() {
      java.lang.Object ref = category_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        category_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ARCHITECTURES_FIELD_NUMBER = 8;
    private com.google.protobuf.LazyStringList architectures_;
    /**
     * <code>repeated string architectures = 8;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getArchitecturesList() {
      return architectures_;
    }
    /**
     * <code>repeated string architectures = 8;</code>
     */
    public int getArchitecturesCount() {
      return architectures_.size();
    }
    /**
     * <code>repeated string architectures = 8;</code>
     */
    public java.lang.String getArchitectures(int index) {
      return architectures_.get(index);
    }
    /**
     * <code>repeated string architectures = 8;</code>
     */
    public com.google.protobuf.ByteString
        getArchitecturesBytes(int index) {
      return architectures_.getByteString(index);
    }

    public static final int TYPES_FIELD_NUMBER = 9;
    private com.google.protobuf.LazyStringList types_;
    /**
     * <code>repeated string types = 9;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getTypesList() {
      return types_;
    }
    /**
     * <code>repeated string types = 9;</code>
     */
    public int getTypesCount() {
      return types_.size();
    }
    /**
     * <code>repeated string types = 9;</code>
     */
    public java.lang.String getTypes(int index) {
      return types_.get(index);
    }
    /**
     * <code>repeated string types = 9;</code>
     */
    public com.google.protobuf.ByteString
        getTypesBytes(int index) {
      return types_.getByteString(index);
    }

    public static final int INSTALL_DIR_FIELD_NUMBER = 10;
    private volatile java.lang.Object installDir_;
    /**
     * <code>string install_dir = 10;</code>
     */
    public java.lang.String getInstallDir() {
      java.lang.Object ref = installDir_;
      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();
        installDir_ = s;
        return s;
      }
    }
    /**
     * <code>string install_dir = 10;</code>
     */
    public com.google.protobuf.ByteString
        getInstallDirBytes() {
      java.lang.Object ref = installDir_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        installDir_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SOURCE_DIR_FIELD_NUMBER = 11;
    private volatile java.lang.Object sourceDir_;
    /**
     * <code>string source_dir = 11;</code>
     */
    public java.lang.String getSourceDir() {
      java.lang.Object ref = sourceDir_;
      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();
        sourceDir_ = s;
        return s;
      }
    }
    /**
     * <code>string source_dir = 11;</code>
     */
    public com.google.protobuf.ByteString
        getSourceDirBytes() {
      java.lang.Object ref = sourceDir_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sourceDir_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int UTILITY_DIR_FIELD_NUMBER = 12;
    private volatile java.lang.Object utilityDir_;
    /**
     * <code>string utility_dir = 12;</code>
     */
    public java.lang.String getUtilityDir() {
      java.lang.Object ref = utilityDir_;
      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();
        utilityDir_ = s;
        return s;
      }
    }
    /**
     * <code>string utility_dir = 12;</code>
     */
    public com.google.protobuf.ByteString
        getUtilityDirBytes() {
      java.lang.Object ref = utilityDir_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        utilityDir_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LOCATION_FIELD_NUMBER = 13;
    private volatile java.lang.Object location_;
    /**
     * <code>string location = 13;</code>
     */
    public java.lang.String getLocation() {
      java.lang.Object ref = location_;
      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();
        location_ = s;
        return s;
      }
    }
    /**
     * <code>string location = 13;</code>
     */
    public com.google.protobuf.ByteString
        getLocationBytes() {
      java.lang.Object ref = location_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        location_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTAINER_PLATFORM_FIELD_NUMBER = 14;
    private volatile java.lang.Object containerPlatform_;
    /**
     * <code>string container_platform = 14;</code>
     */
    public java.lang.String getContainerPlatform() {
      java.lang.Object ref = containerPlatform_;
      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();
        containerPlatform_ = s;
        return s;
      }
    }
    /**
     * <code>string container_platform = 14;</code>
     */
    public com.google.protobuf.ByteString
        getContainerPlatformBytes() {
      java.lang.Object ref = containerPlatform_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        containerPlatform_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LAYOUT_FIELD_NUMBER = 15;
    private volatile java.lang.Object layout_;
    /**
     * <code>string layout = 15;</code>
     */
    public java.lang.String getLayout() {
      java.lang.Object ref = layout_;
      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();
        layout_ = s;
        return s;
      }
    }
    /**
     * <code>string layout = 15;</code>
     */
    public com.google.protobuf.ByteString
        getLayoutBytes() {
      java.lang.Object ref = layout_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        layout_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REAL_NAME_FIELD_NUMBER = 16;
    private volatile java.lang.Object realName_;
    /**
     * <code>string real_name = 16;</code>
     */
    public java.lang.String getRealName() {
      java.lang.Object ref = realName_;
      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();
        realName_ = s;
        return s;
      }
    }
    /**
     * <code>string real_name = 16;</code>
     */
    public com.google.protobuf.ByteString
        getRealNameBytes() {
      java.lang.Object ref = realName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        realName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DOT_A_LINKAGE_FIELD_NUMBER = 17;
    private boolean dotALinkage_;
    /**
     * <code>bool dot_a_linkage = 17;</code>
     */
    public boolean getDotALinkage() {
      return dotALinkage_;
    }

    public static final int PRECOMPILED_FIELD_NUMBER = 18;
    private boolean precompiled_;
    /**
     * <code>bool precompiled = 18;</code>
     */
    public boolean getPrecompiled() {
      return precompiled_;
    }

    public static final int LD_FLAGS_FIELD_NUMBER = 19;
    private volatile java.lang.Object ldFlags_;
    /**
     * <code>string ld_flags = 19;</code>
     */
    public java.lang.String getLdFlags() {
      java.lang.Object ref = ldFlags_;
      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();
        ldFlags_ = s;
        return s;
      }
    }
    /**
     * <code>string ld_flags = 19;</code>
     */
    public com.google.protobuf.ByteString
        getLdFlagsBytes() {
      java.lang.Object ref = ldFlags_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ldFlags_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IS_LEGACY_FIELD_NUMBER = 20;
    private boolean isLegacy_;
    /**
     * <code>bool is_legacy = 20;</code>
     */
    public boolean getIsLegacy() {
      return isLegacy_;
    }

    public static final int VERSION_FIELD_NUMBER = 21;
    private volatile java.lang.Object version_;
    /**
     * <code>string version = 21;</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 = 21;</code>
     */
    public com.google.protobuf.ByteString
        getVersionBytes() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LICENSE_FIELD_NUMBER = 22;
    private volatile java.lang.Object license_;
    /**
     * <code>string license = 22;</code>
     */
    public java.lang.String getLicense() {
      java.lang.Object ref = license_;
      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();
        license_ = s;
        return s;
      }
    }
    /**
     * <code>string license = 22;</code>
     */
    public com.google.protobuf.ByteString
        getLicenseBytes() {
      java.lang.Object ref = license_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        license_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PROPERTIES_FIELD_NUMBER = 23;
    private static final class PropertiesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_Library_PropertiesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> properties_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetProperties() {
      if (properties_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            PropertiesDefaultEntryHolder.defaultEntry);
      }
      return properties_;
    }

    public int getPropertiesCount() {
      return internalGetProperties().getMap().size();
    }
    /**
     * <code>map&lt;string, string&gt; properties = 23;</code>
     */

    public boolean containsProperties(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetProperties().getMap().containsKey(key);
    }
    /**
     * Use {@link #getPropertiesMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getProperties() {
      return getPropertiesMap();
    }
    /**
     * <code>map&lt;string, string&gt; properties = 23;</code>
     */

    public java.util.Map<java.lang.String, java.lang.String> getPropertiesMap() {
      return internalGetProperties().getMap();
    }
    /**
     * <code>map&lt;string, string&gt; properties = 23;</code>
     */

    public java.lang.String getPropertiesOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetProperties().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, string&gt; properties = 23;</code>
     */

    public java.lang.String getPropertiesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetProperties().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    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 (!getAuthorBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, author_);
      }
      if (!getMaintainerBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, maintainer_);
      }
      if (!getSentenceBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, sentence_);
      }
      if (!getParagraphBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, paragraph_);
      }
      if (!getWebsiteBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, website_);
      }
      if (!getCategoryBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, category_);
      }
      for (int i = 0; i < architectures_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, architectures_.getRaw(i));
      }
      for (int i = 0; i < types_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, types_.getRaw(i));
      }
      if (!getInstallDirBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, installDir_);
      }
      if (!getSourceDirBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, sourceDir_);
      }
      if (!getUtilityDirBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, utilityDir_);
      }
      if (!getLocationBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 13, location_);
      }
      if (!getContainerPlatformBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 14, containerPlatform_);
      }
      if (!getLayoutBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 15, layout_);
      }
      if (!getRealNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 16, realName_);
      }
      if (dotALinkage_ != false) {
        output.writeBool(17, dotALinkage_);
      }
      if (precompiled_ != false) {
        output.writeBool(18, precompiled_);
      }
      if (!getLdFlagsBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 19, ldFlags_);
      }
      if (isLegacy_ != false) {
        output.writeBool(20, isLegacy_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 21, version_);
      }
      if (!getLicenseBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 22, license_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetProperties(),
          PropertiesDefaultEntryHolder.defaultEntry,
          23);
      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 (!getAuthorBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, author_);
      }
      if (!getMaintainerBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, maintainer_);
      }
      if (!getSentenceBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, sentence_);
      }
      if (!getParagraphBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, paragraph_);
      }
      if (!getWebsiteBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, website_);
      }
      if (!getCategoryBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, category_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < architectures_.size(); i++) {
          dataSize += computeStringSizeNoTag(architectures_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getArchitecturesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < types_.size(); i++) {
          dataSize += computeStringSizeNoTag(types_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTypesList().size();
      }
      if (!getInstallDirBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, installDir_);
      }
      if (!getSourceDirBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, sourceDir_);
      }
      if (!getUtilityDirBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, utilityDir_);
      }
      if (!getLocationBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, location_);
      }
      if (!getContainerPlatformBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, containerPlatform_);
      }
      if (!getLayoutBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, layout_);
      }
      if (!getRealNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, realName_);
      }
      if (dotALinkage_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(17, dotALinkage_);
      }
      if (precompiled_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(18, precompiled_);
      }
      if (!getLdFlagsBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(19, ldFlags_);
      }
      if (isLegacy_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(20, isLegacy_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(21, version_);
      }
      if (!getLicenseBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(22, license_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetProperties().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        properties__ = PropertiesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(23, properties__);
      }
      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.Lib.Library)) {
        return super.equals(obj);
      }
      cc.arduino.cli.commands.Lib.Library other = (cc.arduino.cli.commands.Lib.Library) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getAuthor()
          .equals(other.getAuthor())) return false;
      if (!getMaintainer()
          .equals(other.getMaintainer())) return false;
      if (!getSentence()
          .equals(other.getSentence())) return false;
      if (!getParagraph()
          .equals(other.getParagraph())) return false;
      if (!getWebsite()
          .equals(other.getWebsite())) return false;
      if (!getCategory()
          .equals(other.getCategory())) return false;
      if (!getArchitecturesList()
          .equals(other.getArchitecturesList())) return false;
      if (!getTypesList()
          .equals(other.getTypesList())) return false;
      if (!getInstallDir()
          .equals(other.getInstallDir())) return false;
      if (!getSourceDir()
          .equals(other.getSourceDir())) return false;
      if (!getUtilityDir()
          .equals(other.getUtilityDir())) return false;
      if (!getLocation()
          .equals(other.getLocation())) return false;
      if (!getContainerPlatform()
          .equals(other.getContainerPlatform())) return false;
      if (!getLayout()
          .equals(other.getLayout())) return false;
      if (!getRealName()
          .equals(other.getRealName())) return false;
      if (getDotALinkage()
          != other.getDotALinkage()) return false;
      if (getPrecompiled()
          != other.getPrecompiled()) return false;
      if (!getLdFlags()
          .equals(other.getLdFlags())) return false;
      if (getIsLegacy()
          != other.getIsLegacy()) return false;
      if (!getVersion()
          .equals(other.getVersion())) return false;
      if (!getLicense()
          .equals(other.getLicense())) return false;
      if (!internalGetProperties().equals(
          other.internalGetProperties())) 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) + AUTHOR_FIELD_NUMBER;
      hash = (53 * hash) + getAuthor().hashCode();
      hash = (37 * hash) + MAINTAINER_FIELD_NUMBER;
      hash = (53 * hash) + getMaintainer().hashCode();
      hash = (37 * hash) + SENTENCE_FIELD_NUMBER;
      hash = (53 * hash) + getSentence().hashCode();
      hash = (37 * hash) + PARAGRAPH_FIELD_NUMBER;
      hash = (53 * hash) + getParagraph().hashCode();
      hash = (37 * hash) + WEBSITE_FIELD_NUMBER;
      hash = (53 * hash) + getWebsite().hashCode();
      hash = (37 * hash) + CATEGORY_FIELD_NUMBER;
      hash = (53 * hash) + getCategory().hashCode();
      if (getArchitecturesCount() > 0) {
        hash = (37 * hash) + ARCHITECTURES_FIELD_NUMBER;
        hash = (53 * hash) + getArchitecturesList().hashCode();
      }
      if (getTypesCount() > 0) {
        hash = (37 * hash) + TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getTypesList().hashCode();
      }
      hash = (37 * hash) + INSTALL_DIR_FIELD_NUMBER;
      hash = (53 * hash) + getInstallDir().hashCode();
      hash = (37 * hash) + SOURCE_DIR_FIELD_NUMBER;
      hash = (53 * hash) + getSourceDir().hashCode();
      hash = (37 * hash) + UTILITY_DIR_FIELD_NUMBER;
      hash = (53 * hash) + getUtilityDir().hashCode();
      hash = (37 * hash) + LOCATION_FIELD_NUMBER;
      hash = (53 * hash) + getLocation().hashCode();
      hash = (37 * hash) + CONTAINER_PLATFORM_FIELD_NUMBER;
      hash = (53 * hash) + getContainerPlatform().hashCode();
      hash = (37 * hash) + LAYOUT_FIELD_NUMBER;
      hash = (53 * hash) + getLayout().hashCode();
      hash = (37 * hash) + REAL_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getRealName().hashCode();
      hash = (37 * hash) + DOT_A_LINKAGE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getDotALinkage());
      hash = (37 * hash) + PRECOMPILED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getPrecompiled());
      hash = (37 * hash) + LD_FLAGS_FIELD_NUMBER;
      hash = (53 * hash) + getLdFlags().hashCode();
      hash = (37 * hash) + IS_LEGACY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsLegacy());
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (37 * hash) + LICENSE_FIELD_NUMBER;
      hash = (53 * hash) + getLicense().hashCode();
      if (!internalGetProperties().getMap().isEmpty()) {
        hash = (37 * hash) + PROPERTIES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetProperties().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 23:
            return internalGetProperties();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 23:
            return internalGetMutableProperties();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cc.arduino.cli.commands.Lib.internal_static_cc_arduino_cli_commands_Library_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cc.arduino.cli.commands.Lib.Library.class, cc.arduino.cli.commands.Lib.Library.Builder.class);
      }

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

        author_ = "";

        maintainer_ = "";

        sentence_ = "";

        paragraph_ = "";

        website_ = "";

        category_ = "";

        architectures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        types_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        installDir_ = "";

        sourceDir_ = "";

        utilityDir_ = "";

        location_ = "";

        containerPlatform_ = "";

        layout_ = "";

        realName_ = "";

        dotALinkage_ = false;

        precompiled_ = false;

        ldFlags_ = "";

        isLegacy_ = false;

        version_ = "";

        license_ = "";

        internalGetMutableProperties().clear();
        return this;
      }

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

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

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

      @java.lang.Override
      public cc.arduino.cli.commands.Lib.Library buildPartial() {
        cc.arduino.cli.commands.Lib.Library result = new cc.arduino.cli.commands.Lib.Library(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        result.author_ = author_;
        result.maintainer_ = maintainer_;
        result.sentence_ = sentence_;
        result.paragraph_ = paragraph_;
        result.website_ = website_;
        result.category_ = category_;
        if (((bitField0_ & 0x00000001) != 0)) {
          architectures_ = architectures_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.architectures_ = architectures_;
        if (((bitField0_ & 0x00000002) != 0)) {
          types_ = types_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.types_ = types_;
        result.installDir_ = installDir_;
        result.sourceDir_ = sourceDir_;
        result.utilityDir_ = utilityDir_;
        result.location_ = location_;
        result.containerPlatform_ = containerPlatform_;
        result.layout_ = layout_;
        result.realName_ = realName_;
        result.dotALinkage_ = dotALinkage_;
        result.precompiled_ = precompiled_;
        result.ldFlags_ = ldFlags_;
        result.isLegacy_ = isLegacy_;
        result.version_ = version_;
        result.license_ = license_;
        result.properties_ = internalGetProperties();
        result.properties_.makeImmutable();
        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.Lib.Library) {
          return mergeFrom((cc.arduino.cli.commands.Lib.Library)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cc.arduino.cli.commands.Lib.Library other) {
        if (other == cc.arduino.cli.commands.Lib.Library.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getAuthor().isEmpty()) {
          author_ = other.author_;
          onChanged();
        }
        if (!other.getMaintainer().isEmpty()) {
          maintainer_ = other.maintainer_;
          onChanged();
        }
        if (!other.getSentence().isEmpty()) {
          sentence_ = other.sentence_;
          onChanged();
        }
        if (!other.getParagraph().isEmpty()) {
          paragraph_ = other.paragraph_;
          onChanged();
        }
        if (!other.getWebsite().isEmpty()) {
          website_ = other.website_;
          onChanged();
        }
        if (!other.getCategory().isEmpty()) {
          category_ = other.category_;
          onChanged();
        }
        if (!other.architectures_.isEmpty()) {
          if (architectures_.isEmpty()) {
            architectures_ = other.architectures_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureArchitecturesIsMutable();
            architectures_.addAll(other.architectures_);
          }
          onChanged();
        }
        if (!other.types_.isEmpty()) {
          if (types_.isEmpty()) {
            types_ = other.types_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureTypesIsMutable();
            types_.addAll(other.types_);
          }
          onChanged();
        }
        if (!other.getInstallDir().isEmpty()) {
          installDir_ = other.installDir_;
          onChanged();
        }
        if (!other.getSourceDir().isEmpty()) {
          sourceDir_ = other.sourceDir_;
          onChanged();
        }
        if (!other.getUtilityDir().isEmpty()) {
          utilityDir_ = other.utilityDir_;
          onChanged();
        }
        if (!other.getLocation().isEmpty()) {
          location_ = other.location_;
          onChanged();
        }
        if (!other.getContainerPlatform().isEmpty()) {
          containerPlatform_ = other.containerPlatform_;
          onChanged();
        }
        if (!other.getLayout().isEmpty()) {
          layout_ = other.layout_;
          onChanged();
        }
        if (!other.getRealName().isEmpty()) {
          realName_ = other.realName_;
          onChanged();
        }
        if (other.getDotALinkage() != false) {
          setDotALinkage(other.getDotALinkage());
        }
        if (other.getPrecompiled() != false) {
          setPrecompiled(other.getPrecompiled());
        }
        if (!other.getLdFlags().isEmpty()) {
          ldFlags_ = other.ldFlags_;
          onChanged();
        }
        if (other.getIsLegacy() != false) {
          setIsLegacy(other.getIsLegacy());
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          onChanged();
        }
        if (!other.getLicense().isEmpty()) {
          license_ = other.license_;
          onChanged();
        }
        internalGetMutableProperties().mergeFrom(
            other.internalGetProperties());
        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.Lib.Library parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cc.arduino.cli.commands.Lib.Library) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      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 author_ = "";
      /**
       * <code>string author = 2;</code>
       */
      public java.lang.String getAuthor() {
        java.lang.Object ref = author_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          author_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string author = 2;</code>
       */
      public com.google.protobuf.ByteString
          getAuthorBytes() {
        java.lang.Object ref = author_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          author_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string author = 2;</code>
       */
      public Builder setAuthor(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        author_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string author = 2;</code>
       */
      public Builder clearAuthor() {
        
        author_ = getDefaultInstance().getAuthor();
        onChanged();
        return this;
      }
      /**
       * <code>string author = 2;</code>
       */
      public Builder setAuthorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        author_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object maintainer_ = "";
      /**
       * <code>string maintainer = 3;</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 = 3;</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 = 3;</code>
       */
      public Builder setMaintainer(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        maintainer_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string maintainer = 3;</code>
       */
      public Builder clearMaintainer() {
        
        maintainer_ = getDefaultInstance().getMaintainer();
        onChanged();
        return this;
      }
      /**
       * <code>string maintainer = 3;</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 sentence_ = "";
      /**
       * <code>string sentence = 4;</code>
       */
      public java.lang.String getSentence() {
        java.lang.Object ref = sentence_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sentence_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string sentence = 4;</code>
       */
      public com.google.protobuf.ByteString
          getSentenceBytes() {
        java.lang.Object ref = sentence_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sentence_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string sentence = 4;</code>
       */
      public Builder setSentence(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sentence_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string sentence = 4;</code>
       */
      public Builder clearSentence() {
        
        sentence_ = getDefaultInstance().getSentence();
        onChanged();
        return this;
      }
      /**
       * <code>string sentence = 4;</code>
       */
      public Builder setSentenceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sentence_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object paragraph_ = "";
      /**
       * <code>string paragraph = 5;</code>
       */
      public java.lang.String getParagraph() {
        java.lang.Object ref = paragraph_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          paragraph_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string paragraph = 5;</code>
       */
      public com.google.protobuf.ByteString
          getParagraphBytes() {
        java.lang.Object ref = paragraph_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          paragraph_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string paragraph = 5;</code>
       */
      public Builder setParagraph(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        paragraph_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string paragraph = 5;</code>
       */
      public Builder clearParagraph() {
        
        paragraph_ = getDefaultInstance().getParagraph();
        onChanged();
        return this;
      }
      /**
       * <code>string paragraph = 5;</code>
       */
      public Builder setParagraphBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        paragraph_ = 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 category_ = "";
      /**
       * <code>string category = 7;</code>
       */
      public java.lang.String getCategory() {
        java.lang.Object ref = category_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          category_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string category = 7;</code>
       */
      public com.google.protobuf.ByteString
          getCategoryBytes() {
        java.lang.Object ref = category_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          category_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string category = 7;</code>
       */
      public Builder setCategory(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        category_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string category = 7;</code>
       */
      public Builder clearCategory() {
        
        category_ = getDefaultInstance().getCategory();
        onChanged();
        return this;
      }
      /**
       * <code>string category = 7;</code>
       */
      public Builder setCategoryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        category_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList architectures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureArchitecturesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          architectures_ = new com.google.protobuf.LazyStringArrayList(architectures_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getArchitecturesList() {
        return architectures_.getUnmodifiableView();
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public int getArchitecturesCount() {
        return architectures_.size();
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public java.lang.String getArchitectures(int index) {
        return architectures_.get(index);
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public com.google.protobuf.ByteString
          getArchitecturesBytes(int index) {
        return architectures_.getByteString(index);
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public Builder setArchitectures(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArchitecturesIsMutable();
        architectures_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public Builder addArchitectures(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArchitecturesIsMutable();
        architectures_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public Builder addAllArchitectures(
          java.lang.Iterable<java.lang.String> values) {
        ensureArchitecturesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, architectures_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public Builder clearArchitectures() {
        architectures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string architectures = 8;</code>
       */
      public Builder addArchitecturesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureArchitecturesIsMutable();
        architectures_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList types_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureTypesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          types_ = new com.google.protobuf.LazyStringArrayList(types_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getTypesList() {
        return types_.getUnmodifiableView();
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public int getTypesCount() {
        return types_.size();
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public java.lang.String getTypes(int index) {
        return types_.get(index);
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public com.google.protobuf.ByteString
          getTypesBytes(int index) {
        return types_.getByteString(index);
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public Builder setTypes(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTypesIsMutable();
        types_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public Builder addTypes(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTypesIsMutable();
        types_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public Builder addAllTypes(
          java.lang.Iterable<java.lang.String> values) {
        ensureTypesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, types_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public Builder clearTypes() {
        types_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string types = 9;</code>
       */
      public Builder addTypesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureTypesIsMutable();
        types_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object installDir_ = "";
      /**
       * <code>string install_dir = 10;</code>
       */
      public java.lang.String getInstallDir() {
        java.lang.Object ref = installDir_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          installDir_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string install_dir = 10;</code>
       */
      public com.google.protobuf.ByteString
          getInstallDirBytes() {
        java.lang.Object ref = installDir_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          installDir_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string install_dir = 10;</code>
       */
      public Builder setInstallDir(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        installDir_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string install_dir = 10;</code>
       */
      public Builder clearInstallDir() {
        
        installDir_ = getDefaultInstance().getInstallDir();
        onChanged();
        return this;
      }
      /**
       * <code>string install_dir = 10;</code>
       */
      public Builder setInstallDirBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        installDir_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sourceDir_ = "";
      /**
       * <code>string source_dir = 11;</code>
       */
      public java.lang.String getSourceDir() {
        java.lang.Object ref = sourceDir_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sourceDir_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string source_dir = 11;</code>
       */
      public com.google.protobuf.ByteString
          getSourceDirBytes() {
        java.lang.Object ref = sourceDir_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sourceDir_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string source_dir = 11;</code>
       */
      public Builder setSourceDir(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sourceDir_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string source_dir = 11;</code>
       */
      public Builder clearSourceDir() {
        
        sourceDir_ = getDefaultInstance().getSourceDir();
        onChanged();
        return this;
      }
      /**
       * <code>string source_dir = 11;</code>
       */
      public Builder setSourceDirBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sourceDir_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object utilityDir_ = "";
      /**
       * <code>string utility_dir = 12;</code>
       */
      public java.lang.String getUtilityDir() {
        java.lang.Object ref = utilityDir_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          utilityDir_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string utility_dir = 12;</code>
       */
      public com.google.protobuf.ByteString
          getUtilityDirBytes() {
        java.lang.Object ref = utilityDir_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          utilityDir_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string utility_dir = 12;</code>
       */
      public Builder setUtilityDir(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        utilityDir_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string utility_dir = 12;</code>
       */
      public Builder clearUtilityDir() {
        
        utilityDir_ = getDefaultInstance().getUtilityDir();
        onChanged();
        return this;
      }
      /**
       * <code>string utility_dir = 12;</code>
       */
      public Builder setUtilityDirBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        utilityDir_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object location_ = "";
      /**
       * <code>string location = 13;</code>
       */
      public java.lang.String getLocation() {
        java.lang.Object ref = location_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          location_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string location = 13;</code>
       */
      public com.google.protobuf.ByteString
          getLocationBytes() {
        java.lang.Object ref = location_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          location_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string location = 13;</code>
       */
      public Builder setLocation(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        location_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string location = 13;</code>
       */
      public Builder clearLocation() {
        
        location_ = getDefaultInstance().getLocation();
        onChanged();
        return this;
      }
      /**
       * <code>string location = 13;</code>
       */
      public Builder setLocationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        location_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object containerPlatform_ = "";
      /**
       * <code>string container_platform = 14;</code>
       */
      public java.lang.String getContainerPlatform() {
        java.lang.Object ref = containerPlatform_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          containerPlatform_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string container_platform = 14;</code>
       */
      public com.google.protobuf.ByteString
          getContainerPlatformBytes() {
        java.lang.Object ref = containerPlatform_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          containerPlatform_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string container_platform = 14;</code>
       */
      public Builder setContainerPlatform(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        containerPlatform_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string container_platform = 14;</code>
       */
      public Builder clearContainerPlatform() {
        
        containerPlatform_ = getDefaultInstance().getContainerPlatform();
        onChanged();
        return this;
      }
      /**
       * <code>string container_platform = 14;</code>
       */
      public Builder setContainerPlatformBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        containerPlatform_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object layout_ = "";
      /**
       * <code>string layout = 15;</code>
       */
      public java.lang.String getLayout() {
        java.lang.Object ref = layout_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          layout_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string layout = 15;</code>
       */
      public com.google.protobuf.ByteString
          getLayoutBytes() {
        java.lang.Object ref = layout_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          layout_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string layout = 15;</code>
       */
      public Builder setLayout(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        layout_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string layout = 15;</code>
       */
      public Builder clearLayout() {
        
        layout_ = getDefaultInstance().getLayout();
        onChanged();
        return this;
      }
      /**
       * <code>string layout = 15;</code>
       */
      public Builder setLayoutBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        layout_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object realName_ = "";
      /**
       * <code>string real_name = 16;</code>
       */
      public java.lang.String getRealName() {
        java.lang.Object ref = realName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          realName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string real_name = 16;</code>
       */
      public com.google.protobuf.ByteString
          getRealNameBytes() {
        java.lang.Object ref = realName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          realName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string real_name = 16;</code>
       */
      public Builder setRealName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        realName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string real_name = 16;</code>
       */
      public Builder clearRealName() {
        
        realName_ = getDefaultInstance().getRealName();
        onChanged();
        return this;
      }
      /**
       * <code>string real_name = 16;</code>
       */
      public Builder setRealNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        realName_ = value;
        onChanged();
        return this;
      }

      private boolean dotALinkage_ ;
      /**
       * <code>bool dot_a_linkage = 17;</code>
       */
      public boolean getDotALinkage() {
        return dotALinkage_;
      }
      /**
       * <code>bool dot_a_linkage = 17;</code>
       */
      public Builder setDotALinkage(boolean value) {
        
        dotALinkage_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool dot_a_linkage = 17;</code>
       */
      public Builder clearDotALinkage() {
        
        dotALinkage_ = false;
        onChanged();
        return this;
      }

      private boolean precompiled_ ;
      /**
       * <code>bool precompiled = 18;</code>
       */
      public boolean getPrecompiled() {
        return precompiled_;
      }
      /**
       * <code>bool precompiled = 18;</code>
       */
      public Builder setPrecompiled(boolean value) {
        
        precompiled_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool precompiled = 18;</code>
       */
      public Builder clearPrecompiled() {
        
        precompiled_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object ldFlags_ = "";
      /**
       * <code>string ld_flags = 19;</code>
       */
      public java.lang.String getLdFlags() {
        java.lang.Object ref = ldFlags_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          ldFlags_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string ld_flags = 19;</code>
       */
      public com.google.protobuf.ByteString
          getLdFlagsBytes() {
        java.lang.Object ref = ldFlags_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ldFlags_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string ld_flags = 19;</code>
       */
      public Builder setLdFlags(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        ldFlags_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string ld_flags = 19;</code>
       */
      public Builder clearLdFlags() {
        
        ldFlags_ = getDefaultInstance().getLdFlags();
        onChanged();
        return this;
      }
      /**
       * <code>string ld_flags = 19;</code>
       */
      public Builder setLdFlagsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        ldFlags_ = value;
        onChanged();
        return this;
      }

      private boolean isLegacy_ ;
      /**
       * <code>bool is_legacy = 20;</code>
       */
      public boolean getIsLegacy() {
        return isLegacy_;
      }
      /**
       * <code>bool is_legacy = 20;</code>
       */
      public Builder setIsLegacy(boolean value) {
        
        isLegacy_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_legacy = 20;</code>
       */
      public Builder clearIsLegacy() {
        
        isLegacy_ = false;
        onChanged();
        return this;
      }

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

      private java.lang.Object license_ = "";
      /**
       * <code>string license = 22;</code>
       */
      public java.lang.String getLicense() {
        java.lang.Object ref = license_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          license_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string license = 22;</code>
       */
      public com.google.protobuf.ByteString
          getLicenseBytes() {
        java.lang.Object ref = license_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          license_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string license = 22;</code>
       */
      public Builder setLicense(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        license_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string license = 22;</code>
       */
      public Builder clearLicense() {
        
        license_ = getDefaultInstance().getLicense();
        onChanged();
        return this;
      }
      /**
       * <code>string license = 22;</code>
       */
      public Builder setLicenseBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        license_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> properties_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetProperties() {
        if (properties_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              PropertiesDefaultEntryHolder.defaultEntry);
        }
        return properties_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetMutableProperties() {
        onChanged();;
        if (properties_ == null) {
          properties_ = com.google.protobuf.MapField.newMapField(
              PropertiesDefaultEntryHolder.defaultEntry);
        }
        if (!properties_.isMutable()) {
          properties_ = properties_.copy();
        }
        return properties_;
      }

      public int getPropertiesCount() {
        return internalGetProperties().getMap().size();
      }
      /**
       * <code>map&lt;string, string&gt; properties = 23;</code>
       */

      public boolean containsProperties(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetProperties().getMap().containsKey(key);
      }
      /**
       * Use {@link #getPropertiesMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getProperties() {
        return getPropertiesMap();
      }
      /**
       * <code>map&lt;string, string&gt; properties = 23;</code>
       */

      public java.util.Map<java.lang.String, java.lang.String> getPropertiesMap() {
        return internalGetProperties().getMap();
      }
      /**
       * <code>map&lt;string, string&gt; properties = 23;</code>
       */

      public java.lang.String getPropertiesOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetProperties().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;string, string&gt; properties = 23;</code>
       */

      public java.lang.String getPropertiesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetProperties().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearProperties() {
        internalGetMutableProperties().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <code>map&lt;string, string&gt; properties = 23;</code>
       */

      public Builder removeProperties(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableProperties().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
      getMutableProperties() {
        return internalGetMutableProperties().getMutableMap();
      }
      /**
       * <code>map&lt;string, string&gt; properties = 23;</code>
       */
      public Builder putProperties(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        if (value == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableProperties().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <code>map&lt;string, string&gt; properties = 23;</code>
       */

      public Builder putAllProperties(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableProperties().getMutableMap()
            .putAll(values);
        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.Library)
    }

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

    public static cc.arduino.cli.commands.Lib.Library getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryDownloadReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryDownloadReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryDownloadResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryDownloadResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryInstallReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryInstallReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryInstallResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryInstallResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryUninstallReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryUninstallReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryUninstallResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryUninstallResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryUpgradeAllReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryUpgradeAllReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryUpgradeAllResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryUpgradeAllResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryResolveDependenciesReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryResolveDependenciesReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryResolveDependenciesResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryResolveDependenciesResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryDependencyStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryDependencyStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibrarySearchReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibrarySearchReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibrarySearchResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibrarySearchResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_SearchedLibrary_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_SearchedLibrary_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_SearchedLibrary_ReleasesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_SearchedLibrary_ReleasesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryRelease_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryRelease_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_DownloadResource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_DownloadResource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryListReq_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryListReq_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_LibraryListResp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_LibraryListResp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_InstalledLibrary_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_InstalledLibrary_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_Library_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_Library_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cc_arduino_cli_commands_Library_PropertiesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cc_arduino_cli_commands_Library_PropertiesEntry_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\022commands/lib.proto\022\027cc.arduino.cli.com" +
      "mands\032\025commands/common.proto\"h\n\022LibraryD" +
      "ownloadReq\0223\n\010instance\030\001 \001(\0132!.cc.arduin" +
      "o.cli.commands.Instance\022\014\n\004name\030\002 \001(\t\022\017\n" +
      "\007version\030\003 \001(\t\"R\n\023LibraryDownloadResp\022;\n" +
      "\010progress\030\001 \001(\0132).cc.arduino.cli.command" +
      "s.DownloadProgress\"g\n\021LibraryInstallReq\022" +
      "3\n\010instance\030\001 \001(\0132!.cc.arduino.cli.comma" +
      "nds.Instance\022\014\n\004name\030\002 \001(\t\022\017\n\007version\030\003 " +
      "\001(\t\"\217\001\n\022LibraryInstallResp\022;\n\010progress\030\001" +
      " \001(\0132).cc.arduino.cli.commands.DownloadP" +
      "rogress\022<\n\rtask_progress\030\002 \001(\0132%.cc.ardu" +
      "ino.cli.commands.TaskProgress\"i\n\023Library" +
      "UninstallReq\0223\n\010instance\030\001 \001(\0132!.cc.ardu" +
      "ino.cli.commands.Instance\022\014\n\004name\030\002 \001(\t\022" +
      "\017\n\007version\030\003 \001(\t\"T\n\024LibraryUninstallResp" +
      "\022<\n\rtask_progress\030\001 \001(\0132%.cc.arduino.cli" +
      ".commands.TaskProgress\"K\n\024LibraryUpgrade" +
      "AllReq\0223\n\010instance\030\001 \001(\0132!.cc.arduino.cl" +
      "i.commands.Instance\"\222\001\n\025LibraryUpgradeAl" +
      "lResp\022;\n\010progress\030\001 \001(\0132).cc.arduino.cli" +
      ".commands.DownloadProgress\022<\n\rtask_progr" +
      "ess\030\002 \001(\0132%.cc.arduino.cli.commands.Task" +
      "Progress\"s\n\035LibraryResolveDependenciesRe" +
      "q\0223\n\010instance\030\001 \001(\0132!.cc.arduino.cli.com" +
      "mands.Instance\022\014\n\004name\030\002 \001(\t\022\017\n\007version\030" +
      "\003 \001(\t\"h\n\036LibraryResolveDependenciesResp\022" +
      "F\n\014dependencies\030\001 \003(\01320.cc.arduino.cli.c" +
      "ommands.LibraryDependencyStatus\"Z\n\027Libra" +
      "ryDependencyStatus\022\014\n\004name\030\001 \001(\t\022\027\n\017vers" +
      "ionRequired\030\002 \001(\t\022\030\n\020versionInstalled\030\003 " +
      "\001(\t\"V\n\020LibrarySearchReq\0223\n\010instance\030\001 \001(" +
      "\0132!.cc.arduino.cli.commands.Instance\022\r\n\005" +
      "query\030\002 \001(\t\"P\n\021LibrarySearchResp\022;\n\tlibr" +
      "aries\030\001 \003(\0132(.cc.arduino.cli.commands.Se" +
      "archedLibrary\"\374\001\n\017SearchedLibrary\022\014\n\004nam" +
      "e\030\001 \001(\t\022H\n\010releases\030\002 \003(\01326.cc.arduino.c" +
      "li.commands.SearchedLibrary.ReleasesEntr" +
      "y\0227\n\006latest\030\003 \001(\0132\'.cc.arduino.cli.comma" +
      "nds.LibraryRelease\032X\n\rReleasesEntry\022\013\n\003k" +
      "ey\030\001 \001(\t\0226\n\005value\030\002 \001(\0132\'.cc.arduino.cli" +
      ".commands.LibraryRelease:\0028\001\"\361\001\n\016Library" +
      "Release\022\016\n\006author\030\001 \001(\t\022\017\n\007version\030\002 \001(\t" +
      "\022\022\n\nmaintainer\030\003 \001(\t\022\020\n\010sentence\030\004 \001(\t\022\021" +
      "\n\tparagraph\030\005 \001(\t\022\017\n\007website\030\006 \001(\t\022\020\n\010ca" +
      "tegory\030\007 \001(\t\022\025\n\rarchitectures\030\010 \003(\t\022\r\n\005t" +
      "ypes\030\t \003(\t\022<\n\tresources\030\n \001(\0132).cc.ardui" +
      "no.cli.commands.DownloadResource\"k\n\020Down" +
      "loadResource\022\013\n\003url\030\001 \001(\t\022\027\n\017archivefile" +
      "name\030\002 \001(\t\022\020\n\010checksum\030\003 \001(\t\022\014\n\004size\030\004 \001" +
      "(\003\022\021\n\tcachepath\030\005 \001(\t\"e\n\016LibraryListReq\022" +
      "3\n\010instance\030\001 \001(\0132!.cc.arduino.cli.comma" +
      "nds.Instance\022\013\n\003all\030\002 \001(\010\022\021\n\tupdatable\030\003" +
      " \001(\010\"W\n\017LibraryListResp\022D\n\021installed_lib" +
      "rary\030\001 \003(\0132).cc.arduino.cli.commands.Ins" +
      "talledLibrary\"\177\n\020InstalledLibrary\0221\n\007lib" +
      "rary\030\001 \001(\0132 .cc.arduino.cli.commands.Lib" +
      "rary\0228\n\007release\030\002 \001(\0132\'.cc.arduino.cli.c" +
      "ommands.LibraryRelease\"\244\004\n\007Library\022\014\n\004na" +
      "me\030\001 \001(\t\022\016\n\006author\030\002 \001(\t\022\022\n\nmaintainer\030\003" +
      " \001(\t\022\020\n\010sentence\030\004 \001(\t\022\021\n\tparagraph\030\005 \001(" +
      "\t\022\017\n\007website\030\006 \001(\t\022\020\n\010category\030\007 \001(\t\022\025\n\r" +
      "architectures\030\010 \003(\t\022\r\n\005types\030\t \003(\t\022\023\n\013in" +
      "stall_dir\030\n \001(\t\022\022\n\nsource_dir\030\013 \001(\t\022\023\n\013u" +
      "tility_dir\030\014 \001(\t\022\020\n\010location\030\r \001(\t\022\032\n\022co" +
      "ntainer_platform\030\016 \001(\t\022\016\n\006layout\030\017 \001(\t\022\021" +
      "\n\treal_name\030\020 \001(\t\022\025\n\rdot_a_linkage\030\021 \001(\010" +
      "\022\023\n\013precompiled\030\022 \001(\010\022\020\n\010ld_flags\030\023 \001(\t\022" +
      "\021\n\tis_legacy\030\024 \001(\010\022\017\n\007version\030\025 \001(\t\022\017\n\007l" +
      "icense\030\026 \001(\t\022D\n\nproperties\030\027 \003(\01320.cc.ar" +
      "duino.cli.commands.Library.PropertiesEnt" +
      "ry\0321\n\017PropertiesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005va" +
      "lue\030\002 \001(\t:\0028\001*6\n\rLibraryLayout\022\017\n\013flat_l" +
      "ayout\020\000\022\024\n\020recursive_layout\020\001*i\n\017Library" +
      "Location\022\017\n\013ide_builtin\020\000\022\024\n\020platform_bu" +
      "iltin\020\001\022\037\n\033referenced_platform_builtin\020\002" +
      "\022\016\n\nsketchbook\020\003B-Z+github.com/arduino/a" +
      "rduino-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_LibraryDownloadReq_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_cc_arduino_cli_commands_LibraryDownloadReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryDownloadReq_descriptor,
        new java.lang.String[] { "Instance", "Name", "Version", });
    internal_static_cc_arduino_cli_commands_LibraryDownloadResp_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_cc_arduino_cli_commands_LibraryDownloadResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryDownloadResp_descriptor,
        new java.lang.String[] { "Progress", });
    internal_static_cc_arduino_cli_commands_LibraryInstallReq_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_cc_arduino_cli_commands_LibraryInstallReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryInstallReq_descriptor,
        new java.lang.String[] { "Instance", "Name", "Version", });
    internal_static_cc_arduino_cli_commands_LibraryInstallResp_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_cc_arduino_cli_commands_LibraryInstallResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryInstallResp_descriptor,
        new java.lang.String[] { "Progress", "TaskProgress", });
    internal_static_cc_arduino_cli_commands_LibraryUninstallReq_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_cc_arduino_cli_commands_LibraryUninstallReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryUninstallReq_descriptor,
        new java.lang.String[] { "Instance", "Name", "Version", });
    internal_static_cc_arduino_cli_commands_LibraryUninstallResp_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_cc_arduino_cli_commands_LibraryUninstallResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryUninstallResp_descriptor,
        new java.lang.String[] { "TaskProgress", });
    internal_static_cc_arduino_cli_commands_LibraryUpgradeAllReq_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_cc_arduino_cli_commands_LibraryUpgradeAllReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryUpgradeAllReq_descriptor,
        new java.lang.String[] { "Instance", });
    internal_static_cc_arduino_cli_commands_LibraryUpgradeAllResp_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_cc_arduino_cli_commands_LibraryUpgradeAllResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryUpgradeAllResp_descriptor,
        new java.lang.String[] { "Progress", "TaskProgress", });
    internal_static_cc_arduino_cli_commands_LibraryResolveDependenciesReq_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_cc_arduino_cli_commands_LibraryResolveDependenciesReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryResolveDependenciesReq_descriptor,
        new java.lang.String[] { "Instance", "Name", "Version", });
    internal_static_cc_arduino_cli_commands_LibraryResolveDependenciesResp_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_cc_arduino_cli_commands_LibraryResolveDependenciesResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryResolveDependenciesResp_descriptor,
        new java.lang.String[] { "Dependencies", });
    internal_static_cc_arduino_cli_commands_LibraryDependencyStatus_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_cc_arduino_cli_commands_LibraryDependencyStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryDependencyStatus_descriptor,
        new java.lang.String[] { "Name", "VersionRequired", "VersionInstalled", });
    internal_static_cc_arduino_cli_commands_LibrarySearchReq_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_cc_arduino_cli_commands_LibrarySearchReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibrarySearchReq_descriptor,
        new java.lang.String[] { "Instance", "Query", });
    internal_static_cc_arduino_cli_commands_LibrarySearchResp_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_cc_arduino_cli_commands_LibrarySearchResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibrarySearchResp_descriptor,
        new java.lang.String[] { "Libraries", });
    internal_static_cc_arduino_cli_commands_SearchedLibrary_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_cc_arduino_cli_commands_SearchedLibrary_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_SearchedLibrary_descriptor,
        new java.lang.String[] { "Name", "Releases", "Latest", });
    internal_static_cc_arduino_cli_commands_SearchedLibrary_ReleasesEntry_descriptor =
      internal_static_cc_arduino_cli_commands_SearchedLibrary_descriptor.getNestedTypes().get(0);
    internal_static_cc_arduino_cli_commands_SearchedLibrary_ReleasesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_SearchedLibrary_ReleasesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_cc_arduino_cli_commands_LibraryRelease_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_cc_arduino_cli_commands_LibraryRelease_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryRelease_descriptor,
        new java.lang.String[] { "Author", "Version", "Maintainer", "Sentence", "Paragraph", "Website", "Category", "Architectures", "Types", "Resources", });
    internal_static_cc_arduino_cli_commands_DownloadResource_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_cc_arduino_cli_commands_DownloadResource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_DownloadResource_descriptor,
        new java.lang.String[] { "Url", "Archivefilename", "Checksum", "Size", "Cachepath", });
    internal_static_cc_arduino_cli_commands_LibraryListReq_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_cc_arduino_cli_commands_LibraryListReq_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryListReq_descriptor,
        new java.lang.String[] { "Instance", "All", "Updatable", });
    internal_static_cc_arduino_cli_commands_LibraryListResp_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_cc_arduino_cli_commands_LibraryListResp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_LibraryListResp_descriptor,
        new java.lang.String[] { "InstalledLibrary", });
    internal_static_cc_arduino_cli_commands_InstalledLibrary_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_cc_arduino_cli_commands_InstalledLibrary_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_InstalledLibrary_descriptor,
        new java.lang.String[] { "Library", "Release", });
    internal_static_cc_arduino_cli_commands_Library_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_cc_arduino_cli_commands_Library_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_Library_descriptor,
        new java.lang.String[] { "Name", "Author", "Maintainer", "Sentence", "Paragraph", "Website", "Category", "Architectures", "Types", "InstallDir", "SourceDir", "UtilityDir", "Location", "ContainerPlatform", "Layout", "RealName", "DotALinkage", "Precompiled", "LdFlags", "IsLegacy", "Version", "License", "Properties", });
    internal_static_cc_arduino_cli_commands_Library_PropertiesEntry_descriptor =
      internal_static_cc_arduino_cli_commands_Library_descriptor.getNestedTypes().get(0);
    internal_static_cc_arduino_cli_commands_Library_PropertiesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cc_arduino_cli_commands_Library_PropertiesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    cc.arduino.cli.commands.Common.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
