// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: protos.proto
// Protobuf Java Version: 4.33.6

package com.daimler.mbcarkit.proto;

@com.google.protobuf.Generated
public final class Protos extends com.google.protobuf.GeneratedFile {
  private Protos() {}
  static {
    com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
      com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
      /* major= */ 4,
      /* minor= */ 33,
      /* patch= */ 6,
      /* suffix= */ "",
      "Protos");
  }
  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 proto.SubscriptionErrorType}
   */
  public enum SubscriptionErrorType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNKNOWN = 0;</code>
     */
    UNKNOWN(0),
    /**
     * <code>INVALID_JWT = 1;</code>
     */
    INVALID_JWT(1),
    UNRECOGNIZED(-1),
    ;

    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "SubscriptionErrorType");
    }
    /**
     * <code>UNKNOWN = 0;</code>
     */
    public static final int UNKNOWN_VALUE = 0;
    /**
     * <code>INVALID_JWT = 1;</code>
     */
    public static final int INVALID_JWT_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;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SubscriptionErrorType valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SubscriptionErrorType forNumber(int value) {
      switch (value) {
        case 0: return UNKNOWN;
        case 1: return INVALID_JWT;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.getDescriptor().getEnumTypes().get(0);
    }

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

    public static SubscriptionErrorType 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 SubscriptionErrorType(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:proto.SubscriptionErrorType)
  }

  /**
   * Protobuf enum {@code proto.OperatingSystemName}
   */
  public enum OperatingSystemName
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNKNOWN_OPERATING_SYSTEM = 0;</code>
     */
    UNKNOWN_OPERATING_SYSTEM(0),
    /**
     * <code>IOS = 1;</code>
     */
    IOS(1),
    /**
     * <code>ANDROID = 2;</code>
     */
    ANDROID(2),
    /**
     * <code>INT_TEST = 3;</code>
     */
    INT_TEST(3),
    /**
     * <code>MANUAL_TEST = 4;</code>
     */
    MANUAL_TEST(4),
    /**
     * <code>WEB = 5;</code>
     */
    WEB(5),
    UNRECOGNIZED(-1),
    ;

    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "OperatingSystemName");
    }
    /**
     * <code>UNKNOWN_OPERATING_SYSTEM = 0;</code>
     */
    public static final int UNKNOWN_OPERATING_SYSTEM_VALUE = 0;
    /**
     * <code>IOS = 1;</code>
     */
    public static final int IOS_VALUE = 1;
    /**
     * <code>ANDROID = 2;</code>
     */
    public static final int ANDROID_VALUE = 2;
    /**
     * <code>INT_TEST = 3;</code>
     */
    public static final int INT_TEST_VALUE = 3;
    /**
     * <code>MANUAL_TEST = 4;</code>
     */
    public static final int MANUAL_TEST_VALUE = 4;
    /**
     * <code>WEB = 5;</code>
     */
    public static final int WEB_VALUE = 5;


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

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static OperatingSystemName valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static OperatingSystemName forNumber(int value) {
      switch (value) {
        case 0: return UNKNOWN_OPERATING_SYSTEM;
        case 1: return IOS;
        case 2: return ANDROID;
        case 3: return INT_TEST;
        case 4: return MANUAL_TEST;
        case 5: return WEB;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.getDescriptor().getEnumTypes().get(1);
    }

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

    public static OperatingSystemName 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 OperatingSystemName(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:proto.OperatingSystemName)
  }

  public interface SubscribeRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.SubscribeRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @return A list containing the topics.
     */
    java.util.List<java.lang.String>
        getTopicsList();
    /**
     * <pre>
     * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @return The count of topics.
     */
    int getTopicsCount();
    /**
     * <pre>
     * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @param index The index of the element to return.
     * @return The topics at the given index.
     */
    java.lang.String getTopics(int index);
    /**
     * <pre>
     * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the topics at the given index.
     */
    com.google.protobuf.ByteString
        getTopicsBytes(int index);

    /**
     * <pre>
     * indicates whether the previous set of topics should be replaced or whether the content of
     * topics should be merged into the already existing set of topics in the publisher actor. E.g. You're already
     * subscribed to topics A and B. If you send a SubscribeRequest with B and C:
     * replace = true -&gt; you are subscribed to B and C
     * replace = false -&gt; you are subscribed to A, B and C
     * </pre>
     *
     * <code>bool replace = 2;</code>
     * @return The replace.
     */
    boolean getReplace();
  }
  /**
   * <pre>
   * SubscriptionRequest is sent to an actor to indicate that the sender wants to subscribe
   * to events of specific topics. By convention the "Sender" property of the actor message is the
   * Subscriber and will receive the events.
   * </pre>
   *
   * Protobuf type {@code proto.SubscribeRequest}
   */
  public static final class SubscribeRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.SubscribeRequest)
      SubscribeRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "SubscribeRequest");
    }
    // Use SubscribeRequest.newBuilder() to construct.
    private SubscribeRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SubscribeRequest() {
      topics_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.SubscribeRequest.class, com.daimler.mbcarkit.proto.Protos.SubscribeRequest.Builder.class);
    }

    public static final int TOPICS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList topics_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @return A list containing the topics.
     */
    public com.google.protobuf.ProtocolStringList
        getTopicsList() {
      return topics_;
    }
    /**
     * <pre>
     * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @return The count of topics.
     */
    public int getTopicsCount() {
      return topics_.size();
    }
    /**
     * <pre>
     * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @param index The index of the element to return.
     * @return The topics at the given index.
     */
    public java.lang.String getTopics(int index) {
      return topics_.get(index);
    }
    /**
     * <pre>
     * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the topics at the given index.
     */
    public com.google.protobuf.ByteString
        getTopicsBytes(int index) {
      return topics_.getByteString(index);
    }

    public static final int REPLACE_FIELD_NUMBER = 2;
    private boolean replace_ = false;
    /**
     * <pre>
     * indicates whether the previous set of topics should be replaced or whether the content of
     * topics should be merged into the already existing set of topics in the publisher actor. E.g. You're already
     * subscribed to topics A and B. If you send a SubscribeRequest with B and C:
     * replace = true -&gt; you are subscribed to B and C
     * replace = false -&gt; you are subscribed to A, B and C
     * </pre>
     *
     * <code>bool replace = 2;</code>
     * @return The replace.
     */
    @java.lang.Override
    public boolean getReplace() {
      return replace_;
    }

    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 < topics_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, topics_.getRaw(i));
      }
      if (replace_ != false) {
        output.writeBool(2, replace_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < topics_.size(); i++) {
          dataSize += computeStringSizeNoTag(topics_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTopicsList().size();
      }
      if (replace_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, replace_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.SubscribeRequest)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.SubscribeRequest other = (com.daimler.mbcarkit.proto.Protos.SubscribeRequest) obj;

      if (!getTopicsList()
          .equals(other.getTopicsList())) return false;
      if (getReplace()
          != other.getReplace()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTopicsCount() > 0) {
        hash = (37 * hash) + TOPICS_FIELD_NUMBER;
        hash = (53 * hash) + getTopicsList().hashCode();
      }
      hash = (37 * hash) + REPLACE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getReplace());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.SubscribeRequest 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * SubscriptionRequest is sent to an actor to indicate that the sender wants to subscribe
     * to events of specific topics. By convention the "Sender" property of the actor message is the
     * Subscriber and will receive the events.
     * </pre>
     *
     * Protobuf type {@code proto.SubscribeRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.SubscribeRequest)
        com.daimler.mbcarkit.proto.Protos.SubscribeRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.SubscribeRequest.class, com.daimler.mbcarkit.proto.Protos.SubscribeRequest.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.SubscribeRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        topics_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        replace_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeRequest_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscribeRequest getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.SubscribeRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscribeRequest build() {
        com.daimler.mbcarkit.proto.Protos.SubscribeRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscribeRequest buildPartial() {
        com.daimler.mbcarkit.proto.Protos.SubscribeRequest result = new com.daimler.mbcarkit.proto.Protos.SubscribeRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Protos.SubscribeRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          topics_.makeImmutable();
          result.topics_ = topics_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.replace_ = replace_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.SubscribeRequest) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.SubscribeRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.SubscribeRequest other) {
        if (other == com.daimler.mbcarkit.proto.Protos.SubscribeRequest.getDefaultInstance()) return this;
        if (!other.topics_.isEmpty()) {
          if (topics_.isEmpty()) {
            topics_ = other.topics_;
            bitField0_ |= 0x00000001;
          } else {
            ensureTopicsIsMutable();
            topics_.addAll(other.topics_);
          }
          onChanged();
        }
        if (other.getReplace() != false) {
          setReplace(other.getReplace());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        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();
                ensureTopicsIsMutable();
                topics_.add(s);
                break;
              } // case 10
              case 16: {
                replace_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringArrayList topics_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureTopicsIsMutable() {
        if (!topics_.isModifiable()) {
          topics_ = new com.google.protobuf.LazyStringArrayList(topics_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @return A list containing the topics.
       */
      public com.google.protobuf.ProtocolStringList
          getTopicsList() {
        topics_.makeImmutable();
        return topics_;
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @return The count of topics.
       */
      public int getTopicsCount() {
        return topics_.size();
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @param index The index of the element to return.
       * @return The topics at the given index.
       */
      public java.lang.String getTopics(int index) {
        return topics_.get(index);
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the topics at the given index.
       */
      public com.google.protobuf.ByteString
          getTopicsBytes(int index) {
        return topics_.getByteString(index);
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @param index The index to set the value at.
       * @param value The topics to set.
       * @return This builder for chaining.
       */
      public Builder setTopics(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTopicsIsMutable();
        topics_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @param value The topics to add.
       * @return This builder for chaining.
       */
      public Builder addTopics(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTopicsIsMutable();
        topics_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @param values The topics to add.
       * @return This builder for chaining.
       */
      public Builder addAllTopics(
          java.lang.Iterable<java.lang.String> values) {
        ensureTopicsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, topics_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTopics() {
        topics_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber wants to be notified from the Receiver of this message
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @param value The bytes of the topics to add.
       * @return This builder for chaining.
       */
      public Builder addTopicsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureTopicsIsMutable();
        topics_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private boolean replace_ ;
      /**
       * <pre>
       * indicates whether the previous set of topics should be replaced or whether the content of
       * topics should be merged into the already existing set of topics in the publisher actor. E.g. You're already
       * subscribed to topics A and B. If you send a SubscribeRequest with B and C:
       * replace = true -&gt; you are subscribed to B and C
       * replace = false -&gt; you are subscribed to A, B and C
       * </pre>
       *
       * <code>bool replace = 2;</code>
       * @return The replace.
       */
      @java.lang.Override
      public boolean getReplace() {
        return replace_;
      }
      /**
       * <pre>
       * indicates whether the previous set of topics should be replaced or whether the content of
       * topics should be merged into the already existing set of topics in the publisher actor. E.g. You're already
       * subscribed to topics A and B. If you send a SubscribeRequest with B and C:
       * replace = true -&gt; you are subscribed to B and C
       * replace = false -&gt; you are subscribed to A, B and C
       * </pre>
       *
       * <code>bool replace = 2;</code>
       * @param value The replace to set.
       * @return This builder for chaining.
       */
      public Builder setReplace(boolean value) {

        replace_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * indicates whether the previous set of topics should be replaced or whether the content of
       * topics should be merged into the already existing set of topics in the publisher actor. E.g. You're already
       * subscribed to topics A and B. If you send a SubscribeRequest with B and C:
       * replace = true -&gt; you are subscribed to B and C
       * replace = false -&gt; you are subscribed to A, B and C
       * </pre>
       *
       * <code>bool replace = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearReplace() {
        bitField0_ = (bitField0_ & ~0x00000002);
        replace_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:proto.SubscribeRequest)
    }

    // @@protoc_insertion_point(class_scope:proto.SubscribeRequest)
    private static final com.daimler.mbcarkit.proto.Protos.SubscribeRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.SubscribeRequest();
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SubscribeRequest>
        PARSER = new com.google.protobuf.AbstractParser<SubscribeRequest>() {
      @java.lang.Override
      public SubscribeRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.SubscribeRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SubscribeResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.SubscribeResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    boolean getSuccess();

    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    int getErrorsCount();
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    boolean containsErrors(
        java.lang.String key);
    /**
     * Use {@link #getErrorsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
    getErrors();
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
    getErrorsMap();
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrDefault(
        java.lang.String key,
        /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError defaultValue);
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrThrow(
        java.lang.String key);

    /**
     * <code>repeated string subscribed_topics = 3;</code>
     * @return A list containing the subscribedTopics.
     */
    java.util.List<java.lang.String>
        getSubscribedTopicsList();
    /**
     * <code>repeated string subscribed_topics = 3;</code>
     * @return The count of subscribedTopics.
     */
    int getSubscribedTopicsCount();
    /**
     * <code>repeated string subscribed_topics = 3;</code>
     * @param index The index of the element to return.
     * @return The subscribedTopics at the given index.
     */
    java.lang.String getSubscribedTopics(int index);
    /**
     * <code>repeated string subscribed_topics = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the subscribedTopics at the given index.
     */
    com.google.protobuf.ByteString
        getSubscribedTopicsBytes(int index);
  }
  /**
   * <pre>
   * SubscribeResponse is returned by the actor which received a SubscribeRequest. In case of a successful subscription
   * success will be true and error_codes empty/nil. In case of an error the errors map will contain
   * information that points to the reason for failure. The error map's keys are topics that have resulted in an error.
   * The message also contains all successfully subscribed topics under the `subscribed_topics` key.
   * By convention if an SubscribeRequest is sent for topics that have already been subscribed to, the SubscribeResponse
   * will be successful and no error will be returned.
   * </pre>
   *
   * Protobuf type {@code proto.SubscribeResponse}
   */
  public static final class SubscribeResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.SubscribeResponse)
      SubscribeResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "SubscribeResponse");
    }
    // Use SubscribeResponse.newBuilder() to construct.
    private SubscribeResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SubscribeResponse() {
      subscribedTopics_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeResponse_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 2:
          return internalGetErrors();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.SubscribeResponse.class, com.daimler.mbcarkit.proto.Protos.SubscribeResponse.Builder.class);
    }

    public static final int SUCCESS_FIELD_NUMBER = 1;
    private boolean success_ = false;
    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    @java.lang.Override
    public boolean getSuccess() {
      return success_;
    }

    public static final int ERRORS_FIELD_NUMBER = 2;
    private static final class ErrorsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>newDefaultInstance(
                  com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeResponse_ErrorsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  com.daimler.mbcarkit.proto.Protos.SubscriptionError.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> errors_;
    private com.google.protobuf.MapField<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
    internalGetErrors() {
      if (errors_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            ErrorsDefaultEntryHolder.defaultEntry);
      }
      return errors_;
    }
    public int getErrorsCount() {
      return internalGetErrors().getMap().size();
    }
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    @java.lang.Override
    public boolean containsErrors(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetErrors().getMap().containsKey(key);
    }
    /**
     * Use {@link #getErrorsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> getErrors() {
      return getErrorsMap();
    }
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> getErrorsMap() {
      return internalGetErrors().getMap();
    }
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrDefault(
        java.lang.String key,
        /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> map =
          internalGetErrors().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> map =
          internalGetErrors().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int SUBSCRIBED_TOPICS_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList subscribedTopics_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <code>repeated string subscribed_topics = 3;</code>
     * @return A list containing the subscribedTopics.
     */
    public com.google.protobuf.ProtocolStringList
        getSubscribedTopicsList() {
      return subscribedTopics_;
    }
    /**
     * <code>repeated string subscribed_topics = 3;</code>
     * @return The count of subscribedTopics.
     */
    public int getSubscribedTopicsCount() {
      return subscribedTopics_.size();
    }
    /**
     * <code>repeated string subscribed_topics = 3;</code>
     * @param index The index of the element to return.
     * @return The subscribedTopics at the given index.
     */
    public java.lang.String getSubscribedTopics(int index) {
      return subscribedTopics_.get(index);
    }
    /**
     * <code>repeated string subscribed_topics = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the subscribedTopics at the given index.
     */
    public com.google.protobuf.ByteString
        getSubscribedTopicsBytes(int index) {
      return subscribedTopics_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (success_ != false) {
        output.writeBool(1, success_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetErrors(),
          ErrorsDefaultEntryHolder.defaultEntry,
          2);
      for (int i = 0; i < subscribedTopics_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, subscribedTopics_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (success_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, success_);
      }
      for (java.util.Map.Entry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> entry
           : internalGetErrors().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
        errors__ = ErrorsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, errors__);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < subscribedTopics_.size(); i++) {
          dataSize += computeStringSizeNoTag(subscribedTopics_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getSubscribedTopicsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.SubscribeResponse)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.SubscribeResponse other = (com.daimler.mbcarkit.proto.Protos.SubscribeResponse) obj;

      if (getSuccess()
          != other.getSuccess()) return false;
      if (!internalGetErrors().equals(
          other.internalGetErrors())) return false;
      if (!getSubscribedTopicsList()
          .equals(other.getSubscribedTopicsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) 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) + SUCCESS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSuccess());
      if (!internalGetErrors().getMap().isEmpty()) {
        hash = (37 * hash) + ERRORS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetErrors().hashCode();
      }
      if (getSubscribedTopicsCount() > 0) {
        hash = (37 * hash) + SUBSCRIBED_TOPICS_FIELD_NUMBER;
        hash = (53 * hash) + getSubscribedTopicsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.SubscribeResponse 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * SubscribeResponse is returned by the actor which received a SubscribeRequest. In case of a successful subscription
     * success will be true and error_codes empty/nil. In case of an error the errors map will contain
     * information that points to the reason for failure. The error map's keys are topics that have resulted in an error.
     * The message also contains all successfully subscribed topics under the `subscribed_topics` key.
     * By convention if an SubscribeRequest is sent for topics that have already been subscribed to, the SubscribeResponse
     * will be successful and no error will be returned.
     * </pre>
     *
     * Protobuf type {@code proto.SubscribeResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.SubscribeResponse)
        com.daimler.mbcarkit.proto.Protos.SubscribeResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeResponse_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetErrors();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableErrors();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.SubscribeResponse.class, com.daimler.mbcarkit.proto.Protos.SubscribeResponse.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.SubscribeResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        success_ = false;
        internalGetMutableErrors().clear();
        subscribedTopics_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeResponse_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscribeResponse getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.SubscribeResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscribeResponse build() {
        com.daimler.mbcarkit.proto.Protos.SubscribeResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscribeResponse buildPartial() {
        com.daimler.mbcarkit.proto.Protos.SubscribeResponse result = new com.daimler.mbcarkit.proto.Protos.SubscribeResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Protos.SubscribeResponse result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.success_ = success_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.errors_ = internalGetErrors().build(ErrorsDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          subscribedTopics_.makeImmutable();
          result.subscribedTopics_ = subscribedTopics_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.SubscribeResponse) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.SubscribeResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.SubscribeResponse other) {
        if (other == com.daimler.mbcarkit.proto.Protos.SubscribeResponse.getDefaultInstance()) return this;
        if (other.getSuccess() != false) {
          setSuccess(other.getSuccess());
        }
        internalGetMutableErrors().mergeFrom(
            other.internalGetErrors());
        bitField0_ |= 0x00000002;
        if (!other.subscribedTopics_.isEmpty()) {
          if (subscribedTopics_.isEmpty()) {
            subscribedTopics_ = other.subscribedTopics_;
            bitField0_ |= 0x00000004;
          } else {
            ensureSubscribedTopicsIsMutable();
            subscribedTopics_.addAll(other.subscribedTopics_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                success_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
                errors__ = input.readMessage(
                    ErrorsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableErrors().ensureBuilderMap().put(
                    errors__.getKey(), errors__.getValue());
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureSubscribedTopicsIsMutable();
                subscribedTopics_.add(s);
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private boolean success_ ;
      /**
       * <code>bool success = 1;</code>
       * @return The success.
       */
      @java.lang.Override
      public boolean getSuccess() {
        return success_;
      }
      /**
       * <code>bool success = 1;</code>
       * @param value The success to set.
       * @return This builder for chaining.
       */
      public Builder setSuccess(boolean value) {

        success_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>bool success = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSuccess() {
        bitField0_ = (bitField0_ & ~0x00000001);
        success_ = false;
        onChanged();
        return this;
      }

      private static final class ErrorsConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder, com.daimler.mbcarkit.proto.Protos.SubscriptionError> {
        @java.lang.Override
        public com.daimler.mbcarkit.proto.Protos.SubscriptionError build(com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder val) {
          if (val instanceof com.daimler.mbcarkit.proto.Protos.SubscriptionError) { return (com.daimler.mbcarkit.proto.Protos.SubscriptionError) val; }
          return ((com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> defaultEntry() {
          return ErrorsDefaultEntryHolder.defaultEntry;
        }
      };
      private static final ErrorsConverter errorsConverter = new ErrorsConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder, com.daimler.mbcarkit.proto.Protos.SubscriptionError, com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder> errors_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder, com.daimler.mbcarkit.proto.Protos.SubscriptionError, com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder>
          internalGetErrors() {
        if (errors_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(errorsConverter);
        }
        return errors_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder, com.daimler.mbcarkit.proto.Protos.SubscriptionError, com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder>
          internalGetMutableErrors() {
        if (errors_ == null) {
          errors_ = new com.google.protobuf.MapFieldBuilder<>(errorsConverter);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return errors_;
      }
      public int getErrorsCount() {
        return internalGetErrors().ensureBuilderMap().size();
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      @java.lang.Override
      public boolean containsErrors(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetErrors().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getErrorsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> getErrors() {
        return getErrorsMap();
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> getErrorsMap() {
        return internalGetErrors().getImmutableMap();
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrDefault(
          java.lang.String key,
          /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder> map = internalGetMutableErrors().ensureBuilderMap();
        return map.containsKey(key) ? errorsConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder> map = internalGetMutableErrors().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return errorsConverter.build(map.get(key));
      }
      public Builder clearErrors() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableErrors().clear();
        return this;
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      public Builder removeErrors(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableErrors().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
          getMutableErrors() {
        bitField0_ |= 0x00000002;
        return internalGetMutableErrors().ensureMessageMap();
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      public Builder putErrors(
          java.lang.String key,
          com.daimler.mbcarkit.proto.Protos.SubscriptionError value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableErrors().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      public Builder putAllErrors(
          java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> values) {
        for (java.util.Map.Entry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableErrors().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      public com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder putErrorsBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder> builderMap = internalGetMutableErrors().ensureBuilderMap();
        com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = com.daimler.mbcarkit.proto.Protos.SubscriptionError.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof com.daimler.mbcarkit.proto.Protos.SubscriptionError) {
          entry = ((com.daimler.mbcarkit.proto.Protos.SubscriptionError) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder) entry;
      }

      private com.google.protobuf.LazyStringArrayList subscribedTopics_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureSubscribedTopicsIsMutable() {
        if (!subscribedTopics_.isModifiable()) {
          subscribedTopics_ = new com.google.protobuf.LazyStringArrayList(subscribedTopics_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <code>repeated string subscribed_topics = 3;</code>
       * @return A list containing the subscribedTopics.
       */
      public com.google.protobuf.ProtocolStringList
          getSubscribedTopicsList() {
        subscribedTopics_.makeImmutable();
        return subscribedTopics_;
      }
      /**
       * <code>repeated string subscribed_topics = 3;</code>
       * @return The count of subscribedTopics.
       */
      public int getSubscribedTopicsCount() {
        return subscribedTopics_.size();
      }
      /**
       * <code>repeated string subscribed_topics = 3;</code>
       * @param index The index of the element to return.
       * @return The subscribedTopics at the given index.
       */
      public java.lang.String getSubscribedTopics(int index) {
        return subscribedTopics_.get(index);
      }
      /**
       * <code>repeated string subscribed_topics = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the subscribedTopics at the given index.
       */
      public com.google.protobuf.ByteString
          getSubscribedTopicsBytes(int index) {
        return subscribedTopics_.getByteString(index);
      }
      /**
       * <code>repeated string subscribed_topics = 3;</code>
       * @param index The index to set the value at.
       * @param value The subscribedTopics to set.
       * @return This builder for chaining.
       */
      public Builder setSubscribedTopics(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureSubscribedTopicsIsMutable();
        subscribedTopics_.set(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string subscribed_topics = 3;</code>
       * @param value The subscribedTopics to add.
       * @return This builder for chaining.
       */
      public Builder addSubscribedTopics(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureSubscribedTopicsIsMutable();
        subscribedTopics_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string subscribed_topics = 3;</code>
       * @param values The subscribedTopics to add.
       * @return This builder for chaining.
       */
      public Builder addAllSubscribedTopics(
          java.lang.Iterable<java.lang.String> values) {
        ensureSubscribedTopicsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, subscribedTopics_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string subscribed_topics = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearSubscribedTopics() {
        subscribedTopics_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string subscribed_topics = 3;</code>
       * @param value The bytes of the subscribedTopics to add.
       * @return This builder for chaining.
       */
      public Builder addSubscribedTopicsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureSubscribedTopicsIsMutable();
        subscribedTopics_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:proto.SubscribeResponse)
    }

    // @@protoc_insertion_point(class_scope:proto.SubscribeResponse)
    private static final com.daimler.mbcarkit.proto.Protos.SubscribeResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.SubscribeResponse();
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SubscribeResponse>
        PARSER = new com.google.protobuf.AbstractParser<SubscribeResponse>() {
      @java.lang.Override
      public SubscribeResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.SubscribeResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UnsubscribeRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.UnsubscribeRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * An array of topics for which the Subscriber does not want to receive any more messages
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @return A list containing the topics.
     */
    java.util.List<java.lang.String>
        getTopicsList();
    /**
     * <pre>
     * An array of topics for which the Subscriber does not want to receive any more messages
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @return The count of topics.
     */
    int getTopicsCount();
    /**
     * <pre>
     * An array of topics for which the Subscriber does not want to receive any more messages
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @param index The index of the element to return.
     * @return The topics at the given index.
     */
    java.lang.String getTopics(int index);
    /**
     * <pre>
     * An array of topics for which the Subscriber does not want to receive any more messages
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the topics at the given index.
     */
    com.google.protobuf.ByteString
        getTopicsBytes(int index);

    /**
     * <pre>
     * Whether the publisher should respond
     * </pre>
     *
     * <code>bool anticipate_response = 2;</code>
     * @return The anticipateResponse.
     */
    boolean getAnticipateResponse();
  }
  /**
   * <pre>
   * UnsubscribeRequest is sent to an actor to indicate that the sender wants to unsubscribe
   * from events specified by the topics array.
   * </pre>
   *
   * Protobuf type {@code proto.UnsubscribeRequest}
   */
  public static final class UnsubscribeRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.UnsubscribeRequest)
      UnsubscribeRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "UnsubscribeRequest");
    }
    // Use UnsubscribeRequest.newBuilder() to construct.
    private UnsubscribeRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private UnsubscribeRequest() {
      topics_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest.class, com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest.Builder.class);
    }

    public static final int TOPICS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList topics_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * An array of topics for which the Subscriber does not want to receive any more messages
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @return A list containing the topics.
     */
    public com.google.protobuf.ProtocolStringList
        getTopicsList() {
      return topics_;
    }
    /**
     * <pre>
     * An array of topics for which the Subscriber does not want to receive any more messages
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @return The count of topics.
     */
    public int getTopicsCount() {
      return topics_.size();
    }
    /**
     * <pre>
     * An array of topics for which the Subscriber does not want to receive any more messages
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @param index The index of the element to return.
     * @return The topics at the given index.
     */
    public java.lang.String getTopics(int index) {
      return topics_.get(index);
    }
    /**
     * <pre>
     * An array of topics for which the Subscriber does not want to receive any more messages
     * </pre>
     *
     * <code>repeated string topics = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the topics at the given index.
     */
    public com.google.protobuf.ByteString
        getTopicsBytes(int index) {
      return topics_.getByteString(index);
    }

    public static final int ANTICIPATE_RESPONSE_FIELD_NUMBER = 2;
    private boolean anticipateResponse_ = false;
    /**
     * <pre>
     * Whether the publisher should respond
     * </pre>
     *
     * <code>bool anticipate_response = 2;</code>
     * @return The anticipateResponse.
     */
    @java.lang.Override
    public boolean getAnticipateResponse() {
      return anticipateResponse_;
    }

    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 < topics_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, topics_.getRaw(i));
      }
      if (anticipateResponse_ != false) {
        output.writeBool(2, anticipateResponse_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < topics_.size(); i++) {
          dataSize += computeStringSizeNoTag(topics_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTopicsList().size();
      }
      if (anticipateResponse_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, anticipateResponse_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest other = (com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest) obj;

      if (!getTopicsList()
          .equals(other.getTopicsList())) return false;
      if (getAnticipateResponse()
          != other.getAnticipateResponse()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTopicsCount() > 0) {
        hash = (37 * hash) + TOPICS_FIELD_NUMBER;
        hash = (53 * hash) + getTopicsList().hashCode();
      }
      hash = (37 * hash) + ANTICIPATE_RESPONSE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getAnticipateResponse());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * UnsubscribeRequest is sent to an actor to indicate that the sender wants to unsubscribe
     * from events specified by the topics array.
     * </pre>
     *
     * Protobuf type {@code proto.UnsubscribeRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.UnsubscribeRequest)
        com.daimler.mbcarkit.proto.Protos.UnsubscribeRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest.class, com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        topics_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        anticipateResponse_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeRequest_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest build() {
        com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest buildPartial() {
        com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest result = new com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          topics_.makeImmutable();
          result.topics_ = topics_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.anticipateResponse_ = anticipateResponse_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest other) {
        if (other == com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest.getDefaultInstance()) return this;
        if (!other.topics_.isEmpty()) {
          if (topics_.isEmpty()) {
            topics_ = other.topics_;
            bitField0_ |= 0x00000001;
          } else {
            ensureTopicsIsMutable();
            topics_.addAll(other.topics_);
          }
          onChanged();
        }
        if (other.getAnticipateResponse() != false) {
          setAnticipateResponse(other.getAnticipateResponse());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        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();
                ensureTopicsIsMutable();
                topics_.add(s);
                break;
              } // case 10
              case 16: {
                anticipateResponse_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringArrayList topics_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureTopicsIsMutable() {
        if (!topics_.isModifiable()) {
          topics_ = new com.google.protobuf.LazyStringArrayList(topics_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber does not want to receive any more messages
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @return A list containing the topics.
       */
      public com.google.protobuf.ProtocolStringList
          getTopicsList() {
        topics_.makeImmutable();
        return topics_;
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber does not want to receive any more messages
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @return The count of topics.
       */
      public int getTopicsCount() {
        return topics_.size();
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber does not want to receive any more messages
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @param index The index of the element to return.
       * @return The topics at the given index.
       */
      public java.lang.String getTopics(int index) {
        return topics_.get(index);
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber does not want to receive any more messages
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the topics at the given index.
       */
      public com.google.protobuf.ByteString
          getTopicsBytes(int index) {
        return topics_.getByteString(index);
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber does not want to receive any more messages
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @param index The index to set the value at.
       * @param value The topics to set.
       * @return This builder for chaining.
       */
      public Builder setTopics(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTopicsIsMutable();
        topics_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber does not want to receive any more messages
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @param value The topics to add.
       * @return This builder for chaining.
       */
      public Builder addTopics(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTopicsIsMutable();
        topics_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber does not want to receive any more messages
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @param values The topics to add.
       * @return This builder for chaining.
       */
      public Builder addAllTopics(
          java.lang.Iterable<java.lang.String> values) {
        ensureTopicsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, topics_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber does not want to receive any more messages
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTopics() {
        topics_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of topics for which the Subscriber does not want to receive any more messages
       * </pre>
       *
       * <code>repeated string topics = 1;</code>
       * @param value The bytes of the topics to add.
       * @return This builder for chaining.
       */
      public Builder addTopicsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureTopicsIsMutable();
        topics_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private boolean anticipateResponse_ ;
      /**
       * <pre>
       * Whether the publisher should respond
       * </pre>
       *
       * <code>bool anticipate_response = 2;</code>
       * @return The anticipateResponse.
       */
      @java.lang.Override
      public boolean getAnticipateResponse() {
        return anticipateResponse_;
      }
      /**
       * <pre>
       * Whether the publisher should respond
       * </pre>
       *
       * <code>bool anticipate_response = 2;</code>
       * @param value The anticipateResponse to set.
       * @return This builder for chaining.
       */
      public Builder setAnticipateResponse(boolean value) {

        anticipateResponse_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether the publisher should respond
       * </pre>
       *
       * <code>bool anticipate_response = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAnticipateResponse() {
        bitField0_ = (bitField0_ & ~0x00000002);
        anticipateResponse_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:proto.UnsubscribeRequest)
    }

    // @@protoc_insertion_point(class_scope:proto.UnsubscribeRequest)
    private static final com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest();
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<UnsubscribeRequest>
        PARSER = new com.google.protobuf.AbstractParser<UnsubscribeRequest>() {
      @java.lang.Override
      public UnsubscribeRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.UnsubscribeRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UnsubscribeResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.UnsubscribeResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    boolean getSuccess();

    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    int getErrorsCount();
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    boolean containsErrors(
        java.lang.String key);
    /**
     * Use {@link #getErrorsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
    getErrors();
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
    getErrorsMap();
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrDefault(
        java.lang.String key,
        /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError defaultValue);
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrThrow(
        java.lang.String key);

    /**
     * <code>repeated string unsubscribed_topics = 3;</code>
     * @return A list containing the unsubscribedTopics.
     */
    java.util.List<java.lang.String>
        getUnsubscribedTopicsList();
    /**
     * <code>repeated string unsubscribed_topics = 3;</code>
     * @return The count of unsubscribedTopics.
     */
    int getUnsubscribedTopicsCount();
    /**
     * <code>repeated string unsubscribed_topics = 3;</code>
     * @param index The index of the element to return.
     * @return The unsubscribedTopics at the given index.
     */
    java.lang.String getUnsubscribedTopics(int index);
    /**
     * <code>repeated string unsubscribed_topics = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the unsubscribedTopics at the given index.
     */
    com.google.protobuf.ByteString
        getUnsubscribedTopicsBytes(int index);
  }
  /**
   * <pre>
   * UnsubscribeResponse is returned by the actor which received a UnsubscribeRequest. In case of a successful removal,
   * success will be true and error_codes empty/nil. In case of an error the errors map will contain
   * information that points to the reason for failure. The error map's keys are topics that have resulted in an error.
   * The message also contains all successfully subscribed topics under the `unsubscribed_topics` key.
   * By convention if an UnsubscribeRequest is sent for topics that have already been unsubscribed from the UnsubscribeResponse
   * will be successful and no error will be returned.
   * </pre>
   *
   * Protobuf type {@code proto.UnsubscribeResponse}
   */
  public static final class UnsubscribeResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.UnsubscribeResponse)
      UnsubscribeResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "UnsubscribeResponse");
    }
    // Use UnsubscribeResponse.newBuilder() to construct.
    private UnsubscribeResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private UnsubscribeResponse() {
      unsubscribedTopics_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeResponse_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 2:
          return internalGetErrors();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse.class, com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse.Builder.class);
    }

    public static final int SUCCESS_FIELD_NUMBER = 1;
    private boolean success_ = false;
    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    @java.lang.Override
    public boolean getSuccess() {
      return success_;
    }

    public static final int ERRORS_FIELD_NUMBER = 2;
    private static final class ErrorsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>newDefaultInstance(
                  com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeResponse_ErrorsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  com.daimler.mbcarkit.proto.Protos.SubscriptionError.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> errors_;
    private com.google.protobuf.MapField<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
    internalGetErrors() {
      if (errors_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            ErrorsDefaultEntryHolder.defaultEntry);
      }
      return errors_;
    }
    public int getErrorsCount() {
      return internalGetErrors().getMap().size();
    }
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    @java.lang.Override
    public boolean containsErrors(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetErrors().getMap().containsKey(key);
    }
    /**
     * Use {@link #getErrorsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> getErrors() {
      return getErrorsMap();
    }
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> getErrorsMap() {
      return internalGetErrors().getMap();
    }
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrDefault(
        java.lang.String key,
        /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> map =
          internalGetErrors().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> map =
          internalGetErrors().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int UNSUBSCRIBED_TOPICS_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList unsubscribedTopics_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <code>repeated string unsubscribed_topics = 3;</code>
     * @return A list containing the unsubscribedTopics.
     */
    public com.google.protobuf.ProtocolStringList
        getUnsubscribedTopicsList() {
      return unsubscribedTopics_;
    }
    /**
     * <code>repeated string unsubscribed_topics = 3;</code>
     * @return The count of unsubscribedTopics.
     */
    public int getUnsubscribedTopicsCount() {
      return unsubscribedTopics_.size();
    }
    /**
     * <code>repeated string unsubscribed_topics = 3;</code>
     * @param index The index of the element to return.
     * @return The unsubscribedTopics at the given index.
     */
    public java.lang.String getUnsubscribedTopics(int index) {
      return unsubscribedTopics_.get(index);
    }
    /**
     * <code>repeated string unsubscribed_topics = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the unsubscribedTopics at the given index.
     */
    public com.google.protobuf.ByteString
        getUnsubscribedTopicsBytes(int index) {
      return unsubscribedTopics_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (success_ != false) {
        output.writeBool(1, success_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetErrors(),
          ErrorsDefaultEntryHolder.defaultEntry,
          2);
      for (int i = 0; i < unsubscribedTopics_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, unsubscribedTopics_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (success_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, success_);
      }
      for (java.util.Map.Entry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> entry
           : internalGetErrors().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
        errors__ = ErrorsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, errors__);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < unsubscribedTopics_.size(); i++) {
          dataSize += computeStringSizeNoTag(unsubscribedTopics_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getUnsubscribedTopicsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse other = (com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse) obj;

      if (getSuccess()
          != other.getSuccess()) return false;
      if (!internalGetErrors().equals(
          other.internalGetErrors())) return false;
      if (!getUnsubscribedTopicsList()
          .equals(other.getUnsubscribedTopicsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) 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) + SUCCESS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSuccess());
      if (!internalGetErrors().getMap().isEmpty()) {
        hash = (37 * hash) + ERRORS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetErrors().hashCode();
      }
      if (getUnsubscribedTopicsCount() > 0) {
        hash = (37 * hash) + UNSUBSCRIBED_TOPICS_FIELD_NUMBER;
        hash = (53 * hash) + getUnsubscribedTopicsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * UnsubscribeResponse is returned by the actor which received a UnsubscribeRequest. In case of a successful removal,
     * success will be true and error_codes empty/nil. In case of an error the errors map will contain
     * information that points to the reason for failure. The error map's keys are topics that have resulted in an error.
     * The message also contains all successfully subscribed topics under the `unsubscribed_topics` key.
     * By convention if an UnsubscribeRequest is sent for topics that have already been unsubscribed from the UnsubscribeResponse
     * will be successful and no error will be returned.
     * </pre>
     *
     * Protobuf type {@code proto.UnsubscribeResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.UnsubscribeResponse)
        com.daimler.mbcarkit.proto.Protos.UnsubscribeResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeResponse_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetErrors();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableErrors();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse.class, com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        success_ = false;
        internalGetMutableErrors().clear();
        unsubscribedTopics_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeResponse_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse build() {
        com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse buildPartial() {
        com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse result = new com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.success_ = success_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.errors_ = internalGetErrors().build(ErrorsDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          unsubscribedTopics_.makeImmutable();
          result.unsubscribedTopics_ = unsubscribedTopics_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse other) {
        if (other == com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse.getDefaultInstance()) return this;
        if (other.getSuccess() != false) {
          setSuccess(other.getSuccess());
        }
        internalGetMutableErrors().mergeFrom(
            other.internalGetErrors());
        bitField0_ |= 0x00000002;
        if (!other.unsubscribedTopics_.isEmpty()) {
          if (unsubscribedTopics_.isEmpty()) {
            unsubscribedTopics_ = other.unsubscribedTopics_;
            bitField0_ |= 0x00000004;
          } else {
            ensureUnsubscribedTopicsIsMutable();
            unsubscribedTopics_.addAll(other.unsubscribedTopics_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                success_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
                errors__ = input.readMessage(
                    ErrorsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableErrors().ensureBuilderMap().put(
                    errors__.getKey(), errors__.getValue());
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureUnsubscribedTopicsIsMutable();
                unsubscribedTopics_.add(s);
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private boolean success_ ;
      /**
       * <code>bool success = 1;</code>
       * @return The success.
       */
      @java.lang.Override
      public boolean getSuccess() {
        return success_;
      }
      /**
       * <code>bool success = 1;</code>
       * @param value The success to set.
       * @return This builder for chaining.
       */
      public Builder setSuccess(boolean value) {

        success_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>bool success = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSuccess() {
        bitField0_ = (bitField0_ & ~0x00000001);
        success_ = false;
        onChanged();
        return this;
      }

      private static final class ErrorsConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder, com.daimler.mbcarkit.proto.Protos.SubscriptionError> {
        @java.lang.Override
        public com.daimler.mbcarkit.proto.Protos.SubscriptionError build(com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder val) {
          if (val instanceof com.daimler.mbcarkit.proto.Protos.SubscriptionError) { return (com.daimler.mbcarkit.proto.Protos.SubscriptionError) val; }
          return ((com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> defaultEntry() {
          return ErrorsDefaultEntryHolder.defaultEntry;
        }
      };
      private static final ErrorsConverter errorsConverter = new ErrorsConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder, com.daimler.mbcarkit.proto.Protos.SubscriptionError, com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder> errors_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder, com.daimler.mbcarkit.proto.Protos.SubscriptionError, com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder>
          internalGetErrors() {
        if (errors_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(errorsConverter);
        }
        return errors_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder, com.daimler.mbcarkit.proto.Protos.SubscriptionError, com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder>
          internalGetMutableErrors() {
        if (errors_ == null) {
          errors_ = new com.google.protobuf.MapFieldBuilder<>(errorsConverter);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return errors_;
      }
      public int getErrorsCount() {
        return internalGetErrors().ensureBuilderMap().size();
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      @java.lang.Override
      public boolean containsErrors(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetErrors().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getErrorsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> getErrors() {
        return getErrorsMap();
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> getErrorsMap() {
        return internalGetErrors().getImmutableMap();
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrDefault(
          java.lang.String key,
          /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder> map = internalGetMutableErrors().ensureBuilderMap();
        return map.containsKey(key) ? errorsConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder> map = internalGetMutableErrors().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return errorsConverter.build(map.get(key));
      }
      public Builder clearErrors() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableErrors().clear();
        return this;
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      public Builder removeErrors(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableErrors().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
          getMutableErrors() {
        bitField0_ |= 0x00000002;
        return internalGetMutableErrors().ensureMessageMap();
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      public Builder putErrors(
          java.lang.String key,
          com.daimler.mbcarkit.proto.Protos.SubscriptionError value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableErrors().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      public Builder putAllErrors(
          java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> values) {
        for (java.util.Map.Entry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableErrors().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      public com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder putErrorsBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder> builderMap = internalGetMutableErrors().ensureBuilderMap();
        com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = com.daimler.mbcarkit.proto.Protos.SubscriptionError.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof com.daimler.mbcarkit.proto.Protos.SubscriptionError) {
          entry = ((com.daimler.mbcarkit.proto.Protos.SubscriptionError) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder) entry;
      }

      private com.google.protobuf.LazyStringArrayList unsubscribedTopics_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureUnsubscribedTopicsIsMutable() {
        if (!unsubscribedTopics_.isModifiable()) {
          unsubscribedTopics_ = new com.google.protobuf.LazyStringArrayList(unsubscribedTopics_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <code>repeated string unsubscribed_topics = 3;</code>
       * @return A list containing the unsubscribedTopics.
       */
      public com.google.protobuf.ProtocolStringList
          getUnsubscribedTopicsList() {
        unsubscribedTopics_.makeImmutable();
        return unsubscribedTopics_;
      }
      /**
       * <code>repeated string unsubscribed_topics = 3;</code>
       * @return The count of unsubscribedTopics.
       */
      public int getUnsubscribedTopicsCount() {
        return unsubscribedTopics_.size();
      }
      /**
       * <code>repeated string unsubscribed_topics = 3;</code>
       * @param index The index of the element to return.
       * @return The unsubscribedTopics at the given index.
       */
      public java.lang.String getUnsubscribedTopics(int index) {
        return unsubscribedTopics_.get(index);
      }
      /**
       * <code>repeated string unsubscribed_topics = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the unsubscribedTopics at the given index.
       */
      public com.google.protobuf.ByteString
          getUnsubscribedTopicsBytes(int index) {
        return unsubscribedTopics_.getByteString(index);
      }
      /**
       * <code>repeated string unsubscribed_topics = 3;</code>
       * @param index The index to set the value at.
       * @param value The unsubscribedTopics to set.
       * @return This builder for chaining.
       */
      public Builder setUnsubscribedTopics(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureUnsubscribedTopicsIsMutable();
        unsubscribedTopics_.set(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string unsubscribed_topics = 3;</code>
       * @param value The unsubscribedTopics to add.
       * @return This builder for chaining.
       */
      public Builder addUnsubscribedTopics(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureUnsubscribedTopicsIsMutable();
        unsubscribedTopics_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string unsubscribed_topics = 3;</code>
       * @param values The unsubscribedTopics to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnsubscribedTopics(
          java.lang.Iterable<java.lang.String> values) {
        ensureUnsubscribedTopicsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, unsubscribedTopics_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string unsubscribed_topics = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearUnsubscribedTopics() {
        unsubscribedTopics_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string unsubscribed_topics = 3;</code>
       * @param value The bytes of the unsubscribedTopics to add.
       * @return This builder for chaining.
       */
      public Builder addUnsubscribedTopicsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureUnsubscribedTopicsIsMutable();
        unsubscribedTopics_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:proto.UnsubscribeResponse)
    }

    // @@protoc_insertion_point(class_scope:proto.UnsubscribeResponse)
    private static final com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse();
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<UnsubscribeResponse>
        PARSER = new com.google.protobuf.AbstractParser<UnsubscribeResponse>() {
      @java.lang.Override
      public UnsubscribeResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.UnsubscribeResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SubscriptionErrorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.SubscriptionError)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
     * @return A list containing the code.
     */
    java.util.List<com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType> getCodeList();
    /**
     * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
     * @return The count of code.
     */
    int getCodeCount();
    /**
     * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
     * @param index The index of the element to return.
     * @return The code at the given index.
     */
    com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType getCode(int index);
    /**
     * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
     * @return A list containing the enum numeric values on the wire for code.
     */
    java.util.List<java.lang.Integer>
    getCodeValueList();
    /**
     * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of code at the given index.
     */
    int getCodeValue(int index);

    /**
     * <pre>
     * Optional
     * </pre>
     *
     * <code>repeated string message = 2;</code>
     * @return A list containing the message.
     */
    java.util.List<java.lang.String>
        getMessageList();
    /**
     * <pre>
     * Optional
     * </pre>
     *
     * <code>repeated string message = 2;</code>
     * @return The count of message.
     */
    int getMessageCount();
    /**
     * <pre>
     * Optional
     * </pre>
     *
     * <code>repeated string message = 2;</code>
     * @param index The index of the element to return.
     * @return The message at the given index.
     */
    java.lang.String getMessage(int index);
    /**
     * <pre>
     * Optional
     * </pre>
     *
     * <code>repeated string message = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the message at the given index.
     */
    com.google.protobuf.ByteString
        getMessageBytes(int index);
  }
  /**
   * Protobuf type {@code proto.SubscriptionError}
   */
  public static final class SubscriptionError extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.SubscriptionError)
      SubscriptionErrorOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "SubscriptionError");
    }
    // Use SubscriptionError.newBuilder() to construct.
    private SubscriptionError(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SubscriptionError() {
      code_ = emptyIntList();
      message_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscriptionError_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscriptionError_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.SubscriptionError.class, com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder.class);
    }

    public static final int CODE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList code_ =
        emptyIntList();
    private static final     com.google.protobuf.Internal.IntListAdapter.IntConverter<
        com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType> code_converter_ =
            new com.google.protobuf.Internal.IntListAdapter.IntConverter<
                com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType>() {
              public com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType convert(int from) {
                com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType result = com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType.forNumber(from);
                return result == null ? com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType.UNRECOGNIZED : result;
              }
            };
    /**
     * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
     * @return A list containing the code.
     */
    @java.lang.Override
    public java.util.List<com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType> getCodeList() {
      return new com.google.protobuf.Internal.IntListAdapter<
          com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType>(code_, code_converter_);
    }
    /**
     * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
     * @return The count of code.
     */
    @java.lang.Override
    public int getCodeCount() {
      return code_.size();
    }
    /**
     * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
     * @param index The index of the element to return.
     * @return The code at the given index.
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType getCode(int index) {
      return code_converter_.convert(code_.getInt(index));
    }
    /**
     * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
     * @return A list containing the enum numeric values on the wire for code.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
    getCodeValueList() {
      return code_;
    }
    /**
     * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of code at the given index.
     */
    @java.lang.Override
    public int getCodeValue(int index) {
      return code_.getInt(index);
    }
    private int codeMemoizedSerializedSize;

    public static final int MESSAGE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList message_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Optional
     * </pre>
     *
     * <code>repeated string message = 2;</code>
     * @return A list containing the message.
     */
    public com.google.protobuf.ProtocolStringList
        getMessageList() {
      return message_;
    }
    /**
     * <pre>
     * Optional
     * </pre>
     *
     * <code>repeated string message = 2;</code>
     * @return The count of message.
     */
    public int getMessageCount() {
      return message_.size();
    }
    /**
     * <pre>
     * Optional
     * </pre>
     *
     * <code>repeated string message = 2;</code>
     * @param index The index of the element to return.
     * @return The message at the given index.
     */
    public java.lang.String getMessage(int index) {
      return message_.get(index);
    }
    /**
     * <pre>
     * Optional
     * </pre>
     *
     * <code>repeated string message = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the message at the given index.
     */
    public com.google.protobuf.ByteString
        getMessageBytes(int index) {
      return message_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getCodeList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(codeMemoizedSerializedSize);
      }
      for (int i = 0; i < code_.size(); i++) {
        output.writeEnumNoTag(code_.getInt(i));
      }
      for (int i = 0; i < message_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, message_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < code_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(code_.getInt(i));
        }
        size += dataSize;
        if (!getCodeList().isEmpty()) {  size += 1;
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(dataSize);
        }codeMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < message_.size(); i++) {
          dataSize += computeStringSizeNoTag(message_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getMessageList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.SubscriptionError)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.SubscriptionError other = (com.daimler.mbcarkit.proto.Protos.SubscriptionError) obj;

      if (!code_.equals(other.code_)) return false;
      if (!getMessageList()
          .equals(other.getMessageList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getCodeCount() > 0) {
        hash = (37 * hash) + CODE_FIELD_NUMBER;
        hash = (53 * hash) + code_.hashCode();
      }
      if (getMessageCount() > 0) {
        hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getMessageList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscriptionError parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscriptionError parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscriptionError parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscriptionError parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscriptionError parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscriptionError parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscriptionError parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscriptionError parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscriptionError parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscriptionError parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscriptionError parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscriptionError parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.SubscriptionError 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code proto.SubscriptionError}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.SubscriptionError)
        com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscriptionError_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscriptionError_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.SubscriptionError.class, com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.SubscriptionError.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        code_ = emptyIntList();
        message_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscriptionError_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscriptionError getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.SubscriptionError.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscriptionError build() {
        com.daimler.mbcarkit.proto.Protos.SubscriptionError result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscriptionError buildPartial() {
        com.daimler.mbcarkit.proto.Protos.SubscriptionError result = new com.daimler.mbcarkit.proto.Protos.SubscriptionError(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Protos.SubscriptionError result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          code_.makeImmutable();
          result.code_ = code_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          message_.makeImmutable();
          result.message_ = message_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.SubscriptionError) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.SubscriptionError)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.SubscriptionError other) {
        if (other == com.daimler.mbcarkit.proto.Protos.SubscriptionError.getDefaultInstance()) return this;
        if (!other.code_.isEmpty()) {
          if (code_.isEmpty()) {
            code_ = other.code_;
            code_.makeImmutable();
            bitField0_ |= 0x00000001;
          } else {
            ensureCodeIsMutable();
            code_.addAll(other.code_);
          }
          onChanged();
        }
        if (!other.message_.isEmpty()) {
          if (message_.isEmpty()) {
            message_ = other.message_;
            bitField0_ |= 0x00000002;
          } else {
            ensureMessageIsMutable();
            message_.addAll(other.message_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                int tmpRaw = input.readEnum();
                ensureCodeIsMutable();
                code_.addInt(tmpRaw);
                break;
              } // case 8
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureCodeIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  code_.addInt(input.readEnum());
                }
                input.popLimit(limit);
                break;
              } // case 10
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureMessageIsMutable();
                message_.add(s);
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.IntList code_ = emptyIntList();
      private void ensureCodeIsMutable() {
        if (!code_.isModifiable()) {
          code_ = makeMutableCopy(code_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
       * @return A list containing the code.
       */
      public java.util.List<com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType> getCodeList() {
        return new com.google.protobuf.Internal.IntListAdapter<
            com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType>(code_, code_converter_);
      }
      /**
       * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
       * @return The count of code.
       */
      public int getCodeCount() {
        return code_.size();
      }
      /**
       * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
       * @param index The index of the element to return.
       * @return The code at the given index.
       */
      public com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType getCode(int index) {
        return code_converter_.convert(code_.getInt(index));
      }
      /**
       * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
       * @param index The index to set the value at.
       * @param value The code to set.
       * @return This builder for chaining.
       */
      public Builder setCode(
          int index, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCodeIsMutable();
        code_.setInt(index, value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
       * @param value The code to add.
       * @return This builder for chaining.
       */
      public Builder addCode(com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCodeIsMutable();
        code_.addInt(value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
       * @param values The code to add.
       * @return This builder for chaining.
       */
      public Builder addAllCode(
          java.lang.Iterable<? extends com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType> values) {
        ensureCodeIsMutable();
        for (com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType value : values) {
          code_.addInt(value.getNumber());
        }
        onChanged();
        return this;
      }
      /**
       * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCode() {
        code_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
       * @return A list containing the enum numeric values on the wire for code.
       */
      public java.util.List<java.lang.Integer>
      getCodeValueList() {
        code_.makeImmutable();
        return code_;
      }
      /**
       * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of code at the given index.
       */
      public int getCodeValue(int index) {
        return code_.getInt(index);
      }
      /**
       * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
       * @param index The index to set the value at.
       * @param value The enum numeric value on the wire for code to set.
       * @return This builder for chaining.
       */
      public Builder setCodeValue(
          int index, int value) {
        ensureCodeIsMutable();
        code_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
       * @param value The enum numeric value on the wire for code to add.
       * @return This builder for chaining.
       */
      public Builder addCodeValue(int value) {
        ensureCodeIsMutable();
        code_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .proto.SubscriptionErrorType code = 1;</code>
       * @param values The enum numeric values on the wire for code to add.
       * @return This builder for chaining.
       */
      public Builder addAllCodeValue(
          java.lang.Iterable<java.lang.Integer> values) {
        ensureCodeIsMutable();
        for (int value : values) {
          code_.addInt(value);
        }
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList message_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureMessageIsMutable() {
        if (!message_.isModifiable()) {
          message_ = new com.google.protobuf.LazyStringArrayList(message_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * Optional
       * </pre>
       *
       * <code>repeated string message = 2;</code>
       * @return A list containing the message.
       */
      public com.google.protobuf.ProtocolStringList
          getMessageList() {
        message_.makeImmutable();
        return message_;
      }
      /**
       * <pre>
       * Optional
       * </pre>
       *
       * <code>repeated string message = 2;</code>
       * @return The count of message.
       */
      public int getMessageCount() {
        return message_.size();
      }
      /**
       * <pre>
       * Optional
       * </pre>
       *
       * <code>repeated string message = 2;</code>
       * @param index The index of the element to return.
       * @return The message at the given index.
       */
      public java.lang.String getMessage(int index) {
        return message_.get(index);
      }
      /**
       * <pre>
       * Optional
       * </pre>
       *
       * <code>repeated string message = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the message at the given index.
       */
      public com.google.protobuf.ByteString
          getMessageBytes(int index) {
        return message_.getByteString(index);
      }
      /**
       * <pre>
       * Optional
       * </pre>
       *
       * <code>repeated string message = 2;</code>
       * @param index The index to set the value at.
       * @param value The message to set.
       * @return This builder for chaining.
       */
      public Builder setMessage(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMessageIsMutable();
        message_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional
       * </pre>
       *
       * <code>repeated string message = 2;</code>
       * @param value The message to add.
       * @return This builder for chaining.
       */
      public Builder addMessage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMessageIsMutable();
        message_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional
       * </pre>
       *
       * <code>repeated string message = 2;</code>
       * @param values The message to add.
       * @return This builder for chaining.
       */
      public Builder addAllMessage(
          java.lang.Iterable<java.lang.String> values) {
        ensureMessageIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, message_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional
       * </pre>
       *
       * <code>repeated string message = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional
       * </pre>
       *
       * <code>repeated string message = 2;</code>
       * @param value The bytes of the message to add.
       * @return This builder for chaining.
       */
      public Builder addMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureMessageIsMutable();
        message_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:proto.SubscriptionError)
    }

    // @@protoc_insertion_point(class_scope:proto.SubscriptionError)
    private static final com.daimler.mbcarkit.proto.Protos.SubscriptionError DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.SubscriptionError();
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscriptionError getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SubscriptionError>
        PARSER = new com.google.protobuf.AbstractParser<SubscriptionError>() {
      @java.lang.Override
      public SubscriptionError parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.SubscriptionError getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SubscribeToAppTwinRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.SubscribeToAppTwinRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string session_id = 1;</code>
     * @return The sessionId.
     */
    java.lang.String getSessionId();
    /**
     * <code>string session_id = 1;</code>
     * @return The bytes for sessionId.
     */
    com.google.protobuf.ByteString
        getSessionIdBytes();

    /**
     * <code>string ciam_id = 2;</code>
     * @return The ciamId.
     */
    java.lang.String getCiamId();
    /**
     * <code>string ciam_id = 2;</code>
     * @return The bytes for ciamId.
     */
    com.google.protobuf.ByteString
        getCiamIdBytes();

    /**
     * <pre>
     * additional data
     * </pre>
     *
     * <code>string device_locale = 3;</code>
     * @return The deviceLocale.
     */
    java.lang.String getDeviceLocale();
    /**
     * <pre>
     * additional data
     * </pre>
     *
     * <code>string device_locale = 3;</code>
     * @return The bytes for deviceLocale.
     */
    com.google.protobuf.ByteString
        getDeviceLocaleBytes();

    /**
     * <code>string app_id = 4;</code>
     * @return The appId.
     */
    java.lang.String getAppId();
    /**
     * <code>string app_id = 4;</code>
     * @return The bytes for appId.
     */
    com.google.protobuf.ByteString
        getAppIdBytes();

    /**
     * <code>string app_version = 5;</code>
     * @return The appVersion.
     */
    java.lang.String getAppVersion();
    /**
     * <code>string app_version = 5;</code>
     * @return The bytes for appVersion.
     */
    com.google.protobuf.ByteString
        getAppVersionBytes();

    /**
     * <code>.proto.OperatingSystemName os_name = 6;</code>
     * @return The enum numeric value on the wire for osName.
     */
    int getOsNameValue();
    /**
     * <code>.proto.OperatingSystemName os_name = 6;</code>
     * @return The osName.
     */
    com.daimler.mbcarkit.proto.Protos.OperatingSystemName getOsName();

    /**
     * <code>string os_version = 7;</code>
     * @return The osVersion.
     */
    java.lang.String getOsVersion();
    /**
     * <code>string os_version = 7;</code>
     * @return The bytes for osVersion.
     */
    com.google.protobuf.ByteString
        getOsVersionBytes();

    /**
     * <code>string device_model = 8;</code>
     * @return The deviceModel.
     */
    java.lang.String getDeviceModel();
    /**
     * <code>string device_model = 8;</code>
     * @return The bytes for deviceModel.
     */
    com.google.protobuf.ByteString
        getDeviceModelBytes();

    /**
     * <code>string network_carrier = 9;</code>
     * @return The networkCarrier.
     */
    java.lang.String getNetworkCarrier();
    /**
     * <code>string network_carrier = 9;</code>
     * @return The bytes for networkCarrier.
     */
    com.google.protobuf.ByteString
        getNetworkCarrierBytes();

    /**
     * <code>string sdk_version = 10;</code>
     * @return The sdkVersion.
     */
    java.lang.String getSdkVersion();
    /**
     * <code>string sdk_version = 10;</code>
     * @return The bytes for sdkVersion.
     */
    com.google.protobuf.ByteString
        getSdkVersionBytes();
  }
  /**
   * <pre>
   * Sent from Websocket-Service -&gt; AppTwin
   * </pre>
   *
   * Protobuf type {@code proto.SubscribeToAppTwinRequest}
   */
  public static final class SubscribeToAppTwinRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.SubscribeToAppTwinRequest)
      SubscribeToAppTwinRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "SubscribeToAppTwinRequest");
    }
    // Use SubscribeToAppTwinRequest.newBuilder() to construct.
    private SubscribeToAppTwinRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SubscribeToAppTwinRequest() {
      sessionId_ = "";
      ciamId_ = "";
      deviceLocale_ = "";
      appId_ = "";
      appVersion_ = "";
      osName_ = 0;
      osVersion_ = "";
      deviceModel_ = "";
      networkCarrier_ = "";
      sdkVersion_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeToAppTwinRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeToAppTwinRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest.class, com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest.Builder.class);
    }

    public static final int SESSION_ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object sessionId_ = "";
    /**
     * <code>string session_id = 1;</code>
     * @return The sessionId.
     */
    @java.lang.Override
    public java.lang.String getSessionId() {
      java.lang.Object ref = sessionId_;
      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();
        sessionId_ = s;
        return s;
      }
    }
    /**
     * <code>string session_id = 1;</code>
     * @return The bytes for sessionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSessionIdBytes() {
      java.lang.Object ref = sessionId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sessionId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CIAM_ID_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object ciamId_ = "";
    /**
     * <code>string ciam_id = 2;</code>
     * @return The ciamId.
     */
    @java.lang.Override
    public java.lang.String getCiamId() {
      java.lang.Object ref = ciamId_;
      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();
        ciamId_ = s;
        return s;
      }
    }
    /**
     * <code>string ciam_id = 2;</code>
     * @return The bytes for ciamId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCiamIdBytes() {
      java.lang.Object ref = ciamId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ciamId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DEVICE_LOCALE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object deviceLocale_ = "";
    /**
     * <pre>
     * additional data
     * </pre>
     *
     * <code>string device_locale = 3;</code>
     * @return The deviceLocale.
     */
    @java.lang.Override
    public java.lang.String getDeviceLocale() {
      java.lang.Object ref = deviceLocale_;
      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();
        deviceLocale_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * additional data
     * </pre>
     *
     * <code>string device_locale = 3;</code>
     * @return The bytes for deviceLocale.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDeviceLocaleBytes() {
      java.lang.Object ref = deviceLocale_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        deviceLocale_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int APP_ID_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object appId_ = "";
    /**
     * <code>string app_id = 4;</code>
     * @return The appId.
     */
    @java.lang.Override
    public java.lang.String getAppId() {
      java.lang.Object ref = appId_;
      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();
        appId_ = s;
        return s;
      }
    }
    /**
     * <code>string app_id = 4;</code>
     * @return The bytes for appId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAppIdBytes() {
      java.lang.Object ref = appId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        appId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int APP_VERSION_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object appVersion_ = "";
    /**
     * <code>string app_version = 5;</code>
     * @return The appVersion.
     */
    @java.lang.Override
    public java.lang.String getAppVersion() {
      java.lang.Object ref = appVersion_;
      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();
        appVersion_ = s;
        return s;
      }
    }
    /**
     * <code>string app_version = 5;</code>
     * @return The bytes for appVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAppVersionBytes() {
      java.lang.Object ref = appVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        appVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OS_NAME_FIELD_NUMBER = 6;
    private int osName_ = 0;
    /**
     * <code>.proto.OperatingSystemName os_name = 6;</code>
     * @return The enum numeric value on the wire for osName.
     */
    @java.lang.Override public int getOsNameValue() {
      return osName_;
    }
    /**
     * <code>.proto.OperatingSystemName os_name = 6;</code>
     * @return The osName.
     */
    @java.lang.Override public com.daimler.mbcarkit.proto.Protos.OperatingSystemName getOsName() {
      com.daimler.mbcarkit.proto.Protos.OperatingSystemName result = com.daimler.mbcarkit.proto.Protos.OperatingSystemName.forNumber(osName_);
      return result == null ? com.daimler.mbcarkit.proto.Protos.OperatingSystemName.UNRECOGNIZED : result;
    }

    public static final int OS_VERSION_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object osVersion_ = "";
    /**
     * <code>string os_version = 7;</code>
     * @return The osVersion.
     */
    @java.lang.Override
    public java.lang.String getOsVersion() {
      java.lang.Object ref = osVersion_;
      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();
        osVersion_ = s;
        return s;
      }
    }
    /**
     * <code>string os_version = 7;</code>
     * @return The bytes for osVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOsVersionBytes() {
      java.lang.Object ref = osVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        osVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DEVICE_MODEL_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object deviceModel_ = "";
    /**
     * <code>string device_model = 8;</code>
     * @return The deviceModel.
     */
    @java.lang.Override
    public java.lang.String getDeviceModel() {
      java.lang.Object ref = deviceModel_;
      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();
        deviceModel_ = s;
        return s;
      }
    }
    /**
     * <code>string device_model = 8;</code>
     * @return The bytes for deviceModel.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDeviceModelBytes() {
      java.lang.Object ref = deviceModel_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        deviceModel_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NETWORK_CARRIER_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile java.lang.Object networkCarrier_ = "";
    /**
     * <code>string network_carrier = 9;</code>
     * @return The networkCarrier.
     */
    @java.lang.Override
    public java.lang.String getNetworkCarrier() {
      java.lang.Object ref = networkCarrier_;
      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();
        networkCarrier_ = s;
        return s;
      }
    }
    /**
     * <code>string network_carrier = 9;</code>
     * @return The bytes for networkCarrier.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNetworkCarrierBytes() {
      java.lang.Object ref = networkCarrier_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        networkCarrier_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SDK_VERSION_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private volatile java.lang.Object sdkVersion_ = "";
    /**
     * <code>string sdk_version = 10;</code>
     * @return The sdkVersion.
     */
    @java.lang.Override
    public java.lang.String getSdkVersion() {
      java.lang.Object ref = sdkVersion_;
      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();
        sdkVersion_ = s;
        return s;
      }
    }
    /**
     * <code>string sdk_version = 10;</code>
     * @return The bytes for sdkVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSdkVersionBytes() {
      java.lang.Object ref = sdkVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sdkVersion_ = 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 (!com.google.protobuf.GeneratedMessage.isStringEmpty(sessionId_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, sessionId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(ciamId_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, ciamId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(deviceLocale_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, deviceLocale_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(appId_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, appId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(appVersion_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, appVersion_);
      }
      if (osName_ != com.daimler.mbcarkit.proto.Protos.OperatingSystemName.UNKNOWN_OPERATING_SYSTEM.getNumber()) {
        output.writeEnum(6, osName_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(osVersion_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, osVersion_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(deviceModel_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 8, deviceModel_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(networkCarrier_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, networkCarrier_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(sdkVersion_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 10, sdkVersion_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(sessionId_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, sessionId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(ciamId_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, ciamId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(deviceLocale_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, deviceLocale_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(appId_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, appId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(appVersion_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, appVersion_);
      }
      if (osName_ != com.daimler.mbcarkit.proto.Protos.OperatingSystemName.UNKNOWN_OPERATING_SYSTEM.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(6, osName_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(osVersion_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(7, osVersion_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(deviceModel_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(8, deviceModel_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(networkCarrier_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(9, networkCarrier_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(sdkVersion_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(10, sdkVersion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest other = (com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest) obj;

      if (!getSessionId()
          .equals(other.getSessionId())) return false;
      if (!getCiamId()
          .equals(other.getCiamId())) return false;
      if (!getDeviceLocale()
          .equals(other.getDeviceLocale())) return false;
      if (!getAppId()
          .equals(other.getAppId())) return false;
      if (!getAppVersion()
          .equals(other.getAppVersion())) return false;
      if (osName_ != other.osName_) return false;
      if (!getOsVersion()
          .equals(other.getOsVersion())) return false;
      if (!getDeviceModel()
          .equals(other.getDeviceModel())) return false;
      if (!getNetworkCarrier()
          .equals(other.getNetworkCarrier())) return false;
      if (!getSdkVersion()
          .equals(other.getSdkVersion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) 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) + SESSION_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSessionId().hashCode();
      hash = (37 * hash) + CIAM_ID_FIELD_NUMBER;
      hash = (53 * hash) + getCiamId().hashCode();
      hash = (37 * hash) + DEVICE_LOCALE_FIELD_NUMBER;
      hash = (53 * hash) + getDeviceLocale().hashCode();
      hash = (37 * hash) + APP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getAppId().hashCode();
      hash = (37 * hash) + APP_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getAppVersion().hashCode();
      hash = (37 * hash) + OS_NAME_FIELD_NUMBER;
      hash = (53 * hash) + osName_;
      hash = (37 * hash) + OS_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getOsVersion().hashCode();
      hash = (37 * hash) + DEVICE_MODEL_FIELD_NUMBER;
      hash = (53 * hash) + getDeviceModel().hashCode();
      hash = (37 * hash) + NETWORK_CARRIER_FIELD_NUMBER;
      hash = (53 * hash) + getNetworkCarrier().hashCode();
      hash = (37 * hash) + SDK_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getSdkVersion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Sent from Websocket-Service -&gt; AppTwin
     * </pre>
     *
     * Protobuf type {@code proto.SubscribeToAppTwinRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.SubscribeToAppTwinRequest)
        com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeToAppTwinRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeToAppTwinRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest.class, com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        sessionId_ = "";
        ciamId_ = "";
        deviceLocale_ = "";
        appId_ = "";
        appVersion_ = "";
        osName_ = 0;
        osVersion_ = "";
        deviceModel_ = "";
        networkCarrier_ = "";
        sdkVersion_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeToAppTwinRequest_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest build() {
        com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest buildPartial() {
        com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest result = new com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.sessionId_ = sessionId_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.ciamId_ = ciamId_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.deviceLocale_ = deviceLocale_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.appId_ = appId_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.appVersion_ = appVersion_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.osName_ = osName_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.osVersion_ = osVersion_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.deviceModel_ = deviceModel_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.networkCarrier_ = networkCarrier_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.sdkVersion_ = sdkVersion_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest other) {
        if (other == com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest.getDefaultInstance()) return this;
        if (!other.getSessionId().isEmpty()) {
          sessionId_ = other.sessionId_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getCiamId().isEmpty()) {
          ciamId_ = other.ciamId_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getDeviceLocale().isEmpty()) {
          deviceLocale_ = other.deviceLocale_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (!other.getAppId().isEmpty()) {
          appId_ = other.appId_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (!other.getAppVersion().isEmpty()) {
          appVersion_ = other.appVersion_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.osName_ != 0) {
          setOsNameValue(other.getOsNameValue());
        }
        if (!other.getOsVersion().isEmpty()) {
          osVersion_ = other.osVersion_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (!other.getDeviceModel().isEmpty()) {
          deviceModel_ = other.deviceModel_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (!other.getNetworkCarrier().isEmpty()) {
          networkCarrier_ = other.networkCarrier_;
          bitField0_ |= 0x00000100;
          onChanged();
        }
        if (!other.getSdkVersion().isEmpty()) {
          sdkVersion_ = other.sdkVersion_;
          bitField0_ |= 0x00000200;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                sessionId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                ciamId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                deviceLocale_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                appId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                appVersion_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 48: {
                osName_ = input.readEnum();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 58: {
                osVersion_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                deviceModel_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                networkCarrier_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 82: {
                sdkVersion_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object sessionId_ = "";
      /**
       * <code>string session_id = 1;</code>
       * @return The sessionId.
       */
      public java.lang.String getSessionId() {
        java.lang.Object ref = sessionId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sessionId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string session_id = 1;</code>
       * @return The bytes for sessionId.
       */
      public com.google.protobuf.ByteString
          getSessionIdBytes() {
        java.lang.Object ref = sessionId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sessionId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string session_id = 1;</code>
       * @param value The sessionId to set.
       * @return This builder for chaining.
       */
      public Builder setSessionId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        sessionId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>string session_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSessionId() {
        sessionId_ = getDefaultInstance().getSessionId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>string session_id = 1;</code>
       * @param value The bytes for sessionId to set.
       * @return This builder for chaining.
       */
      public Builder setSessionIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        sessionId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object ciamId_ = "";
      /**
       * <code>string ciam_id = 2;</code>
       * @return The ciamId.
       */
      public java.lang.String getCiamId() {
        java.lang.Object ref = ciamId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          ciamId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string ciam_id = 2;</code>
       * @return The bytes for ciamId.
       */
      public com.google.protobuf.ByteString
          getCiamIdBytes() {
        java.lang.Object ref = ciamId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ciamId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string ciam_id = 2;</code>
       * @param value The ciamId to set.
       * @return This builder for chaining.
       */
      public Builder setCiamId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ciamId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>string ciam_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearCiamId() {
        ciamId_ = getDefaultInstance().getCiamId();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>string ciam_id = 2;</code>
       * @param value The bytes for ciamId to set.
       * @return This builder for chaining.
       */
      public Builder setCiamIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ciamId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object deviceLocale_ = "";
      /**
       * <pre>
       * additional data
       * </pre>
       *
       * <code>string device_locale = 3;</code>
       * @return The deviceLocale.
       */
      public java.lang.String getDeviceLocale() {
        java.lang.Object ref = deviceLocale_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          deviceLocale_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * additional data
       * </pre>
       *
       * <code>string device_locale = 3;</code>
       * @return The bytes for deviceLocale.
       */
      public com.google.protobuf.ByteString
          getDeviceLocaleBytes() {
        java.lang.Object ref = deviceLocale_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          deviceLocale_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * additional data
       * </pre>
       *
       * <code>string device_locale = 3;</code>
       * @param value The deviceLocale to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceLocale(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        deviceLocale_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * additional data
       * </pre>
       *
       * <code>string device_locale = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDeviceLocale() {
        deviceLocale_ = getDefaultInstance().getDeviceLocale();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * additional data
       * </pre>
       *
       * <code>string device_locale = 3;</code>
       * @param value The bytes for deviceLocale to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceLocaleBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        deviceLocale_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object appId_ = "";
      /**
       * <code>string app_id = 4;</code>
       * @return The appId.
       */
      public java.lang.String getAppId() {
        java.lang.Object ref = appId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          appId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string app_id = 4;</code>
       * @return The bytes for appId.
       */
      public com.google.protobuf.ByteString
          getAppIdBytes() {
        java.lang.Object ref = appId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          appId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string app_id = 4;</code>
       * @param value The appId to set.
       * @return This builder for chaining.
       */
      public Builder setAppId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        appId_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>string app_id = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearAppId() {
        appId_ = getDefaultInstance().getAppId();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <code>string app_id = 4;</code>
       * @param value The bytes for appId to set.
       * @return This builder for chaining.
       */
      public Builder setAppIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        appId_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object appVersion_ = "";
      /**
       * <code>string app_version = 5;</code>
       * @return The appVersion.
       */
      public java.lang.String getAppVersion() {
        java.lang.Object ref = appVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          appVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string app_version = 5;</code>
       * @return The bytes for appVersion.
       */
      public com.google.protobuf.ByteString
          getAppVersionBytes() {
        java.lang.Object ref = appVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          appVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string app_version = 5;</code>
       * @param value The appVersion to set.
       * @return This builder for chaining.
       */
      public Builder setAppVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        appVersion_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>string app_version = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearAppVersion() {
        appVersion_ = getDefaultInstance().getAppVersion();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <code>string app_version = 5;</code>
       * @param value The bytes for appVersion to set.
       * @return This builder for chaining.
       */
      public Builder setAppVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        appVersion_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private int osName_ = 0;
      /**
       * <code>.proto.OperatingSystemName os_name = 6;</code>
       * @return The enum numeric value on the wire for osName.
       */
      @java.lang.Override public int getOsNameValue() {
        return osName_;
      }
      /**
       * <code>.proto.OperatingSystemName os_name = 6;</code>
       * @param value The enum numeric value on the wire for osName to set.
       * @return This builder for chaining.
       */
      public Builder setOsNameValue(int value) {
        osName_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>.proto.OperatingSystemName os_name = 6;</code>
       * @return The osName.
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.OperatingSystemName getOsName() {
        com.daimler.mbcarkit.proto.Protos.OperatingSystemName result = com.daimler.mbcarkit.proto.Protos.OperatingSystemName.forNumber(osName_);
        return result == null ? com.daimler.mbcarkit.proto.Protos.OperatingSystemName.UNRECOGNIZED : result;
      }
      /**
       * <code>.proto.OperatingSystemName os_name = 6;</code>
       * @param value The osName to set.
       * @return This builder for chaining.
       */
      public Builder setOsName(com.daimler.mbcarkit.proto.Protos.OperatingSystemName value) {
        if (value == null) { throw new NullPointerException(); }
        bitField0_ |= 0x00000020;
        osName_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.proto.OperatingSystemName os_name = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearOsName() {
        bitField0_ = (bitField0_ & ~0x00000020);
        osName_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object osVersion_ = "";
      /**
       * <code>string os_version = 7;</code>
       * @return The osVersion.
       */
      public java.lang.String getOsVersion() {
        java.lang.Object ref = osVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          osVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string os_version = 7;</code>
       * @return The bytes for osVersion.
       */
      public com.google.protobuf.ByteString
          getOsVersionBytes() {
        java.lang.Object ref = osVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          osVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string os_version = 7;</code>
       * @param value The osVersion to set.
       * @return This builder for chaining.
       */
      public Builder setOsVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        osVersion_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>string os_version = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearOsVersion() {
        osVersion_ = getDefaultInstance().getOsVersion();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <code>string os_version = 7;</code>
       * @param value The bytes for osVersion to set.
       * @return This builder for chaining.
       */
      public Builder setOsVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        osVersion_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object deviceModel_ = "";
      /**
       * <code>string device_model = 8;</code>
       * @return The deviceModel.
       */
      public java.lang.String getDeviceModel() {
        java.lang.Object ref = deviceModel_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          deviceModel_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string device_model = 8;</code>
       * @return The bytes for deviceModel.
       */
      public com.google.protobuf.ByteString
          getDeviceModelBytes() {
        java.lang.Object ref = deviceModel_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          deviceModel_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string device_model = 8;</code>
       * @param value The deviceModel to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceModel(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        deviceModel_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>string device_model = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearDeviceModel() {
        deviceModel_ = getDefaultInstance().getDeviceModel();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <code>string device_model = 8;</code>
       * @param value The bytes for deviceModel to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceModelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        deviceModel_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private java.lang.Object networkCarrier_ = "";
      /**
       * <code>string network_carrier = 9;</code>
       * @return The networkCarrier.
       */
      public java.lang.String getNetworkCarrier() {
        java.lang.Object ref = networkCarrier_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          networkCarrier_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string network_carrier = 9;</code>
       * @return The bytes for networkCarrier.
       */
      public com.google.protobuf.ByteString
          getNetworkCarrierBytes() {
        java.lang.Object ref = networkCarrier_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          networkCarrier_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string network_carrier = 9;</code>
       * @param value The networkCarrier to set.
       * @return This builder for chaining.
       */
      public Builder setNetworkCarrier(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        networkCarrier_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>string network_carrier = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearNetworkCarrier() {
        networkCarrier_ = getDefaultInstance().getNetworkCarrier();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <code>string network_carrier = 9;</code>
       * @param value The bytes for networkCarrier to set.
       * @return This builder for chaining.
       */
      public Builder setNetworkCarrierBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        networkCarrier_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }

      private java.lang.Object sdkVersion_ = "";
      /**
       * <code>string sdk_version = 10;</code>
       * @return The sdkVersion.
       */
      public java.lang.String getSdkVersion() {
        java.lang.Object ref = sdkVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sdkVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string sdk_version = 10;</code>
       * @return The bytes for sdkVersion.
       */
      public com.google.protobuf.ByteString
          getSdkVersionBytes() {
        java.lang.Object ref = sdkVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sdkVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string sdk_version = 10;</code>
       * @param value The sdkVersion to set.
       * @return This builder for chaining.
       */
      public Builder setSdkVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        sdkVersion_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>string sdk_version = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearSdkVersion() {
        sdkVersion_ = getDefaultInstance().getSdkVersion();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <code>string sdk_version = 10;</code>
       * @param value The bytes for sdkVersion to set.
       * @return This builder for chaining.
       */
      public Builder setSdkVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        sdkVersion_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:proto.SubscribeToAppTwinRequest)
    }

    // @@protoc_insertion_point(class_scope:proto.SubscribeToAppTwinRequest)
    private static final com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest();
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SubscribeToAppTwinRequest>
        PARSER = new com.google.protobuf.AbstractParser<SubscribeToAppTwinRequest>() {
      @java.lang.Override
      public SubscribeToAppTwinRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResubscribeToAppTwinRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.ResubscribeToAppTwinRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string session_id = 1;</code>
     * @return The sessionId.
     */
    java.lang.String getSessionId();
    /**
     * <code>string session_id = 1;</code>
     * @return The bytes for sessionId.
     */
    com.google.protobuf.ByteString
        getSessionIdBytes();

    /**
     * <code>string ciam_id = 2;</code>
     * @return The ciamId.
     */
    java.lang.String getCiamId();
    /**
     * <code>string ciam_id = 2;</code>
     * @return The bytes for ciamId.
     */
    com.google.protobuf.ByteString
        getCiamIdBytes();
  }
  /**
   * Protobuf type {@code proto.ResubscribeToAppTwinRequest}
   */
  public static final class ResubscribeToAppTwinRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.ResubscribeToAppTwinRequest)
      ResubscribeToAppTwinRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "ResubscribeToAppTwinRequest");
    }
    // Use ResubscribeToAppTwinRequest.newBuilder() to construct.
    private ResubscribeToAppTwinRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ResubscribeToAppTwinRequest() {
      sessionId_ = "";
      ciamId_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_ResubscribeToAppTwinRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_ResubscribeToAppTwinRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest.class, com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest.Builder.class);
    }

    public static final int SESSION_ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object sessionId_ = "";
    /**
     * <code>string session_id = 1;</code>
     * @return The sessionId.
     */
    @java.lang.Override
    public java.lang.String getSessionId() {
      java.lang.Object ref = sessionId_;
      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();
        sessionId_ = s;
        return s;
      }
    }
    /**
     * <code>string session_id = 1;</code>
     * @return The bytes for sessionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSessionIdBytes() {
      java.lang.Object ref = sessionId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sessionId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CIAM_ID_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object ciamId_ = "";
    /**
     * <code>string ciam_id = 2;</code>
     * @return The ciamId.
     */
    @java.lang.Override
    public java.lang.String getCiamId() {
      java.lang.Object ref = ciamId_;
      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();
        ciamId_ = s;
        return s;
      }
    }
    /**
     * <code>string ciam_id = 2;</code>
     * @return The bytes for ciamId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCiamIdBytes() {
      java.lang.Object ref = ciamId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ciamId_ = 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 (!com.google.protobuf.GeneratedMessage.isStringEmpty(sessionId_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, sessionId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(ciamId_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, ciamId_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(sessionId_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, sessionId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(ciamId_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, ciamId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest other = (com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest) obj;

      if (!getSessionId()
          .equals(other.getSessionId())) return false;
      if (!getCiamId()
          .equals(other.getCiamId())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) 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) + SESSION_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSessionId().hashCode();
      hash = (37 * hash) + CIAM_ID_FIELD_NUMBER;
      hash = (53 * hash) + getCiamId().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code proto.ResubscribeToAppTwinRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.ResubscribeToAppTwinRequest)
        com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_ResubscribeToAppTwinRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_ResubscribeToAppTwinRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest.class, com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        sessionId_ = "";
        ciamId_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_ResubscribeToAppTwinRequest_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest build() {
        com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest buildPartial() {
        com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest result = new com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.sessionId_ = sessionId_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.ciamId_ = ciamId_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest other) {
        if (other == com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest.getDefaultInstance()) return this;
        if (!other.getSessionId().isEmpty()) {
          sessionId_ = other.sessionId_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getCiamId().isEmpty()) {
          ciamId_ = other.ciamId_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                sessionId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                ciamId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object sessionId_ = "";
      /**
       * <code>string session_id = 1;</code>
       * @return The sessionId.
       */
      public java.lang.String getSessionId() {
        java.lang.Object ref = sessionId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sessionId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string session_id = 1;</code>
       * @return The bytes for sessionId.
       */
      public com.google.protobuf.ByteString
          getSessionIdBytes() {
        java.lang.Object ref = sessionId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sessionId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string session_id = 1;</code>
       * @param value The sessionId to set.
       * @return This builder for chaining.
       */
      public Builder setSessionId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        sessionId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>string session_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSessionId() {
        sessionId_ = getDefaultInstance().getSessionId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>string session_id = 1;</code>
       * @param value The bytes for sessionId to set.
       * @return This builder for chaining.
       */
      public Builder setSessionIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        sessionId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object ciamId_ = "";
      /**
       * <code>string ciam_id = 2;</code>
       * @return The ciamId.
       */
      public java.lang.String getCiamId() {
        java.lang.Object ref = ciamId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          ciamId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string ciam_id = 2;</code>
       * @return The bytes for ciamId.
       */
      public com.google.protobuf.ByteString
          getCiamIdBytes() {
        java.lang.Object ref = ciamId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ciamId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string ciam_id = 2;</code>
       * @param value The ciamId to set.
       * @return This builder for chaining.
       */
      public Builder setCiamId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ciamId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>string ciam_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearCiamId() {
        ciamId_ = getDefaultInstance().getCiamId();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>string ciam_id = 2;</code>
       * @param value The bytes for ciamId to set.
       * @return This builder for chaining.
       */
      public Builder setCiamIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ciamId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:proto.ResubscribeToAppTwinRequest)
    }

    // @@protoc_insertion_point(class_scope:proto.ResubscribeToAppTwinRequest)
    private static final com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest();
    }

    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ResubscribeToAppTwinRequest>
        PARSER = new com.google.protobuf.AbstractParser<ResubscribeToAppTwinRequest>() {
      @java.lang.Override
      public ResubscribeToAppTwinRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResubscribeToAppTwinResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.ResubscribeToAppTwinResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.proto.ResubscribeToAppTwinResponse.ResubscribeResult result = 1;</code>
     * @return The enum numeric value on the wire for result.
     */
    int getResultValue();
    /**
     * <code>.proto.ResubscribeToAppTwinResponse.ResubscribeResult result = 1;</code>
     * @return The result.
     */
    com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.ResubscribeResult getResult();
  }
  /**
   * Protobuf type {@code proto.ResubscribeToAppTwinResponse}
   */
  public static final class ResubscribeToAppTwinResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.ResubscribeToAppTwinResponse)
      ResubscribeToAppTwinResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "ResubscribeToAppTwinResponse");
    }
    // Use ResubscribeToAppTwinResponse.newBuilder() to construct.
    private ResubscribeToAppTwinResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ResubscribeToAppTwinResponse() {
      result_ = 0;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_ResubscribeToAppTwinResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_ResubscribeToAppTwinResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.class, com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code proto.ResubscribeToAppTwinResponse.ResubscribeResult}
     */
    public enum ResubscribeResult
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN_ERROR = 0;</code>
       */
      UNKNOWN_ERROR(0),
      /**
       * <code>SUCCESS = 1;</code>
       */
      SUCCESS(1),
      /**
       * <code>INVALID_JWT_ERROR = 2;</code>
       */
      INVALID_JWT_ERROR(2),
      /**
       * <code>TARGET_DOES_NOT_EXIST = 3;</code>
       */
      TARGET_DOES_NOT_EXIST(3),
      UNRECOGNIZED(-1),
      ;

      static {
        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 33,
          /* patch= */ 6,
          /* suffix= */ "",
          "ResubscribeResult");
      }
      /**
       * <code>UNKNOWN_ERROR = 0;</code>
       */
      public static final int UNKNOWN_ERROR_VALUE = 0;
      /**
       * <code>SUCCESS = 1;</code>
       */
      public static final int SUCCESS_VALUE = 1;
      /**
       * <code>INVALID_JWT_ERROR = 2;</code>
       */
      public static final int INVALID_JWT_ERROR_VALUE = 2;
      /**
       * <code>TARGET_DOES_NOT_EXIST = 3;</code>
       */
      public static final int TARGET_DOES_NOT_EXIST_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;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ResubscribeResult valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static ResubscribeResult forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN_ERROR;
          case 1: return SUCCESS;
          case 2: return INVALID_JWT_ERROR;
          case 3: return TARGET_DOES_NOT_EXIST;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.getDescriptor().getEnumTypes().get(0);
      }

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

      public static ResubscribeResult 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 ResubscribeResult(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:proto.ResubscribeToAppTwinResponse.ResubscribeResult)
    }

    public static final int RESULT_FIELD_NUMBER = 1;
    private int result_ = 0;
    /**
     * <code>.proto.ResubscribeToAppTwinResponse.ResubscribeResult result = 1;</code>
     * @return The enum numeric value on the wire for result.
     */
    @java.lang.Override public int getResultValue() {
      return result_;
    }
    /**
     * <code>.proto.ResubscribeToAppTwinResponse.ResubscribeResult result = 1;</code>
     * @return The result.
     */
    @java.lang.Override public com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.ResubscribeResult getResult() {
      com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.ResubscribeResult result = com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.ResubscribeResult.forNumber(result_);
      return result == null ? com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.ResubscribeResult.UNRECOGNIZED : result;
    }

    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 (result_ != com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.ResubscribeResult.UNKNOWN_ERROR.getNumber()) {
        output.writeEnum(1, result_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (result_ != com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.ResubscribeResult.UNKNOWN_ERROR.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, result_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse other = (com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse) obj;

      if (result_ != other.result_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) 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) + RESULT_FIELD_NUMBER;
      hash = (53 * hash) + result_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code proto.ResubscribeToAppTwinResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.ResubscribeToAppTwinResponse)
        com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_ResubscribeToAppTwinResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_ResubscribeToAppTwinResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.class, com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        result_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_ResubscribeToAppTwinResponse_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse build() {
        com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse buildPartial() {
        com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse result = new com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.result_ = result_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse other) {
        if (other == com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.getDefaultInstance()) return this;
        if (other.result_ != 0) {
          setResultValue(other.getResultValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                result_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int result_ = 0;
      /**
       * <code>.proto.ResubscribeToAppTwinResponse.ResubscribeResult result = 1;</code>
       * @return The enum numeric value on the wire for result.
       */
      @java.lang.Override public int getResultValue() {
        return result_;
      }
      /**
       * <code>.proto.ResubscribeToAppTwinResponse.ResubscribeResult result = 1;</code>
       * @param value The enum numeric value on the wire for result to set.
       * @return This builder for chaining.
       */
      public Builder setResultValue(int value) {
        result_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.proto.ResubscribeToAppTwinResponse.ResubscribeResult result = 1;</code>
       * @return The result.
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.ResubscribeResult getResult() {
        com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.ResubscribeResult result = com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.ResubscribeResult.forNumber(result_);
        return result == null ? com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.ResubscribeResult.UNRECOGNIZED : result;
      }
      /**
       * <code>.proto.ResubscribeToAppTwinResponse.ResubscribeResult result = 1;</code>
       * @param value The result to set.
       * @return This builder for chaining.
       */
      public Builder setResult(com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse.ResubscribeResult value) {
        if (value == null) { throw new NullPointerException(); }
        bitField0_ |= 0x00000001;
        result_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.proto.ResubscribeToAppTwinResponse.ResubscribeResult result = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearResult() {
        bitField0_ = (bitField0_ & ~0x00000001);
        result_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:proto.ResubscribeToAppTwinResponse)
    }

    // @@protoc_insertion_point(class_scope:proto.ResubscribeToAppTwinResponse)
    private static final com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse();
    }

    public static com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ResubscribeToAppTwinResponse>
        PARSER = new com.google.protobuf.AbstractParser<ResubscribeToAppTwinResponse>() {
      @java.lang.Override
      public ResubscribeToAppTwinResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.ResubscribeToAppTwinResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SubscribeToAppTwinResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.SubscribeToAppTwinResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    boolean getSuccess();

    /**
     * <code>.proto.SubscriptionErrorType error_code = 2;</code>
     * @return The enum numeric value on the wire for errorCode.
     */
    int getErrorCodeValue();
    /**
     * <code>.proto.SubscriptionErrorType error_code = 2;</code>
     * @return The errorCode.
     */
    com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType getErrorCode();
  }
  /**
   * <pre>
   * Sent from AppTwin -&gt; Websocket-Service
   * </pre>
   *
   * Protobuf type {@code proto.SubscribeToAppTwinResponse}
   */
  public static final class SubscribeToAppTwinResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.SubscribeToAppTwinResponse)
      SubscribeToAppTwinResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "SubscribeToAppTwinResponse");
    }
    // Use SubscribeToAppTwinResponse.newBuilder() to construct.
    private SubscribeToAppTwinResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SubscribeToAppTwinResponse() {
      errorCode_ = 0;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeToAppTwinResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeToAppTwinResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse.class, com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse.Builder.class);
    }

    public static final int SUCCESS_FIELD_NUMBER = 1;
    private boolean success_ = false;
    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    @java.lang.Override
    public boolean getSuccess() {
      return success_;
    }

    public static final int ERROR_CODE_FIELD_NUMBER = 2;
    private int errorCode_ = 0;
    /**
     * <code>.proto.SubscriptionErrorType error_code = 2;</code>
     * @return The enum numeric value on the wire for errorCode.
     */
    @java.lang.Override public int getErrorCodeValue() {
      return errorCode_;
    }
    /**
     * <code>.proto.SubscriptionErrorType error_code = 2;</code>
     * @return The errorCode.
     */
    @java.lang.Override public com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType getErrorCode() {
      com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType result = com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType.forNumber(errorCode_);
      return result == null ? com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType.UNRECOGNIZED : result;
    }

    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 (success_ != false) {
        output.writeBool(1, success_);
      }
      if (errorCode_ != com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType.UNKNOWN.getNumber()) {
        output.writeEnum(2, errorCode_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (success_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, success_);
      }
      if (errorCode_ != com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, errorCode_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse other = (com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse) obj;

      if (getSuccess()
          != other.getSuccess()) return false;
      if (errorCode_ != other.errorCode_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) 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) + SUCCESS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSuccess());
      hash = (37 * hash) + ERROR_CODE_FIELD_NUMBER;
      hash = (53 * hash) + errorCode_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Sent from AppTwin -&gt; Websocket-Service
     * </pre>
     *
     * Protobuf type {@code proto.SubscribeToAppTwinResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.SubscribeToAppTwinResponse)
        com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeToAppTwinResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeToAppTwinResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse.class, com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        success_ = false;
        errorCode_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_SubscribeToAppTwinResponse_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse build() {
        com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse buildPartial() {
        com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse result = new com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.success_ = success_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.errorCode_ = errorCode_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse other) {
        if (other == com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse.getDefaultInstance()) return this;
        if (other.getSuccess() != false) {
          setSuccess(other.getSuccess());
        }
        if (other.errorCode_ != 0) {
          setErrorCodeValue(other.getErrorCodeValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                success_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                errorCode_ = input.readEnum();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private boolean success_ ;
      /**
       * <code>bool success = 1;</code>
       * @return The success.
       */
      @java.lang.Override
      public boolean getSuccess() {
        return success_;
      }
      /**
       * <code>bool success = 1;</code>
       * @param value The success to set.
       * @return This builder for chaining.
       */
      public Builder setSuccess(boolean value) {

        success_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>bool success = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSuccess() {
        bitField0_ = (bitField0_ & ~0x00000001);
        success_ = false;
        onChanged();
        return this;
      }

      private int errorCode_ = 0;
      /**
       * <code>.proto.SubscriptionErrorType error_code = 2;</code>
       * @return The enum numeric value on the wire for errorCode.
       */
      @java.lang.Override public int getErrorCodeValue() {
        return errorCode_;
      }
      /**
       * <code>.proto.SubscriptionErrorType error_code = 2;</code>
       * @param value The enum numeric value on the wire for errorCode to set.
       * @return This builder for chaining.
       */
      public Builder setErrorCodeValue(int value) {
        errorCode_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>.proto.SubscriptionErrorType error_code = 2;</code>
       * @return The errorCode.
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType getErrorCode() {
        com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType result = com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType.forNumber(errorCode_);
        return result == null ? com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType.UNRECOGNIZED : result;
      }
      /**
       * <code>.proto.SubscriptionErrorType error_code = 2;</code>
       * @param value The errorCode to set.
       * @return This builder for chaining.
       */
      public Builder setErrorCode(com.daimler.mbcarkit.proto.Protos.SubscriptionErrorType value) {
        if (value == null) { throw new NullPointerException(); }
        bitField0_ |= 0x00000002;
        errorCode_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.proto.SubscriptionErrorType error_code = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearErrorCode() {
        bitField0_ = (bitField0_ & ~0x00000002);
        errorCode_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:proto.SubscribeToAppTwinResponse)
    }

    // @@protoc_insertion_point(class_scope:proto.SubscribeToAppTwinResponse)
    private static final com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse();
    }

    public static com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SubscribeToAppTwinResponse>
        PARSER = new com.google.protobuf.AbstractParser<SubscribeToAppTwinResponse>() {
      @java.lang.Override
      public SubscribeToAppTwinResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.SubscribeToAppTwinResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UnsubscribeFromAppTwinRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.UnsubscribeFromAppTwinRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string session_id = 1;</code>
     * @return The sessionId.
     */
    java.lang.String getSessionId();
    /**
     * <code>string session_id = 1;</code>
     * @return The bytes for sessionId.
     */
    com.google.protobuf.ByteString
        getSessionIdBytes();
  }
  /**
   * Protobuf type {@code proto.UnsubscribeFromAppTwinRequest}
   */
  public static final class UnsubscribeFromAppTwinRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.UnsubscribeFromAppTwinRequest)
      UnsubscribeFromAppTwinRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "UnsubscribeFromAppTwinRequest");
    }
    // Use UnsubscribeFromAppTwinRequest.newBuilder() to construct.
    private UnsubscribeFromAppTwinRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private UnsubscribeFromAppTwinRequest() {
      sessionId_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeFromAppTwinRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeFromAppTwinRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest.class, com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest.Builder.class);
    }

    public static final int SESSION_ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object sessionId_ = "";
    /**
     * <code>string session_id = 1;</code>
     * @return The sessionId.
     */
    @java.lang.Override
    public java.lang.String getSessionId() {
      java.lang.Object ref = sessionId_;
      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();
        sessionId_ = s;
        return s;
      }
    }
    /**
     * <code>string session_id = 1;</code>
     * @return The bytes for sessionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSessionIdBytes() {
      java.lang.Object ref = sessionId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sessionId_ = 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 (!com.google.protobuf.GeneratedMessage.isStringEmpty(sessionId_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, sessionId_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(sessionId_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, sessionId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest other = (com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest) obj;

      if (!getSessionId()
          .equals(other.getSessionId())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) 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) + SESSION_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSessionId().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code proto.UnsubscribeFromAppTwinRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.UnsubscribeFromAppTwinRequest)
        com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeFromAppTwinRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeFromAppTwinRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest.class, com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        sessionId_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeFromAppTwinRequest_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest build() {
        com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest buildPartial() {
        com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest result = new com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.sessionId_ = sessionId_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest other) {
        if (other == com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest.getDefaultInstance()) return this;
        if (!other.getSessionId().isEmpty()) {
          sessionId_ = other.sessionId_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                sessionId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object sessionId_ = "";
      /**
       * <code>string session_id = 1;</code>
       * @return The sessionId.
       */
      public java.lang.String getSessionId() {
        java.lang.Object ref = sessionId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sessionId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string session_id = 1;</code>
       * @return The bytes for sessionId.
       */
      public com.google.protobuf.ByteString
          getSessionIdBytes() {
        java.lang.Object ref = sessionId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sessionId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string session_id = 1;</code>
       * @param value The sessionId to set.
       * @return This builder for chaining.
       */
      public Builder setSessionId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        sessionId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>string session_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSessionId() {
        sessionId_ = getDefaultInstance().getSessionId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>string session_id = 1;</code>
       * @param value The bytes for sessionId to set.
       * @return This builder for chaining.
       */
      public Builder setSessionIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        sessionId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:proto.UnsubscribeFromAppTwinRequest)
    }

    // @@protoc_insertion_point(class_scope:proto.UnsubscribeFromAppTwinRequest)
    private static final com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest();
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<UnsubscribeFromAppTwinRequest>
        PARSER = new com.google.protobuf.AbstractParser<UnsubscribeFromAppTwinRequest>() {
      @java.lang.Override
      public UnsubscribeFromAppTwinRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UnsubscribeFromAppTwinResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.UnsubscribeFromAppTwinResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    boolean getSuccess();

    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    int getErrorsCount();
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    boolean containsErrors(
        java.lang.String key);
    /**
     * Use {@link #getErrorsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
    getErrors();
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
    getErrorsMap();
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrDefault(
        java.lang.String key,
        /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError defaultValue);
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrThrow(
        java.lang.String key);
  }
  /**
   * Protobuf type {@code proto.UnsubscribeFromAppTwinResponse}
   */
  public static final class UnsubscribeFromAppTwinResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.UnsubscribeFromAppTwinResponse)
      UnsubscribeFromAppTwinResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "UnsubscribeFromAppTwinResponse");
    }
    // Use UnsubscribeFromAppTwinResponse.newBuilder() to construct.
    private UnsubscribeFromAppTwinResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private UnsubscribeFromAppTwinResponse() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeFromAppTwinResponse_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 2:
          return internalGetErrors();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeFromAppTwinResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse.class, com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse.Builder.class);
    }

    public static final int SUCCESS_FIELD_NUMBER = 1;
    private boolean success_ = false;
    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    @java.lang.Override
    public boolean getSuccess() {
      return success_;
    }

    public static final int ERRORS_FIELD_NUMBER = 2;
    private static final class ErrorsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>newDefaultInstance(
                  com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeFromAppTwinResponse_ErrorsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  com.daimler.mbcarkit.proto.Protos.SubscriptionError.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> errors_;
    private com.google.protobuf.MapField<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
    internalGetErrors() {
      if (errors_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            ErrorsDefaultEntryHolder.defaultEntry);
      }
      return errors_;
    }
    public int getErrorsCount() {
      return internalGetErrors().getMap().size();
    }
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    @java.lang.Override
    public boolean containsErrors(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetErrors().getMap().containsKey(key);
    }
    /**
     * Use {@link #getErrorsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> getErrors() {
      return getErrorsMap();
    }
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> getErrorsMap() {
      return internalGetErrors().getMap();
    }
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrDefault(
        java.lang.String key,
        /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> map =
          internalGetErrors().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> map =
          internalGetErrors().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 (success_ != false) {
        output.writeBool(1, success_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetErrors(),
          ErrorsDefaultEntryHolder.defaultEntry,
          2);
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (success_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, success_);
      }
      for (java.util.Map.Entry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> entry
           : internalGetErrors().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
        errors__ = ErrorsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, errors__);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse other = (com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse) obj;

      if (getSuccess()
          != other.getSuccess()) return false;
      if (!internalGetErrors().equals(
          other.internalGetErrors())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) 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) + SUCCESS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSuccess());
      if (!internalGetErrors().getMap().isEmpty()) {
        hash = (37 * hash) + ERRORS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetErrors().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code proto.UnsubscribeFromAppTwinResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.UnsubscribeFromAppTwinResponse)
        com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeFromAppTwinResponse_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetErrors();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableErrors();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeFromAppTwinResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse.class, com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        success_ = false;
        internalGetMutableErrors().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_UnsubscribeFromAppTwinResponse_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse build() {
        com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse buildPartial() {
        com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse result = new com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.success_ = success_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.errors_ = internalGetErrors().build(ErrorsDefaultEntryHolder.defaultEntry);
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse other) {
        if (other == com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse.getDefaultInstance()) return this;
        if (other.getSuccess() != false) {
          setSuccess(other.getSuccess());
        }
        internalGetMutableErrors().mergeFrom(
            other.internalGetErrors());
        bitField0_ |= 0x00000002;
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                success_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
                errors__ = input.readMessage(
                    ErrorsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableErrors().ensureBuilderMap().put(
                    errors__.getKey(), errors__.getValue());
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private boolean success_ ;
      /**
       * <code>bool success = 1;</code>
       * @return The success.
       */
      @java.lang.Override
      public boolean getSuccess() {
        return success_;
      }
      /**
       * <code>bool success = 1;</code>
       * @param value The success to set.
       * @return This builder for chaining.
       */
      public Builder setSuccess(boolean value) {

        success_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>bool success = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSuccess() {
        bitField0_ = (bitField0_ & ~0x00000001);
        success_ = false;
        onChanged();
        return this;
      }

      private static final class ErrorsConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder, com.daimler.mbcarkit.proto.Protos.SubscriptionError> {
        @java.lang.Override
        public com.daimler.mbcarkit.proto.Protos.SubscriptionError build(com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder val) {
          if (val instanceof com.daimler.mbcarkit.proto.Protos.SubscriptionError) { return (com.daimler.mbcarkit.proto.Protos.SubscriptionError) val; }
          return ((com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> defaultEntry() {
          return ErrorsDefaultEntryHolder.defaultEntry;
        }
      };
      private static final ErrorsConverter errorsConverter = new ErrorsConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder, com.daimler.mbcarkit.proto.Protos.SubscriptionError, com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder> errors_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder, com.daimler.mbcarkit.proto.Protos.SubscriptionError, com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder>
          internalGetErrors() {
        if (errors_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(errorsConverter);
        }
        return errors_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder, com.daimler.mbcarkit.proto.Protos.SubscriptionError, com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder>
          internalGetMutableErrors() {
        if (errors_ == null) {
          errors_ = new com.google.protobuf.MapFieldBuilder<>(errorsConverter);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return errors_;
      }
      public int getErrorsCount() {
        return internalGetErrors().ensureBuilderMap().size();
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      @java.lang.Override
      public boolean containsErrors(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetErrors().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getErrorsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> getErrors() {
        return getErrorsMap();
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> getErrorsMap() {
        return internalGetErrors().getImmutableMap();
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrDefault(
          java.lang.String key,
          /* nullable */
com.daimler.mbcarkit.proto.Protos.SubscriptionError defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder> map = internalGetMutableErrors().ensureBuilderMap();
        return map.containsKey(key) ? errorsConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.SubscriptionError getErrorsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder> map = internalGetMutableErrors().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return errorsConverter.build(map.get(key));
      }
      public Builder clearErrors() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableErrors().clear();
        return this;
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      public Builder removeErrors(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableErrors().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError>
          getMutableErrors() {
        bitField0_ |= 0x00000002;
        return internalGetMutableErrors().ensureMessageMap();
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      public Builder putErrors(
          java.lang.String key,
          com.daimler.mbcarkit.proto.Protos.SubscriptionError value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableErrors().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      public Builder putAllErrors(
          java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> values) {
        for (java.util.Map.Entry<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionError> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableErrors().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>map&lt;string, .proto.SubscriptionError&gt; errors = 2;</code>
       */
      public com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder putErrorsBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder> builderMap = internalGetMutableErrors().ensureBuilderMap();
        com.daimler.mbcarkit.proto.Protos.SubscriptionErrorOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = com.daimler.mbcarkit.proto.Protos.SubscriptionError.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof com.daimler.mbcarkit.proto.Protos.SubscriptionError) {
          entry = ((com.daimler.mbcarkit.proto.Protos.SubscriptionError) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (com.daimler.mbcarkit.proto.Protos.SubscriptionError.Builder) entry;
      }

      // @@protoc_insertion_point(builder_scope:proto.UnsubscribeFromAppTwinResponse)
    }

    // @@protoc_insertion_point(class_scope:proto.UnsubscribeFromAppTwinResponse)
    private static final com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse();
    }

    public static com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<UnsubscribeFromAppTwinResponse>
        PARSER = new com.google.protobuf.AbstractParser<UnsubscribeFromAppTwinResponse>() {
      @java.lang.Override
      public UnsubscribeFromAppTwinResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.UnsubscribeFromAppTwinResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HeartbeatOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.Heartbeat)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code proto.Heartbeat}
   */
  public static final class Heartbeat extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.Heartbeat)
      HeartbeatOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "Heartbeat");
    }
    // Use Heartbeat.newBuilder() to construct.
    private Heartbeat(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Heartbeat() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_Heartbeat_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_Heartbeat_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.Heartbeat.class, com.daimler.mbcarkit.proto.Protos.Heartbeat.Builder.class);
    }

    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 {
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.Heartbeat)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.Heartbeat other = (com.daimler.mbcarkit.proto.Protos.Heartbeat) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.Heartbeat parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.Heartbeat parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.Heartbeat parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.Heartbeat parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.Heartbeat parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.Heartbeat parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.Heartbeat parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.Heartbeat parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.Heartbeat parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.Heartbeat parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.Heartbeat parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.Heartbeat parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.Heartbeat 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code proto.Heartbeat}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.Heartbeat)
        com.daimler.mbcarkit.proto.Protos.HeartbeatOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_Heartbeat_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_Heartbeat_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.Heartbeat.class, com.daimler.mbcarkit.proto.Protos.Heartbeat.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.Heartbeat.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_Heartbeat_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.Heartbeat getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.Heartbeat.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.Heartbeat build() {
        com.daimler.mbcarkit.proto.Protos.Heartbeat result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.Heartbeat buildPartial() {
        com.daimler.mbcarkit.proto.Protos.Heartbeat result = new com.daimler.mbcarkit.proto.Protos.Heartbeat(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.Heartbeat) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.Heartbeat)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.Heartbeat other) {
        if (other == com.daimler.mbcarkit.proto.Protos.Heartbeat.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      // @@protoc_insertion_point(builder_scope:proto.Heartbeat)
    }

    // @@protoc_insertion_point(class_scope:proto.Heartbeat)
    private static final com.daimler.mbcarkit.proto.Protos.Heartbeat DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.Heartbeat();
    }

    public static com.daimler.mbcarkit.proto.Protos.Heartbeat getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Heartbeat>
        PARSER = new com.google.protobuf.AbstractParser<Heartbeat>() {
      @java.lang.Override
      public Heartbeat parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.Heartbeat getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AssignedVehiclesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.AssignedVehicles)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string vins = 1;</code>
     * @return A list containing the vins.
     */
    java.util.List<java.lang.String>
        getVinsList();
    /**
     * <code>repeated string vins = 1;</code>
     * @return The count of vins.
     */
    int getVinsCount();
    /**
     * <code>repeated string vins = 1;</code>
     * @param index The index of the element to return.
     * @return The vins at the given index.
     */
    java.lang.String getVins(int index);
    /**
     * <code>repeated string vins = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the vins at the given index.
     */
    com.google.protobuf.ByteString
        getVinsBytes(int index);
  }
  /**
   * <pre>
   * This message is used to tell the App which vehicles are assigned to the current user.
   * The message is sent when the AppTwin is fully initialized (i.e. when it received the first vcb-response)
   *
   * The list of VINs is needed when a user gets unassigned from a vehicle while not connected to an AppTwin
   * In this case the vehicle would still show in the app the next time the user starts it (see https://appsfactory.atlassian.net/browse/DAIM-3831)
   * To prevent this, we tell the App which VINs are assigned via this message
   * </pre>
   *
   * Protobuf type {@code proto.AssignedVehicles}
   */
  public static final class AssignedVehicles extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.AssignedVehicles)
      AssignedVehiclesOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "AssignedVehicles");
    }
    // Use AssignedVehicles.newBuilder() to construct.
    private AssignedVehicles(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AssignedVehicles() {
      vins_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_AssignedVehicles_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_AssignedVehicles_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.AssignedVehicles.class, com.daimler.mbcarkit.proto.Protos.AssignedVehicles.Builder.class);
    }

    public static final int VINS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList vins_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <code>repeated string vins = 1;</code>
     * @return A list containing the vins.
     */
    public com.google.protobuf.ProtocolStringList
        getVinsList() {
      return vins_;
    }
    /**
     * <code>repeated string vins = 1;</code>
     * @return The count of vins.
     */
    public int getVinsCount() {
      return vins_.size();
    }
    /**
     * <code>repeated string vins = 1;</code>
     * @param index The index of the element to return.
     * @return The vins at the given index.
     */
    public java.lang.String getVins(int index) {
      return vins_.get(index);
    }
    /**
     * <code>repeated string vins = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the vins at the given index.
     */
    public com.google.protobuf.ByteString
        getVinsBytes(int index) {
      return vins_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < vins_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, vins_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < vins_.size(); i++) {
          dataSize += computeStringSizeNoTag(vins_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getVinsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.AssignedVehicles)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.AssignedVehicles other = (com.daimler.mbcarkit.proto.Protos.AssignedVehicles) obj;

      if (!getVinsList()
          .equals(other.getVinsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getVinsCount() > 0) {
        hash = (37 * hash) + VINS_FIELD_NUMBER;
        hash = (53 * hash) + getVinsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.AssignedVehicles parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.AssignedVehicles parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.AssignedVehicles parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.AssignedVehicles parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.AssignedVehicles parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.AssignedVehicles parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.AssignedVehicles parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.AssignedVehicles parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.AssignedVehicles parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.AssignedVehicles parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.AssignedVehicles parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.AssignedVehicles parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.AssignedVehicles 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * This message is used to tell the App which vehicles are assigned to the current user.
     * The message is sent when the AppTwin is fully initialized (i.e. when it received the first vcb-response)
     *
     * The list of VINs is needed when a user gets unassigned from a vehicle while not connected to an AppTwin
     * In this case the vehicle would still show in the app the next time the user starts it (see https://appsfactory.atlassian.net/browse/DAIM-3831)
     * To prevent this, we tell the App which VINs are assigned via this message
     * </pre>
     *
     * Protobuf type {@code proto.AssignedVehicles}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.AssignedVehicles)
        com.daimler.mbcarkit.proto.Protos.AssignedVehiclesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_AssignedVehicles_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_AssignedVehicles_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.AssignedVehicles.class, com.daimler.mbcarkit.proto.Protos.AssignedVehicles.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.AssignedVehicles.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        vins_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_AssignedVehicles_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.AssignedVehicles getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.AssignedVehicles.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.AssignedVehicles build() {
        com.daimler.mbcarkit.proto.Protos.AssignedVehicles result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.AssignedVehicles buildPartial() {
        com.daimler.mbcarkit.proto.Protos.AssignedVehicles result = new com.daimler.mbcarkit.proto.Protos.AssignedVehicles(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Protos.AssignedVehicles result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          vins_.makeImmutable();
          result.vins_ = vins_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.AssignedVehicles) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.AssignedVehicles)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.AssignedVehicles other) {
        if (other == com.daimler.mbcarkit.proto.Protos.AssignedVehicles.getDefaultInstance()) return this;
        if (!other.vins_.isEmpty()) {
          if (vins_.isEmpty()) {
            vins_ = other.vins_;
            bitField0_ |= 0x00000001;
          } else {
            ensureVinsIsMutable();
            vins_.addAll(other.vins_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        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();
                ensureVinsIsMutable();
                vins_.add(s);
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringArrayList vins_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureVinsIsMutable() {
        if (!vins_.isModifiable()) {
          vins_ = new com.google.protobuf.LazyStringArrayList(vins_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <code>repeated string vins = 1;</code>
       * @return A list containing the vins.
       */
      public com.google.protobuf.ProtocolStringList
          getVinsList() {
        vins_.makeImmutable();
        return vins_;
      }
      /**
       * <code>repeated string vins = 1;</code>
       * @return The count of vins.
       */
      public int getVinsCount() {
        return vins_.size();
      }
      /**
       * <code>repeated string vins = 1;</code>
       * @param index The index of the element to return.
       * @return The vins at the given index.
       */
      public java.lang.String getVins(int index) {
        return vins_.get(index);
      }
      /**
       * <code>repeated string vins = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the vins at the given index.
       */
      public com.google.protobuf.ByteString
          getVinsBytes(int index) {
        return vins_.getByteString(index);
      }
      /**
       * <code>repeated string vins = 1;</code>
       * @param index The index to set the value at.
       * @param value The vins to set.
       * @return This builder for chaining.
       */
      public Builder setVins(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureVinsIsMutable();
        vins_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string vins = 1;</code>
       * @param value The vins to add.
       * @return This builder for chaining.
       */
      public Builder addVins(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureVinsIsMutable();
        vins_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string vins = 1;</code>
       * @param values The vins to add.
       * @return This builder for chaining.
       */
      public Builder addAllVins(
          java.lang.Iterable<java.lang.String> values) {
        ensureVinsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, vins_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string vins = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVins() {
        vins_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string vins = 1;</code>
       * @param value The bytes of the vins to add.
       * @return This builder for chaining.
       */
      public Builder addVinsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureVinsIsMutable();
        vins_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:proto.AssignedVehicles)
    }

    // @@protoc_insertion_point(class_scope:proto.AssignedVehicles)
    private static final com.daimler.mbcarkit.proto.Protos.AssignedVehicles DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.AssignedVehicles();
    }

    public static com.daimler.mbcarkit.proto.Protos.AssignedVehicles getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AssignedVehicles>
        PARSER = new com.google.protobuf.AbstractParser<AssignedVehicles>() {
      @java.lang.Override
      public AssignedVehicles parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.AssignedVehicles getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AcknowledgeAssignedVehiclesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.AcknowledgeAssignedVehicles)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code proto.AcknowledgeAssignedVehicles}
   */
  public static final class AcknowledgeAssignedVehicles extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.AcknowledgeAssignedVehicles)
      AcknowledgeAssignedVehiclesOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 6,
        /* suffix= */ "",
        "AcknowledgeAssignedVehicles");
    }
    // Use AcknowledgeAssignedVehicles.newBuilder() to construct.
    private AcknowledgeAssignedVehicles(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AcknowledgeAssignedVehicles() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_AcknowledgeAssignedVehicles_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Protos.internal_static_proto_AcknowledgeAssignedVehicles_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles.class, com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles.Builder.class);
    }

    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 {
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles other = (com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code proto.AcknowledgeAssignedVehicles}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.AcknowledgeAssignedVehicles)
        com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehiclesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_AcknowledgeAssignedVehicles_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_AcknowledgeAssignedVehicles_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles.class, com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.daimler.mbcarkit.proto.Protos.internal_static_proto_AcknowledgeAssignedVehicles_descriptor;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles getDefaultInstanceForType() {
        return com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles.getDefaultInstance();
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles build() {
        com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles buildPartial() {
        com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles result = new com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles) {
          return mergeFrom((com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles other) {
        if (other == com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      // @@protoc_insertion_point(builder_scope:proto.AcknowledgeAssignedVehicles)
    }

    // @@protoc_insertion_point(class_scope:proto.AcknowledgeAssignedVehicles)
    private static final com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles();
    }

    public static com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AcknowledgeAssignedVehicles>
        PARSER = new com.google.protobuf.AbstractParser<AcknowledgeAssignedVehicles>() {
      @java.lang.Override
      public AcknowledgeAssignedVehicles parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.daimler.mbcarkit.proto.Protos.AcknowledgeAssignedVehicles getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_SubscribeRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_SubscribeRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_SubscribeResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_SubscribeResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_SubscribeResponse_ErrorsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_SubscribeResponse_ErrorsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_UnsubscribeRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_UnsubscribeRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_UnsubscribeResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_UnsubscribeResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_UnsubscribeResponse_ErrorsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_UnsubscribeResponse_ErrorsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_SubscriptionError_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_SubscriptionError_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_SubscribeToAppTwinRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_SubscribeToAppTwinRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_ResubscribeToAppTwinRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_ResubscribeToAppTwinRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_ResubscribeToAppTwinResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_ResubscribeToAppTwinResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_SubscribeToAppTwinResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_SubscribeToAppTwinResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_UnsubscribeFromAppTwinRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_UnsubscribeFromAppTwinRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_UnsubscribeFromAppTwinResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_UnsubscribeFromAppTwinResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_UnsubscribeFromAppTwinResponse_ErrorsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_UnsubscribeFromAppTwinResponse_ErrorsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_Heartbeat_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_Heartbeat_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_AssignedVehicles_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_AssignedVehicles_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_AcknowledgeAssignedVehicles_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_AcknowledgeAssignedVehicles_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\014protos.proto\022\005proto\"3\n\020SubscribeReques" +
      "t\022\016\n\006topics\030\001 \003(\t\022\017\n\007replace\030\002 \001(\010\"\276\001\n\021S" +
      "ubscribeResponse\022\017\n\007success\030\001 \001(\010\0224\n\006err" +
      "ors\030\002 \003(\0132$.proto.SubscribeResponse.Erro" +
      "rsEntry\022\031\n\021subscribed_topics\030\003 \003(\t\032G\n\013Er" +
      "rorsEntry\022\013\n\003key\030\001 \001(\t\022\'\n\005value\030\002 \001(\0132\030." +
      "proto.SubscriptionError:\0028\001\"A\n\022Unsubscri" +
      "beRequest\022\016\n\006topics\030\001 \003(\t\022\033\n\023anticipate_" +
      "response\030\002 \001(\010\"\304\001\n\023UnsubscribeResponse\022\017" +
      "\n\007success\030\001 \001(\010\0226\n\006errors\030\002 \003(\0132&.proto." +
      "UnsubscribeResponse.ErrorsEntry\022\033\n\023unsub" +
      "scribed_topics\030\003 \003(\t\032G\n\013ErrorsEntry\022\013\n\003k" +
      "ey\030\001 \001(\t\022\'\n\005value\030\002 \001(\0132\030.proto.Subscrip" +
      "tionError:\0028\001\"P\n\021SubscriptionError\022*\n\004co" +
      "de\030\001 \003(\0162\034.proto.SubscriptionErrorType\022\017" +
      "\n\007message\030\002 \003(\t\"\201\002\n\031SubscribeToAppTwinRe" +
      "quest\022\022\n\nsession_id\030\001 \001(\t\022\017\n\007ciam_id\030\002 \001" +
      "(\t\022\025\n\rdevice_locale\030\003 \001(\t\022\016\n\006app_id\030\004 \001(" +
      "\t\022\023\n\013app_version\030\005 \001(\t\022+\n\007os_name\030\006 \001(\0162" +
      "\032.proto.OperatingSystemName\022\022\n\nos_versio" +
      "n\030\007 \001(\t\022\024\n\014device_model\030\010 \001(\t\022\027\n\017network" +
      "_carrier\030\t \001(\t\022\023\n\013sdk_version\030\n \001(\t\"B\n\033R" +
      "esubscribeToAppTwinRequest\022\022\n\nsession_id" +
      "\030\001 \001(\t\022\017\n\007ciam_id\030\002 \001(\t\"\314\001\n\034ResubscribeT" +
      "oAppTwinResponse\022E\n\006result\030\001 \001(\01625.proto" +
      ".ResubscribeToAppTwinResponse.Resubscrib" +
      "eResult\"e\n\021ResubscribeResult\022\021\n\rUNKNOWN_" +
      "ERROR\020\000\022\013\n\007SUCCESS\020\001\022\025\n\021INVALID_JWT_ERRO" +
      "R\020\002\022\031\n\025TARGET_DOES_NOT_EXIST\020\003\"_\n\032Subscr" +
      "ibeToAppTwinResponse\022\017\n\007success\030\001 \001(\010\0220\n" +
      "\nerror_code\030\002 \001(\0162\034.proto.SubscriptionEr" +
      "rorType\"3\n\035UnsubscribeFromAppTwinRequest" +
      "\022\022\n\nsession_id\030\001 \001(\t\"\275\001\n\036UnsubscribeFrom" +
      "AppTwinResponse\022\017\n\007success\030\001 \001(\010\022A\n\006erro" +
      "rs\030\002 \003(\01321.proto.UnsubscribeFromAppTwinR" +
      "esponse.ErrorsEntry\032G\n\013ErrorsEntry\022\013\n\003ke" +
      "y\030\001 \001(\t\022\'\n\005value\030\002 \001(\0132\030.proto.Subscript" +
      "ionError:\0028\001\"\013\n\tHeartbeat\" \n\020AssignedVeh" +
      "icles\022\014\n\004vins\030\001 \003(\t\"\035\n\033AcknowledgeAssign" +
      "edVehicles*5\n\025SubscriptionErrorType\022\013\n\007U" +
      "NKNOWN\020\000\022\017\n\013INVALID_JWT\020\001*q\n\023OperatingSy" +
      "stemName\022\034\n\030UNKNOWN_OPERATING_SYSTEM\020\000\022\007" +
      "\n\003IOS\020\001\022\013\n\007ANDROID\020\002\022\014\n\010INT_TEST\020\003\022\017\n\013MA" +
      "NUAL_TEST\020\004\022\007\n\003WEB\020\005B\034\n\032com.daimler.mbca" +
      "rkit.protob\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_proto_SubscribeRequest_descriptor =
      getDescriptor().getMessageType(0);
    internal_static_proto_SubscribeRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_SubscribeRequest_descriptor,
        new java.lang.String[] { "Topics", "Replace", });
    internal_static_proto_SubscribeResponse_descriptor =
      getDescriptor().getMessageType(1);
    internal_static_proto_SubscribeResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_SubscribeResponse_descriptor,
        new java.lang.String[] { "Success", "Errors", "SubscribedTopics", });
    internal_static_proto_SubscribeResponse_ErrorsEntry_descriptor =
      internal_static_proto_SubscribeResponse_descriptor.getNestedType(0);
    internal_static_proto_SubscribeResponse_ErrorsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_SubscribeResponse_ErrorsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_proto_UnsubscribeRequest_descriptor =
      getDescriptor().getMessageType(2);
    internal_static_proto_UnsubscribeRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_UnsubscribeRequest_descriptor,
        new java.lang.String[] { "Topics", "AnticipateResponse", });
    internal_static_proto_UnsubscribeResponse_descriptor =
      getDescriptor().getMessageType(3);
    internal_static_proto_UnsubscribeResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_UnsubscribeResponse_descriptor,
        new java.lang.String[] { "Success", "Errors", "UnsubscribedTopics", });
    internal_static_proto_UnsubscribeResponse_ErrorsEntry_descriptor =
      internal_static_proto_UnsubscribeResponse_descriptor.getNestedType(0);
    internal_static_proto_UnsubscribeResponse_ErrorsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_UnsubscribeResponse_ErrorsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_proto_SubscriptionError_descriptor =
      getDescriptor().getMessageType(4);
    internal_static_proto_SubscriptionError_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_SubscriptionError_descriptor,
        new java.lang.String[] { "Code", "Message", });
    internal_static_proto_SubscribeToAppTwinRequest_descriptor =
      getDescriptor().getMessageType(5);
    internal_static_proto_SubscribeToAppTwinRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_SubscribeToAppTwinRequest_descriptor,
        new java.lang.String[] { "SessionId", "CiamId", "DeviceLocale", "AppId", "AppVersion", "OsName", "OsVersion", "DeviceModel", "NetworkCarrier", "SdkVersion", });
    internal_static_proto_ResubscribeToAppTwinRequest_descriptor =
      getDescriptor().getMessageType(6);
    internal_static_proto_ResubscribeToAppTwinRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_ResubscribeToAppTwinRequest_descriptor,
        new java.lang.String[] { "SessionId", "CiamId", });
    internal_static_proto_ResubscribeToAppTwinResponse_descriptor =
      getDescriptor().getMessageType(7);
    internal_static_proto_ResubscribeToAppTwinResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_ResubscribeToAppTwinResponse_descriptor,
        new java.lang.String[] { "Result", });
    internal_static_proto_SubscribeToAppTwinResponse_descriptor =
      getDescriptor().getMessageType(8);
    internal_static_proto_SubscribeToAppTwinResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_SubscribeToAppTwinResponse_descriptor,
        new java.lang.String[] { "Success", "ErrorCode", });
    internal_static_proto_UnsubscribeFromAppTwinRequest_descriptor =
      getDescriptor().getMessageType(9);
    internal_static_proto_UnsubscribeFromAppTwinRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_UnsubscribeFromAppTwinRequest_descriptor,
        new java.lang.String[] { "SessionId", });
    internal_static_proto_UnsubscribeFromAppTwinResponse_descriptor =
      getDescriptor().getMessageType(10);
    internal_static_proto_UnsubscribeFromAppTwinResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_UnsubscribeFromAppTwinResponse_descriptor,
        new java.lang.String[] { "Success", "Errors", });
    internal_static_proto_UnsubscribeFromAppTwinResponse_ErrorsEntry_descriptor =
      internal_static_proto_UnsubscribeFromAppTwinResponse_descriptor.getNestedType(0);
    internal_static_proto_UnsubscribeFromAppTwinResponse_ErrorsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_UnsubscribeFromAppTwinResponse_ErrorsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_proto_Heartbeat_descriptor =
      getDescriptor().getMessageType(11);
    internal_static_proto_Heartbeat_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_Heartbeat_descriptor,
        new java.lang.String[] { });
    internal_static_proto_AssignedVehicles_descriptor =
      getDescriptor().getMessageType(12);
    internal_static_proto_AssignedVehicles_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_AssignedVehicles_descriptor,
        new java.lang.String[] { "Vins", });
    internal_static_proto_AcknowledgeAssignedVehicles_descriptor =
      getDescriptor().getMessageType(13);
    internal_static_proto_AcknowledgeAssignedVehicles_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_AcknowledgeAssignedVehicles_descriptor,
        new java.lang.String[] { });
    descriptor.resolveAllFeaturesImmutable();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
