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

package com.daimler.mbcarkit.proto;

@com.google.protobuf.Generated
public final class Vehicleapi extends com.google.protobuf.GeneratedFile {
  private Vehicleapi() {}
  static {
    com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
      com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
      /* major= */ 4,
      /* minor= */ 33,
      /* patch= */ 6,
      /* suffix= */ "",
      "Vehicleapi");
  }
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface AcknowledgeAppTwinCommandStatusUpdatesByVINOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.AcknowledgeAppTwinCommandStatusUpdatesByVIN)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 sequence_number = 1;</code>
     * @return The sequenceNumber.
     */
    int getSequenceNumber();
  }
  /**
   * <pre>
   * Sending direction: App -&gt; BFF -&gt; AppTwin
   * </pre>
   *
   * Protobuf type {@code proto.AcknowledgeAppTwinCommandStatusUpdatesByVIN}
   */
  public static final class AcknowledgeAppTwinCommandStatusUpdatesByVIN extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.AcknowledgeAppTwinCommandStatusUpdatesByVIN)
      AcknowledgeAppTwinCommandStatusUpdatesByVINOrBuilder {
  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= */ "",
        "AcknowledgeAppTwinCommandStatusUpdatesByVIN");
    }
    // Use AcknowledgeAppTwinCommandStatusUpdatesByVIN.newBuilder() to construct.
    private AcknowledgeAppTwinCommandStatusUpdatesByVIN(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AcknowledgeAppTwinCommandStatusUpdatesByVIN() {
    }

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

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

    public static final int SEQUENCE_NUMBER_FIELD_NUMBER = 1;
    private int sequenceNumber_ = 0;
    /**
     * <code>int32 sequence_number = 1;</code>
     * @return The sequenceNumber.
     */
    @java.lang.Override
    public int getSequenceNumber() {
      return sequenceNumber_;
    }

    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 (sequenceNumber_ != 0) {
        output.writeInt32(1, sequenceNumber_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (sequenceNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, sequenceNumber_);
      }
      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.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN other = (com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN) obj;

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN 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.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN 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.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN 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.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN 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.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN 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.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN 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>
     * Sending direction: App -&gt; BFF -&gt; AppTwin
     * </pre>
     *
     * Protobuf type {@code proto.AcknowledgeAppTwinCommandStatusUpdatesByVIN}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.AcknowledgeAppTwinCommandStatusUpdatesByVIN)
        com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVINOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_AcknowledgeAppTwinCommandStatusUpdatesByVIN_descriptor;
      }

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

      // Construct using com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.sequenceNumber_ = sequenceNumber_;
        }
      }

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

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN other) {
        if (other == com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN.getDefaultInstance()) return this;
        if (other.getSequenceNumber() != 0) {
          setSequenceNumber(other.getSequenceNumber());
        }
        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: {
                sequenceNumber_ = input.readInt32();
                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 sequenceNumber_ ;
      /**
       * <code>int32 sequence_number = 1;</code>
       * @return The sequenceNumber.
       */
      @java.lang.Override
      public int getSequenceNumber() {
        return sequenceNumber_;
      }
      /**
       * <code>int32 sequence_number = 1;</code>
       * @param value The sequenceNumber to set.
       * @return This builder for chaining.
       */
      public Builder setSequenceNumber(int value) {

        sequenceNumber_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>int32 sequence_number = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSequenceNumber() {
        bitField0_ = (bitField0_ & ~0x00000001);
        sequenceNumber_ = 0;
        onChanged();
        return this;
      }

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

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.AcknowledgeAppTwinCommandStatusUpdatesByVIN getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AcknowledgeAppTwinCommandStatusUpdatesByVIN>
        PARSER = new com.google.protobuf.AbstractParser<AcknowledgeAppTwinCommandStatusUpdatesByVIN>() {
      @java.lang.Override
      public AcknowledgeAppTwinCommandStatusUpdatesByVIN 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<AcknowledgeAppTwinCommandStatusUpdatesByVIN> parser() {
      return PARSER;
    }

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

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

  }

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

    /**
     * <code>int32 sequence_number = 1;</code>
     * @return The sequenceNumber.
     */
    int getSequenceNumber();

    /**
     * <pre>
     * VIN -&gt; Update
     * </pre>
     *
     * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
     */
    int getUpdatesByVinCount();
    /**
     * <pre>
     * VIN -&gt; Update
     * </pre>
     *
     * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
     */
    boolean containsUpdatesByVin(
        java.lang.String key);
    /**
     * Use {@link #getUpdatesByVinMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID>
    getUpdatesByVin();
    /**
     * <pre>
     * VIN -&gt; Update
     * </pre>
     *
     * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
     */
    java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID>
    getUpdatesByVinMap();
    /**
     * <pre>
     * VIN -&gt; Update
     * </pre>
     *
     * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
     */
    /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID getUpdatesByVinOrDefault(
        java.lang.String key,
        /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID defaultValue);
    /**
     * <pre>
     * VIN -&gt; Update
     * </pre>
     *
     * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID getUpdatesByVinOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * Sending direction: App &lt;- BFF &lt;- AppTwin
   * </pre>
   *
   * Protobuf type {@code proto.AppTwinCommandStatusUpdatesByVIN}
   */
  public static final class AppTwinCommandStatusUpdatesByVIN extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.AppTwinCommandStatusUpdatesByVIN)
      AppTwinCommandStatusUpdatesByVINOrBuilder {
  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= */ "",
        "AppTwinCommandStatusUpdatesByVIN");
    }
    // Use AppTwinCommandStatusUpdatesByVIN.newBuilder() to construct.
    private AppTwinCommandStatusUpdatesByVIN(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AppTwinCommandStatusUpdatesByVIN() {
    }

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

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

    public static final int SEQUENCE_NUMBER_FIELD_NUMBER = 1;
    private int sequenceNumber_ = 0;
    /**
     * <code>int32 sequence_number = 1;</code>
     * @return The sequenceNumber.
     */
    @java.lang.Override
    public int getSequenceNumber() {
      return sequenceNumber_;
    }

    public static final int UPDATES_BY_VIN_FIELD_NUMBER = 2;
    private static final class UpdatesByVinDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID>newDefaultInstance(
                  com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_AppTwinCommandStatusUpdatesByVIN_UpdatesByVinEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID> updatesByVin_;
    private com.google.protobuf.MapField<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID>
    internalGetUpdatesByVin() {
      if (updatesByVin_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            UpdatesByVinDefaultEntryHolder.defaultEntry);
      }
      return updatesByVin_;
    }
    public int getUpdatesByVinCount() {
      return internalGetUpdatesByVin().getMap().size();
    }
    /**
     * <pre>
     * VIN -&gt; Update
     * </pre>
     *
     * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
     */
    @java.lang.Override
    public boolean containsUpdatesByVin(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetUpdatesByVin().getMap().containsKey(key);
    }
    /**
     * Use {@link #getUpdatesByVinMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID> getUpdatesByVin() {
      return getUpdatesByVinMap();
    }
    /**
     * <pre>
     * VIN -&gt; Update
     * </pre>
     *
     * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID> getUpdatesByVinMap() {
      return internalGetUpdatesByVin().getMap();
    }
    /**
     * <pre>
     * VIN -&gt; Update
     * </pre>
     *
     * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID getUpdatesByVinOrDefault(
        java.lang.String key,
        /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID> map =
          internalGetUpdatesByVin().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * VIN -&gt; Update
     * </pre>
     *
     * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID getUpdatesByVinOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID> map =
          internalGetUpdatesByVin().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 (sequenceNumber_ != 0) {
        output.writeInt32(1, sequenceNumber_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetUpdatesByVin(),
          UpdatesByVinDefaultEntryHolder.defaultEntry,
          2);
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (sequenceNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, sequenceNumber_);
      }
      for (java.util.Map.Entry<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID> entry
           : internalGetUpdatesByVin().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID>
        updatesByVin__ = UpdatesByVinDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, updatesByVin__);
      }
      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.Vehicleapi.AppTwinCommandStatusUpdatesByVIN)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN other = (com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN) obj;

      if (getSequenceNumber()
          != other.getSequenceNumber()) return false;
      if (!internalGetUpdatesByVin().equals(
          other.internalGetUpdatesByVin())) 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) + SEQUENCE_NUMBER_FIELD_NUMBER;
      hash = (53 * hash) + getSequenceNumber();
      if (!internalGetUpdatesByVin().getMap().isEmpty()) {
        hash = (37 * hash) + UPDATES_BY_VIN_FIELD_NUMBER;
        hash = (53 * hash) + internalGetUpdatesByVin().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN 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.Vehicleapi.AppTwinCommandStatusUpdatesByVIN parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN 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.Vehicleapi.AppTwinCommandStatusUpdatesByVIN parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN 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.Vehicleapi.AppTwinCommandStatusUpdatesByVIN parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN 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.Vehicleapi.AppTwinCommandStatusUpdatesByVIN parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN 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.Vehicleapi.AppTwinCommandStatusUpdatesByVIN 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>
     * Sending direction: App &lt;- BFF &lt;- AppTwin
     * </pre>
     *
     * Protobuf type {@code proto.AppTwinCommandStatusUpdatesByVIN}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.AppTwinCommandStatusUpdatesByVIN)
        com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVINOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_AppTwinCommandStatusUpdatesByVIN_descriptor;
      }

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

      // Construct using com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.sequenceNumber_ = sequenceNumber_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.updatesByVin_ = internalGetUpdatesByVin().build(UpdatesByVinDefaultEntryHolder.defaultEntry);
        }
      }

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

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN other) {
        if (other == com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN.getDefaultInstance()) return this;
        if (other.getSequenceNumber() != 0) {
          setSequenceNumber(other.getSequenceNumber());
        }
        internalGetMutableUpdatesByVin().mergeFrom(
            other.internalGetUpdatesByVin());
        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: {
                sequenceNumber_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID>
                updatesByVin__ = input.readMessage(
                    UpdatesByVinDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableUpdatesByVin().ensureBuilderMap().put(
                    updatesByVin__.getKey(), updatesByVin__.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 int sequenceNumber_ ;
      /**
       * <code>int32 sequence_number = 1;</code>
       * @return The sequenceNumber.
       */
      @java.lang.Override
      public int getSequenceNumber() {
        return sequenceNumber_;
      }
      /**
       * <code>int32 sequence_number = 1;</code>
       * @param value The sequenceNumber to set.
       * @return This builder for chaining.
       */
      public Builder setSequenceNumber(int value) {

        sequenceNumber_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>int32 sequence_number = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSequenceNumber() {
        bitField0_ = (bitField0_ & ~0x00000001);
        sequenceNumber_ = 0;
        onChanged();
        return this;
      }

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

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID> defaultEntry() {
          return UpdatesByVinDefaultEntryHolder.defaultEntry;
        }
      };
      private static final UpdatesByVinConverter updatesByVinConverter = new UpdatesByVinConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPIDOrBuilder, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID.Builder> updatesByVin_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPIDOrBuilder, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID.Builder>
          internalGetUpdatesByVin() {
        if (updatesByVin_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(updatesByVinConverter);
        }
        return updatesByVin_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPIDOrBuilder, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID.Builder>
          internalGetMutableUpdatesByVin() {
        if (updatesByVin_ == null) {
          updatesByVin_ = new com.google.protobuf.MapFieldBuilder<>(updatesByVinConverter);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return updatesByVin_;
      }
      public int getUpdatesByVinCount() {
        return internalGetUpdatesByVin().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * VIN -&gt; Update
       * </pre>
       *
       * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
       */
      @java.lang.Override
      public boolean containsUpdatesByVin(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetUpdatesByVin().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getUpdatesByVinMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID> getUpdatesByVin() {
        return getUpdatesByVinMap();
      }
      /**
       * <pre>
       * VIN -&gt; Update
       * </pre>
       *
       * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID> getUpdatesByVinMap() {
        return internalGetUpdatesByVin().getImmutableMap();
      }
      /**
       * <pre>
       * VIN -&gt; Update
       * </pre>
       *
       * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID getUpdatesByVinOrDefault(
          java.lang.String key,
          /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPIDOrBuilder> map = internalGetMutableUpdatesByVin().ensureBuilderMap();
        return map.containsKey(key) ? updatesByVinConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * VIN -&gt; Update
       * </pre>
       *
       * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID getUpdatesByVinOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPIDOrBuilder> map = internalGetMutableUpdatesByVin().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return updatesByVinConverter.build(map.get(key));
      }
      public Builder clearUpdatesByVin() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableUpdatesByVin().clear();
        return this;
      }
      /**
       * <pre>
       * VIN -&gt; Update
       * </pre>
       *
       * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
       */
      public Builder removeUpdatesByVin(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableUpdatesByVin().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID>
          getMutableUpdatesByVin() {
        bitField0_ |= 0x00000002;
        return internalGetMutableUpdatesByVin().ensureMessageMap();
      }
      /**
       * <pre>
       * VIN -&gt; Update
       * </pre>
       *
       * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
       */
      public Builder putUpdatesByVin(
          java.lang.String key,
          com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableUpdatesByVin().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * VIN -&gt; Update
       * </pre>
       *
       * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
       */
      public Builder putAllUpdatesByVin(
          java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID> values) {
        for (java.util.Map.Entry<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableUpdatesByVin().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * VIN -&gt; Update
       * </pre>
       *
       * <code>map&lt;string, .proto.AppTwinCommandStatusUpdatesByPID&gt; updates_by_vin = 2;</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID.Builder putUpdatesByVinBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPIDOrBuilder> builderMap = internalGetMutableUpdatesByVin().ensureBuilderMap();
        com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPIDOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID) {
          entry = ((com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID.Builder) entry;
      }

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

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByVIN getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AppTwinCommandStatusUpdatesByVIN>
        PARSER = new com.google.protobuf.AbstractParser<AppTwinCommandStatusUpdatesByVIN>() {
      @java.lang.Override
      public AppTwinCommandStatusUpdatesByVIN 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<AppTwinCommandStatusUpdatesByVIN> parser() {
      return PARSER;
    }

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

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

  }

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

    /**
     * <code>string vin = 1;</code>
     * @return The vin.
     */
    java.lang.String getVin();
    /**
     * <code>string vin = 1;</code>
     * @return The bytes for vin.
     */
    com.google.protobuf.ByteString
        getVinBytes();

    /**
     * <pre>
     * Process ID -&gt; Status
     * </pre>
     *
     * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
     */
    int getUpdatesByPidCount();
    /**
     * <pre>
     * Process ID -&gt; Status
     * </pre>
     *
     * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
     */
    boolean containsUpdatesByPid(
        long key);
    /**
     * Use {@link #getUpdatesByPidMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus>
    getUpdatesByPid();
    /**
     * <pre>
     * Process ID -&gt; Status
     * </pre>
     *
     * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
     */
    java.util.Map<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus>
    getUpdatesByPidMap();
    /**
     * <pre>
     * Process ID -&gt; Status
     * </pre>
     *
     * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
     */
    /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus getUpdatesByPidOrDefault(
        long key,
        /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus defaultValue);
    /**
     * <pre>
     * Process ID -&gt; Status
     * </pre>
     *
     * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus getUpdatesByPidOrThrow(
        long key);
  }
  /**
   * <pre>
   * Sending direction: App &lt;- BFF &lt;- AppTwin as part of an AppTwinCommandStatusUpdatesByVIN
   * </pre>
   *
   * Protobuf type {@code proto.AppTwinCommandStatusUpdatesByPID}
   */
  public static final class AppTwinCommandStatusUpdatesByPID extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.AppTwinCommandStatusUpdatesByPID)
      AppTwinCommandStatusUpdatesByPIDOrBuilder {
  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= */ "",
        "AppTwinCommandStatusUpdatesByPID");
    }
    // Use AppTwinCommandStatusUpdatesByPID.newBuilder() to construct.
    private AppTwinCommandStatusUpdatesByPID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AppTwinCommandStatusUpdatesByPID() {
      vin_ = "";
    }

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

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

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

    public static final int UPDATES_BY_PID_FIELD_NUMBER = 2;
    private static final class UpdatesByPidDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus>newDefaultInstance(
                  com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_AppTwinCommandStatusUpdatesByPID_UpdatesByPidEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.INT64,
                  0L,
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus> updatesByPid_;
    private com.google.protobuf.MapField<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus>
    internalGetUpdatesByPid() {
      if (updatesByPid_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            UpdatesByPidDefaultEntryHolder.defaultEntry);
      }
      return updatesByPid_;
    }
    public int getUpdatesByPidCount() {
      return internalGetUpdatesByPid().getMap().size();
    }
    /**
     * <pre>
     * Process ID -&gt; Status
     * </pre>
     *
     * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
     */
    @java.lang.Override
    public boolean containsUpdatesByPid(
        long key) {

      return internalGetUpdatesByPid().getMap().containsKey(key);
    }
    /**
     * Use {@link #getUpdatesByPidMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus> getUpdatesByPid() {
      return getUpdatesByPidMap();
    }
    /**
     * <pre>
     * Process ID -&gt; Status
     * </pre>
     *
     * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus> getUpdatesByPidMap() {
      return internalGetUpdatesByPid().getMap();
    }
    /**
     * <pre>
     * Process ID -&gt; Status
     * </pre>
     *
     * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus getUpdatesByPidOrDefault(
        long key,
        /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus defaultValue) {

      java.util.Map<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus> map =
          internalGetUpdatesByPid().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Process ID -&gt; Status
     * </pre>
     *
     * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus getUpdatesByPidOrThrow(
        long key) {

      java.util.Map<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus> map =
          internalGetUpdatesByPid().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 (!com.google.protobuf.GeneratedMessage.isStringEmpty(vin_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, vin_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeLongMapTo(
          output,
          internalGetUpdatesByPid(),
          UpdatesByPidDefaultEntryHolder.defaultEntry,
          2);
      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(vin_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, vin_);
      }
      for (java.util.Map.Entry<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus> entry
           : internalGetUpdatesByPid().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus>
        updatesByPid__ = UpdatesByPidDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, updatesByPid__);
      }
      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.Vehicleapi.AppTwinCommandStatusUpdatesByPID)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID other = (com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID) obj;

      if (!getVin()
          .equals(other.getVin())) return false;
      if (!internalGetUpdatesByPid().equals(
          other.internalGetUpdatesByPid())) 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) + VIN_FIELD_NUMBER;
      hash = (53 * hash) + getVin().hashCode();
      if (!internalGetUpdatesByPid().getMap().isEmpty()) {
        hash = (37 * hash) + UPDATES_BY_PID_FIELD_NUMBER;
        hash = (53 * hash) + internalGetUpdatesByPid().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID 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.Vehicleapi.AppTwinCommandStatusUpdatesByPID parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID 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.Vehicleapi.AppTwinCommandStatusUpdatesByPID parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID 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.Vehicleapi.AppTwinCommandStatusUpdatesByPID parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID 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.Vehicleapi.AppTwinCommandStatusUpdatesByPID parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID 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.Vehicleapi.AppTwinCommandStatusUpdatesByPID 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>
     * Sending direction: App &lt;- BFF &lt;- AppTwin as part of an AppTwinCommandStatusUpdatesByVIN
     * </pre>
     *
     * Protobuf type {@code proto.AppTwinCommandStatusUpdatesByPID}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.AppTwinCommandStatusUpdatesByPID)
        com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPIDOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_AppTwinCommandStatusUpdatesByPID_descriptor;
      }

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

      // Construct using com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.vin_ = vin_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.updatesByPid_ = internalGetUpdatesByPid().build(UpdatesByPidDefaultEntryHolder.defaultEntry);
        }
      }

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

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID other) {
        if (other == com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID.getDefaultInstance()) return this;
        if (!other.getVin().isEmpty()) {
          vin_ = other.vin_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        internalGetMutableUpdatesByPid().mergeFrom(
            other.internalGetUpdatesByPid());
        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 10: {
                vin_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.MapEntry<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus>
                updatesByPid__ = input.readMessage(
                    UpdatesByPidDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableUpdatesByPid().ensureBuilderMap().put(
                    updatesByPid__.getKey(), updatesByPid__.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 java.lang.Object vin_ = "";
      /**
       * <code>string vin = 1;</code>
       * @return The vin.
       */
      public java.lang.String getVin() {
        java.lang.Object ref = vin_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          vin_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string vin = 1;</code>
       * @return The bytes for vin.
       */
      public com.google.protobuf.ByteString
          getVinBytes() {
        java.lang.Object ref = vin_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          vin_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string vin = 1;</code>
       * @param value The vin to set.
       * @return This builder for chaining.
       */
      public Builder setVin(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        vin_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>string vin = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVin() {
        vin_ = getDefaultInstance().getVin();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>string vin = 1;</code>
       * @param value The bytes for vin to set.
       * @return This builder for chaining.
       */
      public Builder setVinBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        vin_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private static final class UpdatesByPidConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusOrBuilder, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus> {
        @java.lang.Override
        public com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus build(com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusOrBuilder val) {
          if (val instanceof com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus) { return (com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus) val; }
          return ((com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus> defaultEntry() {
          return UpdatesByPidDefaultEntryHolder.defaultEntry;
        }
      };
      private static final UpdatesByPidConverter updatesByPidConverter = new UpdatesByPidConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusOrBuilder, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus.Builder> updatesByPid_;
      private com.google.protobuf.MapFieldBuilder<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusOrBuilder, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus.Builder>
          internalGetUpdatesByPid() {
        if (updatesByPid_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(updatesByPidConverter);
        }
        return updatesByPid_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusOrBuilder, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus.Builder>
          internalGetMutableUpdatesByPid() {
        if (updatesByPid_ == null) {
          updatesByPid_ = new com.google.protobuf.MapFieldBuilder<>(updatesByPidConverter);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return updatesByPid_;
      }
      public int getUpdatesByPidCount() {
        return internalGetUpdatesByPid().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * Process ID -&gt; Status
       * </pre>
       *
       * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
       */
      @java.lang.Override
      public boolean containsUpdatesByPid(
          long key) {

        return internalGetUpdatesByPid().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getUpdatesByPidMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus> getUpdatesByPid() {
        return getUpdatesByPidMap();
      }
      /**
       * <pre>
       * Process ID -&gt; Status
       * </pre>
       *
       * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus> getUpdatesByPidMap() {
        return internalGetUpdatesByPid().getImmutableMap();
      }
      /**
       * <pre>
       * Process ID -&gt; Status
       * </pre>
       *
       * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus getUpdatesByPidOrDefault(
          long key,
          /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus defaultValue) {

        java.util.Map<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusOrBuilder> map = internalGetMutableUpdatesByPid().ensureBuilderMap();
        return map.containsKey(key) ? updatesByPidConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * Process ID -&gt; Status
       * </pre>
       *
       * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus getUpdatesByPidOrThrow(
          long key) {

        java.util.Map<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusOrBuilder> map = internalGetMutableUpdatesByPid().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return updatesByPidConverter.build(map.get(key));
      }
      public Builder clearUpdatesByPid() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableUpdatesByPid().clear();
        return this;
      }
      /**
       * <pre>
       * Process ID -&gt; Status
       * </pre>
       *
       * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
       */
      public Builder removeUpdatesByPid(
          long key) {

        internalGetMutableUpdatesByPid().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus>
          getMutableUpdatesByPid() {
        bitField0_ |= 0x00000002;
        return internalGetMutableUpdatesByPid().ensureMessageMap();
      }
      /**
       * <pre>
       * Process ID -&gt; Status
       * </pre>
       *
       * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
       */
      public Builder putUpdatesByPid(
          long key,
          com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus value) {

        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableUpdatesByPid().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Process ID -&gt; Status
       * </pre>
       *
       * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
       */
      public Builder putAllUpdatesByPid(
          java.util.Map<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus> values) {
        for (java.util.Map.Entry<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableUpdatesByPid().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Process ID -&gt; Status
       * </pre>
       *
       * <code>map&lt;int64, .proto.AppTwinCommandStatus&gt; updates_by_pid = 2;</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus.Builder putUpdatesByPidBuilderIfAbsent(
          long key) {
        java.util.Map<java.lang.Long, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusOrBuilder> builderMap = internalGetMutableUpdatesByPid().ensureBuilderMap();
        com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus) {
          entry = ((com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus.Builder) entry;
      }

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

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusUpdatesByPID getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AppTwinCommandStatusUpdatesByPID>
        PARSER = new com.google.protobuf.AbstractParser<AppTwinCommandStatusUpdatesByPID>() {
      @java.lang.Override
      public AppTwinCommandStatusUpdatesByPID 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<AppTwinCommandStatusUpdatesByPID> parser() {
      return PARSER;
    }

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

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

  }

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

    /**
     * <pre>
     * The remote vehicleAPI process id of the command.
     * </pre>
     *
     * <code>int64 process_id = 1;</code>
     * @return The processId.
     */
    long getProcessId();

    /**
     * <pre>
     * The id of the command with which the app created it. Only guaranteed to be
     * set on the first transmission to the app.
     * </pre>
     *
     * <code>string request_id = 2;</code>
     * @return The requestId.
     */
    java.lang.String getRequestId();
    /**
     * <pre>
     * The id of the command with which the app created it. Only guaranteed to be
     * set on the first transmission to the app.
     * </pre>
     *
     * <code>string request_id = 2;</code>
     * @return The bytes for requestId.
     */
    com.google.protobuf.ByteString
        getRequestIdBytes();

    /**
     * <pre>
     * The initial CommandStatus from the response of the vehicleAPI has a timestamp of
     * -1
     * </pre>
     *
     * <code>int64 timestamp_in_ms = 3;</code>
     * @return The timestampInMs.
     */
    long getTimestampInMs();

    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 4;</code>
     */
    java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> 
        getErrorsList();
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 4;</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError getErrors(int index);
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 4;</code>
     */
    int getErrorsCount();
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 4;</code>
     */
    java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
        getErrorsOrBuilderList();
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 4;</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder getErrorsOrBuilder(
        int index);

    /**
     * <pre>
     * Potential timestamp until user cannot send login requests. Data in seconds
     * since Unix epoch
     * </pre>
     *
     * <code>int64 blocking_time_seconds = 5 [deprecated = true];</code>
     * @deprecated proto.AppTwinCommandStatus.blocking_time_seconds is deprecated.
     *     See vehicleapi.proto;l=52
     * @return The blockingTimeSeconds.
     */
    @java.lang.Deprecated long getBlockingTimeSeconds();

    /**
     * <pre>
     * Potential amount of failed pin attempts.
     * </pre>
     *
     * <code>int32 pin_attempts = 6 [deprecated = true];</code>
     * @deprecated proto.AppTwinCommandStatus.pin_attempts is deprecated.
     *     See vehicleapi.proto;l=55
     * @return The pinAttempts.
     */
    @java.lang.Deprecated int getPinAttempts();

    /**
     * <pre>
     * The type of command the AppTwinCommandStatus belongs to
     * </pre>
     *
     * <code>.proto.ACP.CommandType type = 7;</code>
     * @return The enum numeric value on the wire for type.
     */
    int getTypeValue();
    /**
     * <pre>
     * The type of command the AppTwinCommandStatus belongs to
     * </pre>
     *
     * <code>.proto.ACP.CommandType type = 7;</code>
     * @return The type.
     */
    com.daimler.mbcarkit.proto.Acp.ACP.CommandType getType();

    /**
     * <pre>
     * The command state
     * </pre>
     *
     * <code>.proto.VehicleAPI.CommandState state = 8;</code>
     * @return The enum numeric value on the wire for state.
     */
    int getStateValue();
    /**
     * <pre>
     * The command state
     * </pre>
     *
     * <code>.proto.VehicleAPI.CommandState state = 8;</code>
     * @return The state.
     */
    com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState getState();
  }
  /**
   * <pre>
   * Sending direction: App &lt;- BFF &lt;- AppTwin as part of an AppTwinCommandStatusUpdatesByPID
   * </pre>
   *
   * Protobuf type {@code proto.AppTwinCommandStatus}
   */
  public static final class AppTwinCommandStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.AppTwinCommandStatus)
      AppTwinCommandStatusOrBuilder {
  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= */ "",
        "AppTwinCommandStatus");
    }
    // Use AppTwinCommandStatus.newBuilder() to construct.
    private AppTwinCommandStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AppTwinCommandStatus() {
      requestId_ = "";
      errors_ = java.util.Collections.emptyList();
      type_ = 0;
      state_ = 0;
    }

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

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

    public static final int PROCESS_ID_FIELD_NUMBER = 1;
    private long processId_ = 0L;
    /**
     * <pre>
     * The remote vehicleAPI process id of the command.
     * </pre>
     *
     * <code>int64 process_id = 1;</code>
     * @return The processId.
     */
    @java.lang.Override
    public long getProcessId() {
      return processId_;
    }

    public static final int REQUEST_ID_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object requestId_ = "";
    /**
     * <pre>
     * The id of the command with which the app created it. Only guaranteed to be
     * set on the first transmission to the app.
     * </pre>
     *
     * <code>string request_id = 2;</code>
     * @return The requestId.
     */
    @java.lang.Override
    public java.lang.String getRequestId() {
      java.lang.Object ref = requestId_;
      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();
        requestId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The id of the command with which the app created it. Only guaranteed to be
     * set on the first transmission to the app.
     * </pre>
     *
     * <code>string request_id = 2;</code>
     * @return The bytes for requestId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRequestIdBytes() {
      java.lang.Object ref = requestId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        requestId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIMESTAMP_IN_MS_FIELD_NUMBER = 3;
    private long timestampInMs_ = 0L;
    /**
     * <pre>
     * The initial CommandStatus from the response of the vehicleAPI has a timestamp of
     * -1
     * </pre>
     *
     * <code>int64 timestamp_in_ms = 3;</code>
     * @return The timestampInMs.
     */
    @java.lang.Override
    public long getTimestampInMs() {
      return timestampInMs_;
    }

    public static final int ERRORS_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> errors_;
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 4;</code>
     */
    @java.lang.Override
    public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> getErrorsList() {
      return errors_;
    }
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
        getErrorsOrBuilderList() {
      return errors_;
    }
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 4;</code>
     */
    @java.lang.Override
    public int getErrorsCount() {
      return errors_.size();
    }
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 4;</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError getErrors(int index) {
      return errors_.get(index);
    }
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 4;</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder getErrorsOrBuilder(
        int index) {
      return errors_.get(index);
    }

    public static final int BLOCKING_TIME_SECONDS_FIELD_NUMBER = 5;
    private long blockingTimeSeconds_ = 0L;
    /**
     * <pre>
     * Potential timestamp until user cannot send login requests. Data in seconds
     * since Unix epoch
     * </pre>
     *
     * <code>int64 blocking_time_seconds = 5 [deprecated = true];</code>
     * @deprecated proto.AppTwinCommandStatus.blocking_time_seconds is deprecated.
     *     See vehicleapi.proto;l=52
     * @return The blockingTimeSeconds.
     */
    @java.lang.Override
    @java.lang.Deprecated public long getBlockingTimeSeconds() {
      return blockingTimeSeconds_;
    }

    public static final int PIN_ATTEMPTS_FIELD_NUMBER = 6;
    private int pinAttempts_ = 0;
    /**
     * <pre>
     * Potential amount of failed pin attempts.
     * </pre>
     *
     * <code>int32 pin_attempts = 6 [deprecated = true];</code>
     * @deprecated proto.AppTwinCommandStatus.pin_attempts is deprecated.
     *     See vehicleapi.proto;l=55
     * @return The pinAttempts.
     */
    @java.lang.Override
    @java.lang.Deprecated public int getPinAttempts() {
      return pinAttempts_;
    }

    public static final int TYPE_FIELD_NUMBER = 7;
    private int type_ = 0;
    /**
     * <pre>
     * The type of command the AppTwinCommandStatus belongs to
     * </pre>
     *
     * <code>.proto.ACP.CommandType type = 7;</code>
     * @return The enum numeric value on the wire for type.
     */
    @java.lang.Override public int getTypeValue() {
      return type_;
    }
    /**
     * <pre>
     * The type of command the AppTwinCommandStatus belongs to
     * </pre>
     *
     * <code>.proto.ACP.CommandType type = 7;</code>
     * @return The type.
     */
    @java.lang.Override public com.daimler.mbcarkit.proto.Acp.ACP.CommandType getType() {
      com.daimler.mbcarkit.proto.Acp.ACP.CommandType result = com.daimler.mbcarkit.proto.Acp.ACP.CommandType.forNumber(type_);
      return result == null ? com.daimler.mbcarkit.proto.Acp.ACP.CommandType.UNRECOGNIZED : result;
    }

    public static final int STATE_FIELD_NUMBER = 8;
    private int state_ = 0;
    /**
     * <pre>
     * The command state
     * </pre>
     *
     * <code>.proto.VehicleAPI.CommandState state = 8;</code>
     * @return The enum numeric value on the wire for state.
     */
    @java.lang.Override public int getStateValue() {
      return state_;
    }
    /**
     * <pre>
     * The command state
     * </pre>
     *
     * <code>.proto.VehicleAPI.CommandState state = 8;</code>
     * @return The state.
     */
    @java.lang.Override public com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState getState() {
      com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState result = com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.forNumber(state_);
      return result == null ? com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.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 (processId_ != 0L) {
        output.writeInt64(1, processId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(requestId_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, requestId_);
      }
      if (timestampInMs_ != 0L) {
        output.writeInt64(3, timestampInMs_);
      }
      for (int i = 0; i < errors_.size(); i++) {
        output.writeMessage(4, errors_.get(i));
      }
      if (blockingTimeSeconds_ != 0L) {
        output.writeInt64(5, blockingTimeSeconds_);
      }
      if (pinAttempts_ != 0) {
        output.writeInt32(6, pinAttempts_);
      }
      if (type_ != com.daimler.mbcarkit.proto.Acp.ACP.CommandType.UNKNOWNCOMMANDTYPE.getNumber()) {
        output.writeEnum(7, type_);
      }
      if (state_ != com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.UNKNOWN_COMMAND_STATE.getNumber()) {
        output.writeEnum(8, state_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (processId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, processId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(requestId_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, requestId_);
      }
      if (timestampInMs_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, timestampInMs_);
      }
      for (int i = 0; i < errors_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, errors_.get(i));
      }
      if (blockingTimeSeconds_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, blockingTimeSeconds_);
      }
      if (pinAttempts_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, pinAttempts_);
      }
      if (type_ != com.daimler.mbcarkit.proto.Acp.ACP.CommandType.UNKNOWNCOMMANDTYPE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(7, type_);
      }
      if (state_ != com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.UNKNOWN_COMMAND_STATE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(8, state_);
      }
      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.Vehicleapi.AppTwinCommandStatus)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus other = (com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus) obj;

      if (getProcessId()
          != other.getProcessId()) return false;
      if (!getRequestId()
          .equals(other.getRequestId())) return false;
      if (getTimestampInMs()
          != other.getTimestampInMs()) return false;
      if (!getErrorsList()
          .equals(other.getErrorsList())) return false;
      if (getBlockingTimeSeconds()
          != other.getBlockingTimeSeconds()) return false;
      if (getPinAttempts()
          != other.getPinAttempts()) return false;
      if (type_ != other.type_) return false;
      if (state_ != other.state_) 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) + PROCESS_ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getProcessId());
      hash = (37 * hash) + REQUEST_ID_FIELD_NUMBER;
      hash = (53 * hash) + getRequestId().hashCode();
      hash = (37 * hash) + TIMESTAMP_IN_MS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestampInMs());
      if (getErrorsCount() > 0) {
        hash = (37 * hash) + ERRORS_FIELD_NUMBER;
        hash = (53 * hash) + getErrorsList().hashCode();
      }
      hash = (37 * hash) + BLOCKING_TIME_SECONDS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getBlockingTimeSeconds());
      hash = (37 * hash) + PIN_ATTEMPTS_FIELD_NUMBER;
      hash = (53 * hash) + getPinAttempts();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + type_;
      hash = (37 * hash) + STATE_FIELD_NUMBER;
      hash = (53 * hash) + state_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus 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.Vehicleapi.AppTwinCommandStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus 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.Vehicleapi.AppTwinCommandStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus 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.Vehicleapi.AppTwinCommandStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus 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.Vehicleapi.AppTwinCommandStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus 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.Vehicleapi.AppTwinCommandStatus 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>
     * Sending direction: App &lt;- BFF &lt;- AppTwin as part of an AppTwinCommandStatusUpdatesByPID
     * </pre>
     *
     * Protobuf type {@code proto.AppTwinCommandStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.AppTwinCommandStatus)
        com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_AppTwinCommandStatus_descriptor;
      }

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

      // Construct using com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        processId_ = 0L;
        requestId_ = "";
        timestampInMs_ = 0L;
        if (errorsBuilder_ == null) {
          errors_ = java.util.Collections.emptyList();
        } else {
          errors_ = null;
          errorsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        blockingTimeSeconds_ = 0L;
        pinAttempts_ = 0;
        type_ = 0;
        state_ = 0;
        return this;
      }

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

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

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

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

      private void buildPartialRepeatedFields(com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus result) {
        if (errorsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            errors_ = java.util.Collections.unmodifiableList(errors_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.errors_ = errors_;
        } else {
          result.errors_ = errorsBuilder_.build();
        }
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.processId_ = processId_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.requestId_ = requestId_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.timestampInMs_ = timestampInMs_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.blockingTimeSeconds_ = blockingTimeSeconds_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.pinAttempts_ = pinAttempts_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.type_ = type_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.state_ = state_;
        }
      }

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

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus other) {
        if (other == com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus.getDefaultInstance()) return this;
        if (other.getProcessId() != 0L) {
          setProcessId(other.getProcessId());
        }
        if (!other.getRequestId().isEmpty()) {
          requestId_ = other.requestId_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.getTimestampInMs() != 0L) {
          setTimestampInMs(other.getTimestampInMs());
        }
        if (errorsBuilder_ == null) {
          if (!other.errors_.isEmpty()) {
            if (errors_.isEmpty()) {
              errors_ = other.errors_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureErrorsIsMutable();
              errors_.addAll(other.errors_);
            }
            onChanged();
          }
        } else {
          if (!other.errors_.isEmpty()) {
            if (errorsBuilder_.isEmpty()) {
              errorsBuilder_.dispose();
              errorsBuilder_ = null;
              errors_ = other.errors_;
              bitField0_ = (bitField0_ & ~0x00000008);
              errorsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   internalGetErrorsFieldBuilder() : null;
            } else {
              errorsBuilder_.addAllMessages(other.errors_);
            }
          }
        }
        if (other.getBlockingTimeSeconds() != 0L) {
          setBlockingTimeSeconds(other.getBlockingTimeSeconds());
        }
        if (other.getPinAttempts() != 0) {
          setPinAttempts(other.getPinAttempts());
        }
        if (other.type_ != 0) {
          setTypeValue(other.getTypeValue());
        }
        if (other.state_ != 0) {
          setStateValue(other.getStateValue());
        }
        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: {
                processId_ = input.readInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                requestId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                timestampInMs_ = input.readInt64();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError m =
                    input.readMessage(
                        com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.parser(),
                        extensionRegistry);
                if (errorsBuilder_ == null) {
                  ensureErrorsIsMutable();
                  errors_.add(m);
                } else {
                  errorsBuilder_.addMessage(m);
                }
                break;
              } // case 34
              case 40: {
                blockingTimeSeconds_ = input.readInt64();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                pinAttempts_ = input.readInt32();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 56: {
                type_ = input.readEnum();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              case 64: {
                state_ = input.readEnum();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              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 long processId_ ;
      /**
       * <pre>
       * The remote vehicleAPI process id of the command.
       * </pre>
       *
       * <code>int64 process_id = 1;</code>
       * @return The processId.
       */
      @java.lang.Override
      public long getProcessId() {
        return processId_;
      }
      /**
       * <pre>
       * The remote vehicleAPI process id of the command.
       * </pre>
       *
       * <code>int64 process_id = 1;</code>
       * @param value The processId to set.
       * @return This builder for chaining.
       */
      public Builder setProcessId(long value) {

        processId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The remote vehicleAPI process id of the command.
       * </pre>
       *
       * <code>int64 process_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearProcessId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        processId_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object requestId_ = "";
      /**
       * <pre>
       * The id of the command with which the app created it. Only guaranteed to be
       * set on the first transmission to the app.
       * </pre>
       *
       * <code>string request_id = 2;</code>
       * @return The requestId.
       */
      public java.lang.String getRequestId() {
        java.lang.Object ref = requestId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          requestId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The id of the command with which the app created it. Only guaranteed to be
       * set on the first transmission to the app.
       * </pre>
       *
       * <code>string request_id = 2;</code>
       * @return The bytes for requestId.
       */
      public com.google.protobuf.ByteString
          getRequestIdBytes() {
        java.lang.Object ref = requestId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          requestId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The id of the command with which the app created it. Only guaranteed to be
       * set on the first transmission to the app.
       * </pre>
       *
       * <code>string request_id = 2;</code>
       * @param value The requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        requestId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The id of the command with which the app created it. Only guaranteed to be
       * set on the first transmission to the app.
       * </pre>
       *
       * <code>string request_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRequestId() {
        requestId_ = getDefaultInstance().getRequestId();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The id of the command with which the app created it. Only guaranteed to be
       * set on the first transmission to the app.
       * </pre>
       *
       * <code>string request_id = 2;</code>
       * @param value The bytes for requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        requestId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private long timestampInMs_ ;
      /**
       * <pre>
       * The initial CommandStatus from the response of the vehicleAPI has a timestamp of
       * -1
       * </pre>
       *
       * <code>int64 timestamp_in_ms = 3;</code>
       * @return The timestampInMs.
       */
      @java.lang.Override
      public long getTimestampInMs() {
        return timestampInMs_;
      }
      /**
       * <pre>
       * The initial CommandStatus from the response of the vehicleAPI has a timestamp of
       * -1
       * </pre>
       *
       * <code>int64 timestamp_in_ms = 3;</code>
       * @param value The timestampInMs to set.
       * @return This builder for chaining.
       */
      public Builder setTimestampInMs(long value) {

        timestampInMs_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The initial CommandStatus from the response of the vehicleAPI has a timestamp of
       * -1
       * </pre>
       *
       * <code>int64 timestamp_in_ms = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestampInMs() {
        bitField0_ = (bitField0_ & ~0x00000004);
        timestampInMs_ = 0L;
        onChanged();
        return this;
      }

      private java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> errors_ =
        java.util.Collections.emptyList();
      private void ensureErrorsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          errors_ = new java.util.ArrayList<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError>(errors_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> errorsBuilder_;

      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> getErrorsList() {
        if (errorsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(errors_);
        } else {
          return errorsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public int getErrorsCount() {
        if (errorsBuilder_ == null) {
          return errors_.size();
        } else {
          return errorsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError getErrors(int index) {
        if (errorsBuilder_ == null) {
          return errors_.get(index);
        } else {
          return errorsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public Builder setErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError value) {
        if (errorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureErrorsIsMutable();
          errors_.set(index, value);
          onChanged();
        } else {
          errorsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public Builder setErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder builderForValue) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          errors_.set(index, builderForValue.build());
          onChanged();
        } else {
          errorsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public Builder addErrors(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError value) {
        if (errorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureErrorsIsMutable();
          errors_.add(value);
          onChanged();
        } else {
          errorsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public Builder addErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError value) {
        if (errorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureErrorsIsMutable();
          errors_.add(index, value);
          onChanged();
        } else {
          errorsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public Builder addErrors(
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder builderForValue) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          errors_.add(builderForValue.build());
          onChanged();
        } else {
          errorsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public Builder addErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder builderForValue) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          errors_.add(index, builderForValue.build());
          onChanged();
        } else {
          errorsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public Builder addAllErrors(
          java.lang.Iterable<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> values) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, errors_);
          onChanged();
        } else {
          errorsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public Builder clearErrors() {
        if (errorsBuilder_ == null) {
          errors_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          errorsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public Builder removeErrors(int index) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          errors_.remove(index);
          onChanged();
        } else {
          errorsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder getErrorsBuilder(
          int index) {
        return internalGetErrorsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder getErrorsOrBuilder(
          int index) {
        if (errorsBuilder_ == null) {
          return errors_.get(index);  } else {
          return errorsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
           getErrorsOrBuilderList() {
        if (errorsBuilder_ != null) {
          return errorsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(errors_);
        }
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder addErrorsBuilder() {
        return internalGetErrorsFieldBuilder().addBuilder(
            com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.getDefaultInstance());
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder addErrorsBuilder(
          int index) {
        return internalGetErrorsFieldBuilder().addBuilder(
            index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.getDefaultInstance());
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 4;</code>
       */
      public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder> 
           getErrorsBuilderList() {
        return internalGetErrorsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
          internalGetErrorsFieldBuilder() {
        if (errorsBuilder_ == null) {
          errorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder>(
                  errors_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          errors_ = null;
        }
        return errorsBuilder_;
      }

      private long blockingTimeSeconds_ ;
      /**
       * <pre>
       * Potential timestamp until user cannot send login requests. Data in seconds
       * since Unix epoch
       * </pre>
       *
       * <code>int64 blocking_time_seconds = 5 [deprecated = true];</code>
       * @deprecated proto.AppTwinCommandStatus.blocking_time_seconds is deprecated.
       *     See vehicleapi.proto;l=52
       * @return The blockingTimeSeconds.
       */
      @java.lang.Override
      @java.lang.Deprecated public long getBlockingTimeSeconds() {
        return blockingTimeSeconds_;
      }
      /**
       * <pre>
       * Potential timestamp until user cannot send login requests. Data in seconds
       * since Unix epoch
       * </pre>
       *
       * <code>int64 blocking_time_seconds = 5 [deprecated = true];</code>
       * @deprecated proto.AppTwinCommandStatus.blocking_time_seconds is deprecated.
       *     See vehicleapi.proto;l=52
       * @param value The blockingTimeSeconds to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setBlockingTimeSeconds(long value) {

        blockingTimeSeconds_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Potential timestamp until user cannot send login requests. Data in seconds
       * since Unix epoch
       * </pre>
       *
       * <code>int64 blocking_time_seconds = 5 [deprecated = true];</code>
       * @deprecated proto.AppTwinCommandStatus.blocking_time_seconds is deprecated.
       *     See vehicleapi.proto;l=52
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearBlockingTimeSeconds() {
        bitField0_ = (bitField0_ & ~0x00000010);
        blockingTimeSeconds_ = 0L;
        onChanged();
        return this;
      }

      private int pinAttempts_ ;
      /**
       * <pre>
       * Potential amount of failed pin attempts.
       * </pre>
       *
       * <code>int32 pin_attempts = 6 [deprecated = true];</code>
       * @deprecated proto.AppTwinCommandStatus.pin_attempts is deprecated.
       *     See vehicleapi.proto;l=55
       * @return The pinAttempts.
       */
      @java.lang.Override
      @java.lang.Deprecated public int getPinAttempts() {
        return pinAttempts_;
      }
      /**
       * <pre>
       * Potential amount of failed pin attempts.
       * </pre>
       *
       * <code>int32 pin_attempts = 6 [deprecated = true];</code>
       * @deprecated proto.AppTwinCommandStatus.pin_attempts is deprecated.
       *     See vehicleapi.proto;l=55
       * @param value The pinAttempts to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setPinAttempts(int value) {

        pinAttempts_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Potential amount of failed pin attempts.
       * </pre>
       *
       * <code>int32 pin_attempts = 6 [deprecated = true];</code>
       * @deprecated proto.AppTwinCommandStatus.pin_attempts is deprecated.
       *     See vehicleapi.proto;l=55
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearPinAttempts() {
        bitField0_ = (bitField0_ & ~0x00000020);
        pinAttempts_ = 0;
        onChanged();
        return this;
      }

      private int type_ = 0;
      /**
       * <pre>
       * The type of command the AppTwinCommandStatus belongs to
       * </pre>
       *
       * <code>.proto.ACP.CommandType type = 7;</code>
       * @return The enum numeric value on the wire for type.
       */
      @java.lang.Override public int getTypeValue() {
        return type_;
      }
      /**
       * <pre>
       * The type of command the AppTwinCommandStatus belongs to
       * </pre>
       *
       * <code>.proto.ACP.CommandType type = 7;</code>
       * @param value The enum numeric value on the wire for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeValue(int value) {
        type_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The type of command the AppTwinCommandStatus belongs to
       * </pre>
       *
       * <code>.proto.ACP.CommandType type = 7;</code>
       * @return The type.
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Acp.ACP.CommandType getType() {
        com.daimler.mbcarkit.proto.Acp.ACP.CommandType result = com.daimler.mbcarkit.proto.Acp.ACP.CommandType.forNumber(type_);
        return result == null ? com.daimler.mbcarkit.proto.Acp.ACP.CommandType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * The type of command the AppTwinCommandStatus belongs to
       * </pre>
       *
       * <code>.proto.ACP.CommandType type = 7;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(com.daimler.mbcarkit.proto.Acp.ACP.CommandType value) {
        if (value == null) { throw new NullPointerException(); }
        bitField0_ |= 0x00000040;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The type of command the AppTwinCommandStatus belongs to
       * </pre>
       *
       * <code>.proto.ACP.CommandType type = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000040);
        type_ = 0;
        onChanged();
        return this;
      }

      private int state_ = 0;
      /**
       * <pre>
       * The command state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 8;</code>
       * @return The enum numeric value on the wire for state.
       */
      @java.lang.Override public int getStateValue() {
        return state_;
      }
      /**
       * <pre>
       * The command state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 8;</code>
       * @param value The enum numeric value on the wire for state to set.
       * @return This builder for chaining.
       */
      public Builder setStateValue(int value) {
        state_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The command state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 8;</code>
       * @return The state.
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState getState() {
        com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState result = com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.forNumber(state_);
        return result == null ? com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * The command state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 8;</code>
       * @param value The state to set.
       * @return This builder for chaining.
       */
      public Builder setState(com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState value) {
        if (value == null) { throw new NullPointerException(); }
        bitField0_ |= 0x00000080;
        state_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The command state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearState() {
        bitField0_ = (bitField0_ & ~0x00000080);
        state_ = 0;
        onChanged();
        return this;
      }

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

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinCommandStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AppTwinCommandStatus>
        PARSER = new com.google.protobuf.AbstractParser<AppTwinCommandStatus>() {
      @java.lang.Override
      public AppTwinCommandStatus 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<AppTwinCommandStatus> parser() {
      return PARSER;
    }

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

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

  }

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

    /**
     * <pre>
     * The remote VVA process id of the command.
     * </pre>
     *
     * <code>int64 process_id = 1 [json_name = "processid"];</code>
     * @return The processId.
     */
    long getProcessId();

    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
     */
    java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> 
        getErrorsList();
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError getErrors(int index);
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
     */
    int getErrorsCount();
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
     */
    java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
        getErrorsOrBuilderList();
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder getErrorsOrBuilder(
        int index);

    /**
     * <pre>
     * The command state
     * </pre>
     *
     * <code>.proto.VehicleAPI.CommandState state = 3 [json_name = "state"];</code>
     * @return The enum numeric value on the wire for state.
     */
    int getStateValue();
    /**
     * <pre>
     * The command state
     * </pre>
     *
     * <code>.proto.VehicleAPI.CommandState state = 3 [json_name = "state"];</code>
     * @return The state.
     */
    com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState getState();
  }
  /**
   * <pre>
   * VehicleAPICommandPostResult is a message type that can be unmarshaled from a POST request against the vehicle API
   * for issuing commands.
   * </pre>
   *
   * Protobuf type {@code proto.VehicleAPICommandPostResult}
   */
  public static final class VehicleAPICommandPostResult extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.VehicleAPICommandPostResult)
      VehicleAPICommandPostResultOrBuilder {
  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= */ "",
        "VehicleAPICommandPostResult");
    }
    // Use VehicleAPICommandPostResult.newBuilder() to construct.
    private VehicleAPICommandPostResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VehicleAPICommandPostResult() {
      errors_ = java.util.Collections.emptyList();
      state_ = 0;
    }

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

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

    public static final int PROCESS_ID_FIELD_NUMBER = 1;
    private long processId_ = 0L;
    /**
     * <pre>
     * The remote VVA process id of the command.
     * </pre>
     *
     * <code>int64 process_id = 1 [json_name = "processid"];</code>
     * @return The processId.
     */
    @java.lang.Override
    public long getProcessId() {
      return processId_;
    }

    public static final int ERRORS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> errors_;
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
     */
    @java.lang.Override
    public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> getErrorsList() {
      return errors_;
    }
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
        getErrorsOrBuilderList() {
      return errors_;
    }
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
     */
    @java.lang.Override
    public int getErrorsCount() {
      return errors_.size();
    }
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError getErrors(int index) {
      return errors_.get(index);
    }
    /**
     * <pre>
     * Potential ACP error if the command request could not be fulfilled
     * </pre>
     *
     * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder getErrorsOrBuilder(
        int index) {
      return errors_.get(index);
    }

    public static final int STATE_FIELD_NUMBER = 3;
    private int state_ = 0;
    /**
     * <pre>
     * The command state
     * </pre>
     *
     * <code>.proto.VehicleAPI.CommandState state = 3 [json_name = "state"];</code>
     * @return The enum numeric value on the wire for state.
     */
    @java.lang.Override public int getStateValue() {
      return state_;
    }
    /**
     * <pre>
     * The command state
     * </pre>
     *
     * <code>.proto.VehicleAPI.CommandState state = 3 [json_name = "state"];</code>
     * @return The state.
     */
    @java.lang.Override public com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState getState() {
      com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState result = com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.forNumber(state_);
      return result == null ? com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.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 (processId_ != 0L) {
        output.writeInt64(1, processId_);
      }
      for (int i = 0; i < errors_.size(); i++) {
        output.writeMessage(2, errors_.get(i));
      }
      if (state_ != com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.UNKNOWN_COMMAND_STATE.getNumber()) {
        output.writeEnum(3, state_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (processId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, processId_);
      }
      for (int i = 0; i < errors_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, errors_.get(i));
      }
      if (state_ != com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.UNKNOWN_COMMAND_STATE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, state_);
      }
      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.Vehicleapi.VehicleAPICommandPostResult)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult other = (com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult) obj;

      if (getProcessId()
          != other.getProcessId()) return false;
      if (!getErrorsList()
          .equals(other.getErrorsList())) return false;
      if (state_ != other.state_) 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) + PROCESS_ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getProcessId());
      if (getErrorsCount() > 0) {
        hash = (37 * hash) + ERRORS_FIELD_NUMBER;
        hash = (53 * hash) + getErrorsList().hashCode();
      }
      hash = (37 * hash) + STATE_FIELD_NUMBER;
      hash = (53 * hash) + state_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult 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.Vehicleapi.VehicleAPICommandPostResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult 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.Vehicleapi.VehicleAPICommandPostResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult 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.Vehicleapi.VehicleAPICommandPostResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult 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.Vehicleapi.VehicleAPICommandPostResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult 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.Vehicleapi.VehicleAPICommandPostResult 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>
     * VehicleAPICommandPostResult is a message type that can be unmarshaled from a POST request against the vehicle API
     * for issuing commands.
     * </pre>
     *
     * Protobuf type {@code proto.VehicleAPICommandPostResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.VehicleAPICommandPostResult)
        com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_VehicleAPICommandPostResult_descriptor;
      }

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

      // Construct using com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        processId_ = 0L;
        if (errorsBuilder_ == null) {
          errors_ = java.util.Collections.emptyList();
        } else {
          errors_ = null;
          errorsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        state_ = 0;
        return this;
      }

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

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

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

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

      private void buildPartialRepeatedFields(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult result) {
        if (errorsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            errors_ = java.util.Collections.unmodifiableList(errors_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.errors_ = errors_;
        } else {
          result.errors_ = errorsBuilder_.build();
        }
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.processId_ = processId_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.state_ = state_;
        }
      }

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

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult other) {
        if (other == com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult.getDefaultInstance()) return this;
        if (other.getProcessId() != 0L) {
          setProcessId(other.getProcessId());
        }
        if (errorsBuilder_ == null) {
          if (!other.errors_.isEmpty()) {
            if (errors_.isEmpty()) {
              errors_ = other.errors_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureErrorsIsMutable();
              errors_.addAll(other.errors_);
            }
            onChanged();
          }
        } else {
          if (!other.errors_.isEmpty()) {
            if (errorsBuilder_.isEmpty()) {
              errorsBuilder_.dispose();
              errorsBuilder_ = null;
              errors_ = other.errors_;
              bitField0_ = (bitField0_ & ~0x00000002);
              errorsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   internalGetErrorsFieldBuilder() : null;
            } else {
              errorsBuilder_.addAllMessages(other.errors_);
            }
          }
        }
        if (other.state_ != 0) {
          setStateValue(other.getStateValue());
        }
        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: {
                processId_ = input.readInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError m =
                    input.readMessage(
                        com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.parser(),
                        extensionRegistry);
                if (errorsBuilder_ == null) {
                  ensureErrorsIsMutable();
                  errors_.add(m);
                } else {
                  errorsBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 24: {
                state_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              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 long processId_ ;
      /**
       * <pre>
       * The remote VVA process id of the command.
       * </pre>
       *
       * <code>int64 process_id = 1 [json_name = "processid"];</code>
       * @return The processId.
       */
      @java.lang.Override
      public long getProcessId() {
        return processId_;
      }
      /**
       * <pre>
       * The remote VVA process id of the command.
       * </pre>
       *
       * <code>int64 process_id = 1 [json_name = "processid"];</code>
       * @param value The processId to set.
       * @return This builder for chaining.
       */
      public Builder setProcessId(long value) {

        processId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The remote VVA process id of the command.
       * </pre>
       *
       * <code>int64 process_id = 1 [json_name = "processid"];</code>
       * @return This builder for chaining.
       */
      public Builder clearProcessId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        processId_ = 0L;
        onChanged();
        return this;
      }

      private java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> errors_ =
        java.util.Collections.emptyList();
      private void ensureErrorsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          errors_ = new java.util.ArrayList<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError>(errors_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> errorsBuilder_;

      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> getErrorsList() {
        if (errorsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(errors_);
        } else {
          return errorsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public int getErrorsCount() {
        if (errorsBuilder_ == null) {
          return errors_.size();
        } else {
          return errorsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError getErrors(int index) {
        if (errorsBuilder_ == null) {
          return errors_.get(index);
        } else {
          return errorsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public Builder setErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError value) {
        if (errorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureErrorsIsMutable();
          errors_.set(index, value);
          onChanged();
        } else {
          errorsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public Builder setErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder builderForValue) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          errors_.set(index, builderForValue.build());
          onChanged();
        } else {
          errorsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public Builder addErrors(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError value) {
        if (errorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureErrorsIsMutable();
          errors_.add(value);
          onChanged();
        } else {
          errorsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public Builder addErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError value) {
        if (errorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureErrorsIsMutable();
          errors_.add(index, value);
          onChanged();
        } else {
          errorsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public Builder addErrors(
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder builderForValue) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          errors_.add(builderForValue.build());
          onChanged();
        } else {
          errorsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public Builder addErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder builderForValue) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          errors_.add(index, builderForValue.build());
          onChanged();
        } else {
          errorsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public Builder addAllErrors(
          java.lang.Iterable<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> values) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, errors_);
          onChanged();
        } else {
          errorsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public Builder clearErrors() {
        if (errorsBuilder_ == null) {
          errors_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          errorsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public Builder removeErrors(int index) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          errors_.remove(index);
          onChanged();
        } else {
          errorsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder getErrorsBuilder(
          int index) {
        return internalGetErrorsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder getErrorsOrBuilder(
          int index) {
        if (errorsBuilder_ == null) {
          return errors_.get(index);  } else {
          return errorsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
           getErrorsOrBuilderList() {
        if (errorsBuilder_ != null) {
          return errorsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(errors_);
        }
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder addErrorsBuilder() {
        return internalGetErrorsFieldBuilder().addBuilder(
            com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.getDefaultInstance());
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder addErrorsBuilder(
          int index) {
        return internalGetErrorsFieldBuilder().addBuilder(
            index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.getDefaultInstance());
      }
      /**
       * <pre>
       * Potential ACP error if the command request could not be fulfilled
       * </pre>
       *
       * <code>repeated .proto.VehicleAPIError errors = 2 [json_name = "errors"];</code>
       */
      public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder> 
           getErrorsBuilderList() {
        return internalGetErrorsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
          internalGetErrorsFieldBuilder() {
        if (errorsBuilder_ == null) {
          errorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder>(
                  errors_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          errors_ = null;
        }
        return errorsBuilder_;
      }

      private int state_ = 0;
      /**
       * <pre>
       * The command state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 3 [json_name = "state"];</code>
       * @return The enum numeric value on the wire for state.
       */
      @java.lang.Override public int getStateValue() {
        return state_;
      }
      /**
       * <pre>
       * The command state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 3 [json_name = "state"];</code>
       * @param value The enum numeric value on the wire for state to set.
       * @return This builder for chaining.
       */
      public Builder setStateValue(int value) {
        state_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The command state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 3 [json_name = "state"];</code>
       * @return The state.
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState getState() {
        com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState result = com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.forNumber(state_);
        return result == null ? com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * The command state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 3 [json_name = "state"];</code>
       * @param value The state to set.
       * @return This builder for chaining.
       */
      public Builder setState(com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState value) {
        if (value == null) { throw new NullPointerException(); }
        bitField0_ |= 0x00000004;
        state_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The command state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 3 [json_name = "state"];</code>
       * @return This builder for chaining.
       */
      public Builder clearState() {
        bitField0_ = (bitField0_ & ~0x00000004);
        state_ = 0;
        onChanged();
        return this;
      }

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

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandPostResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VehicleAPICommandPostResult>
        PARSER = new com.google.protobuf.AbstractParser<VehicleAPICommandPostResult>() {
      @java.lang.Override
      public VehicleAPICommandPostResult 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<VehicleAPICommandPostResult> parser() {
      return PARSER;
    }

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

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

  }

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

    /**
     * <pre>
     * List of processes
     * </pre>
     *
     * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
     */
    java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus> 
        getProcessList();
    /**
     * <pre>
     * List of processes
     * </pre>
     *
     * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus getProcess(int index);
    /**
     * <pre>
     * List of processes
     * </pre>
     *
     * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
     */
    int getProcessCount();
    /**
     * <pre>
     * List of processes
     * </pre>
     *
     * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
     */
    java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatusOrBuilder> 
        getProcessOrBuilderList();
    /**
     * <pre>
     * List of processes
     * </pre>
     *
     * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatusOrBuilder getProcessOrBuilder(
        int index);

    /**
     * <pre>
     * Number of enqueued commands in related command queue
     * </pre>
     *
     * <code>int32 queue_count = 2 [json_name = "queuecount"];</code>
     * @return The queueCount.
     */
    int getQueueCount();

    /**
     * <pre>
     * Name of related command queue type
     * </pre>
     *
     * <code>.proto.VehicleAPI.QueueType queue_type = 3 [json_name = "queuetype"];</code>
     * @return The enum numeric value on the wire for queueType.
     */
    int getQueueTypeValue();
    /**
     * <pre>
     * Name of related command queue type
     * </pre>
     *
     * <code>.proto.VehicleAPI.QueueType queue_type = 3 [json_name = "queuetype"];</code>
     * @return The queueType.
     */
    com.daimler.mbcarkit.proto.Acp.VehicleAPI.QueueType getQueueType();
  }
  /**
   * Protobuf type {@code proto.VehicleAPICommandGetResult}
   */
  public static final class VehicleAPICommandGetResult extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.VehicleAPICommandGetResult)
      VehicleAPICommandGetResultOrBuilder {
  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= */ "",
        "VehicleAPICommandGetResult");
    }
    // Use VehicleAPICommandGetResult.newBuilder() to construct.
    private VehicleAPICommandGetResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VehicleAPICommandGetResult() {
      process_ = java.util.Collections.emptyList();
      queueType_ = 0;
    }

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

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

    public static final int PROCESS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus> process_;
    /**
     * <pre>
     * List of processes
     * </pre>
     *
     * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
     */
    @java.lang.Override
    public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus> getProcessList() {
      return process_;
    }
    /**
     * <pre>
     * List of processes
     * </pre>
     *
     * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatusOrBuilder> 
        getProcessOrBuilderList() {
      return process_;
    }
    /**
     * <pre>
     * List of processes
     * </pre>
     *
     * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
     */
    @java.lang.Override
    public int getProcessCount() {
      return process_.size();
    }
    /**
     * <pre>
     * List of processes
     * </pre>
     *
     * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus getProcess(int index) {
      return process_.get(index);
    }
    /**
     * <pre>
     * List of processes
     * </pre>
     *
     * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatusOrBuilder getProcessOrBuilder(
        int index) {
      return process_.get(index);
    }

    public static final int QUEUE_COUNT_FIELD_NUMBER = 2;
    private int queueCount_ = 0;
    /**
     * <pre>
     * Number of enqueued commands in related command queue
     * </pre>
     *
     * <code>int32 queue_count = 2 [json_name = "queuecount"];</code>
     * @return The queueCount.
     */
    @java.lang.Override
    public int getQueueCount() {
      return queueCount_;
    }

    public static final int QUEUE_TYPE_FIELD_NUMBER = 3;
    private int queueType_ = 0;
    /**
     * <pre>
     * Name of related command queue type
     * </pre>
     *
     * <code>.proto.VehicleAPI.QueueType queue_type = 3 [json_name = "queuetype"];</code>
     * @return The enum numeric value on the wire for queueType.
     */
    @java.lang.Override public int getQueueTypeValue() {
      return queueType_;
    }
    /**
     * <pre>
     * Name of related command queue type
     * </pre>
     *
     * <code>.proto.VehicleAPI.QueueType queue_type = 3 [json_name = "queuetype"];</code>
     * @return The queueType.
     */
    @java.lang.Override public com.daimler.mbcarkit.proto.Acp.VehicleAPI.QueueType getQueueType() {
      com.daimler.mbcarkit.proto.Acp.VehicleAPI.QueueType result = com.daimler.mbcarkit.proto.Acp.VehicleAPI.QueueType.forNumber(queueType_);
      return result == null ? com.daimler.mbcarkit.proto.Acp.VehicleAPI.QueueType.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 {
      for (int i = 0; i < process_.size(); i++) {
        output.writeMessage(1, process_.get(i));
      }
      if (queueCount_ != 0) {
        output.writeInt32(2, queueCount_);
      }
      if (queueType_ != com.daimler.mbcarkit.proto.Acp.VehicleAPI.QueueType.UNKNOWNCOMMANDQUEUETYPE.getNumber()) {
        output.writeEnum(3, queueType_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < process_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, process_.get(i));
      }
      if (queueCount_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, queueCount_);
      }
      if (queueType_ != com.daimler.mbcarkit.proto.Acp.VehicleAPI.QueueType.UNKNOWNCOMMANDQUEUETYPE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, queueType_);
      }
      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.Vehicleapi.VehicleAPICommandGetResult)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult other = (com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult) obj;

      if (!getProcessList()
          .equals(other.getProcessList())) return false;
      if (getQueueCount()
          != other.getQueueCount()) return false;
      if (queueType_ != other.queueType_) 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 (getProcessCount() > 0) {
        hash = (37 * hash) + PROCESS_FIELD_NUMBER;
        hash = (53 * hash) + getProcessList().hashCode();
      }
      hash = (37 * hash) + QUEUE_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getQueueCount();
      hash = (37 * hash) + QUEUE_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + queueType_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult 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.Vehicleapi.VehicleAPICommandGetResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult 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.Vehicleapi.VehicleAPICommandGetResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult 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.Vehicleapi.VehicleAPICommandGetResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult 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.Vehicleapi.VehicleAPICommandGetResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult 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.Vehicleapi.VehicleAPICommandGetResult 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.VehicleAPICommandGetResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.VehicleAPICommandGetResult)
        com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_VehicleAPICommandGetResult_descriptor;
      }

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

      // Construct using com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (processBuilder_ == null) {
          process_ = java.util.Collections.emptyList();
        } else {
          process_ = null;
          processBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        queueCount_ = 0;
        queueType_ = 0;
        return this;
      }

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

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

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

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

      private void buildPartialRepeatedFields(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult result) {
        if (processBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            process_ = java.util.Collections.unmodifiableList(process_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.process_ = process_;
        } else {
          result.process_ = processBuilder_.build();
        }
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.queueCount_ = queueCount_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.queueType_ = queueType_;
        }
      }

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

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult other) {
        if (other == com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult.getDefaultInstance()) return this;
        if (processBuilder_ == null) {
          if (!other.process_.isEmpty()) {
            if (process_.isEmpty()) {
              process_ = other.process_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureProcessIsMutable();
              process_.addAll(other.process_);
            }
            onChanged();
          }
        } else {
          if (!other.process_.isEmpty()) {
            if (processBuilder_.isEmpty()) {
              processBuilder_.dispose();
              processBuilder_ = null;
              process_ = other.process_;
              bitField0_ = (bitField0_ & ~0x00000001);
              processBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   internalGetProcessFieldBuilder() : null;
            } else {
              processBuilder_.addAllMessages(other.process_);
            }
          }
        }
        if (other.getQueueCount() != 0) {
          setQueueCount(other.getQueueCount());
        }
        if (other.queueType_ != 0) {
          setQueueTypeValue(other.getQueueTypeValue());
        }
        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: {
                com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus m =
                    input.readMessage(
                        com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.parser(),
                        extensionRegistry);
                if (processBuilder_ == null) {
                  ensureProcessIsMutable();
                  process_.add(m);
                } else {
                  processBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 16: {
                queueCount_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                queueType_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              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.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus> process_ =
        java.util.Collections.emptyList();
      private void ensureProcessIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          process_ = new java.util.ArrayList<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus>(process_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatusOrBuilder> processBuilder_;

      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus> getProcessList() {
        if (processBuilder_ == null) {
          return java.util.Collections.unmodifiableList(process_);
        } else {
          return processBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public int getProcessCount() {
        if (processBuilder_ == null) {
          return process_.size();
        } else {
          return processBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus getProcess(int index) {
        if (processBuilder_ == null) {
          return process_.get(index);
        } else {
          return processBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public Builder setProcess(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus value) {
        if (processBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureProcessIsMutable();
          process_.set(index, value);
          onChanged();
        } else {
          processBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public Builder setProcess(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.Builder builderForValue) {
        if (processBuilder_ == null) {
          ensureProcessIsMutable();
          process_.set(index, builderForValue.build());
          onChanged();
        } else {
          processBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public Builder addProcess(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus value) {
        if (processBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureProcessIsMutable();
          process_.add(value);
          onChanged();
        } else {
          processBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public Builder addProcess(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus value) {
        if (processBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureProcessIsMutable();
          process_.add(index, value);
          onChanged();
        } else {
          processBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public Builder addProcess(
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.Builder builderForValue) {
        if (processBuilder_ == null) {
          ensureProcessIsMutable();
          process_.add(builderForValue.build());
          onChanged();
        } else {
          processBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public Builder addProcess(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.Builder builderForValue) {
        if (processBuilder_ == null) {
          ensureProcessIsMutable();
          process_.add(index, builderForValue.build());
          onChanged();
        } else {
          processBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public Builder addAllProcess(
          java.lang.Iterable<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus> values) {
        if (processBuilder_ == null) {
          ensureProcessIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, process_);
          onChanged();
        } else {
          processBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public Builder clearProcess() {
        if (processBuilder_ == null) {
          process_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          processBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public Builder removeProcess(int index) {
        if (processBuilder_ == null) {
          ensureProcessIsMutable();
          process_.remove(index);
          onChanged();
        } else {
          processBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.Builder getProcessBuilder(
          int index) {
        return internalGetProcessFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatusOrBuilder getProcessOrBuilder(
          int index) {
        if (processBuilder_ == null) {
          return process_.get(index);  } else {
          return processBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatusOrBuilder> 
           getProcessOrBuilderList() {
        if (processBuilder_ != null) {
          return processBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(process_);
        }
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.Builder addProcessBuilder() {
        return internalGetProcessFieldBuilder().addBuilder(
            com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.Builder addProcessBuilder(
          int index) {
        return internalGetProcessFieldBuilder().addBuilder(
            index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * List of processes
       * </pre>
       *
       * <code>repeated .proto.VehicleAPICommandProcessStatus process = 1 [json_name = "process"];</code>
       */
      public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.Builder> 
           getProcessBuilderList() {
        return internalGetProcessFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatusOrBuilder> 
          internalGetProcessFieldBuilder() {
        if (processBuilder_ == null) {
          processBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatusOrBuilder>(
                  process_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          process_ = null;
        }
        return processBuilder_;
      }

      private int queueCount_ ;
      /**
       * <pre>
       * Number of enqueued commands in related command queue
       * </pre>
       *
       * <code>int32 queue_count = 2 [json_name = "queuecount"];</code>
       * @return The queueCount.
       */
      @java.lang.Override
      public int getQueueCount() {
        return queueCount_;
      }
      /**
       * <pre>
       * Number of enqueued commands in related command queue
       * </pre>
       *
       * <code>int32 queue_count = 2 [json_name = "queuecount"];</code>
       * @param value The queueCount to set.
       * @return This builder for chaining.
       */
      public Builder setQueueCount(int value) {

        queueCount_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of enqueued commands in related command queue
       * </pre>
       *
       * <code>int32 queue_count = 2 [json_name = "queuecount"];</code>
       * @return This builder for chaining.
       */
      public Builder clearQueueCount() {
        bitField0_ = (bitField0_ & ~0x00000002);
        queueCount_ = 0;
        onChanged();
        return this;
      }

      private int queueType_ = 0;
      /**
       * <pre>
       * Name of related command queue type
       * </pre>
       *
       * <code>.proto.VehicleAPI.QueueType queue_type = 3 [json_name = "queuetype"];</code>
       * @return The enum numeric value on the wire for queueType.
       */
      @java.lang.Override public int getQueueTypeValue() {
        return queueType_;
      }
      /**
       * <pre>
       * Name of related command queue type
       * </pre>
       *
       * <code>.proto.VehicleAPI.QueueType queue_type = 3 [json_name = "queuetype"];</code>
       * @param value The enum numeric value on the wire for queueType to set.
       * @return This builder for chaining.
       */
      public Builder setQueueTypeValue(int value) {
        queueType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of related command queue type
       * </pre>
       *
       * <code>.proto.VehicleAPI.QueueType queue_type = 3 [json_name = "queuetype"];</code>
       * @return The queueType.
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Acp.VehicleAPI.QueueType getQueueType() {
        com.daimler.mbcarkit.proto.Acp.VehicleAPI.QueueType result = com.daimler.mbcarkit.proto.Acp.VehicleAPI.QueueType.forNumber(queueType_);
        return result == null ? com.daimler.mbcarkit.proto.Acp.VehicleAPI.QueueType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Name of related command queue type
       * </pre>
       *
       * <code>.proto.VehicleAPI.QueueType queue_type = 3 [json_name = "queuetype"];</code>
       * @param value The queueType to set.
       * @return This builder for chaining.
       */
      public Builder setQueueType(com.daimler.mbcarkit.proto.Acp.VehicleAPI.QueueType value) {
        if (value == null) { throw new NullPointerException(); }
        bitField0_ |= 0x00000004;
        queueType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of related command queue type
       * </pre>
       *
       * <code>.proto.VehicleAPI.QueueType queue_type = 3 [json_name = "queuetype"];</code>
       * @return This builder for chaining.
       */
      public Builder clearQueueType() {
        bitField0_ = (bitField0_ & ~0x00000004);
        queueType_ = 0;
        onChanged();
        return this;
      }

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

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandGetResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VehicleAPICommandGetResult>
        PARSER = new com.google.protobuf.AbstractParser<VehicleAPICommandGetResult>() {
      @java.lang.Override
      public VehicleAPICommandGetResult 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<VehicleAPICommandGetResult> parser() {
      return PARSER;
    }

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

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

  }

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

    /**
     * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
     */
    int getDataCount();
    /**
     * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
     */
    boolean containsData(
        java.lang.String key);
    /**
     * Use {@link #getDataMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus>
    getData();
    /**
     * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
     */
    java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus>
    getDataMap();
    /**
     * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
     */
    /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus getDataOrDefault(
        java.lang.String key,
        /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus defaultValue);
    /**
     * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus getDataOrThrow(
        java.lang.String key);
  }
  /**
   * Protobuf type {@code proto.VehicleAPIDataGetResult}
   */
  public static final class VehicleAPIDataGetResult extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.VehicleAPIDataGetResult)
      VehicleAPIDataGetResultOrBuilder {
  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= */ "",
        "VehicleAPIDataGetResult");
    }
    // Use VehicleAPIDataGetResult.newBuilder() to construct.
    private VehicleAPIDataGetResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VehicleAPIDataGetResult() {
    }

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

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

    public static final int DATA_FIELD_NUMBER = 1;
    private static final class DataDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus>newDefaultInstance(
                  com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_VehicleAPIDataGetResult_DataEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus> data_;
    private com.google.protobuf.MapField<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus>
    internalGetData() {
      if (data_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            DataDefaultEntryHolder.defaultEntry);
      }
      return data_;
    }
    public int getDataCount() {
      return internalGetData().getMap().size();
    }
    /**
     * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
     */
    @java.lang.Override
    public boolean containsData(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetData().getMap().containsKey(key);
    }
    /**
     * Use {@link #getDataMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus> getData() {
      return getDataMap();
    }
    /**
     * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus> getDataMap() {
      return internalGetData().getMap();
    }
    /**
     * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
     */
    @java.lang.Override
    public /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus getDataOrDefault(
        java.lang.String key,
        /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus> map =
          internalGetData().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus getDataOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus> map =
          internalGetData().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 {
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetData(),
          DataDefaultEntryHolder.defaultEntry,
          1);
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (java.util.Map.Entry<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus> entry
           : internalGetData().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus>
        data__ = DataDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, data__);
      }
      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.Vehicleapi.VehicleAPIDataGetResult)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult other = (com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult) obj;

      if (!internalGetData().equals(
          other.internalGetData())) 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 (!internalGetData().getMap().isEmpty()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + internalGetData().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult 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.Vehicleapi.VehicleAPIDataGetResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult 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.Vehicleapi.VehicleAPIDataGetResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult 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.Vehicleapi.VehicleAPIDataGetResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult 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.Vehicleapi.VehicleAPIDataGetResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult 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.Vehicleapi.VehicleAPIDataGetResult 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.VehicleAPIDataGetResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.VehicleAPIDataGetResult)
        com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_VehicleAPIDataGetResult_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetData();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableData();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_VehicleAPIDataGetResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult.class, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.data_ = internalGetData().build(DataDefaultEntryHolder.defaultEntry);
        }
      }

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

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult other) {
        if (other == com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult.getDefaultInstance()) return this;
        internalGetMutableData().mergeFrom(
            other.internalGetData());
        bitField0_ |= 0x00000001;
        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: {
                com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus>
                data__ = input.readMessage(
                    DataDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableData().ensureBuilderMap().put(
                    data__.getKey(), data__.getValue());
                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 static final class DataConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatusOrBuilder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus> {
        @java.lang.Override
        public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus build(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatusOrBuilder val) {
          if (val instanceof com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus) { return (com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus) val; }
          return ((com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus> defaultEntry() {
          return DataDefaultEntryHolder.defaultEntry;
        }
      };
      private static final DataConverter dataConverter = new DataConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatusOrBuilder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus.Builder> data_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatusOrBuilder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus.Builder>
          internalGetData() {
        if (data_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(dataConverter);
        }
        return data_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatusOrBuilder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus.Builder>
          internalGetMutableData() {
        if (data_ == null) {
          data_ = new com.google.protobuf.MapFieldBuilder<>(dataConverter);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return data_;
      }
      public int getDataCount() {
        return internalGetData().ensureBuilderMap().size();
      }
      /**
       * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
       */
      @java.lang.Override
      public boolean containsData(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetData().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getDataMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus> getData() {
        return getDataMap();
      }
      /**
       * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus> getDataMap() {
        return internalGetData().getImmutableMap();
      }
      /**
       * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
       */
      @java.lang.Override
      public /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus getDataOrDefault(
          java.lang.String key,
          /* nullable */
com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatusOrBuilder> map = internalGetMutableData().ensureBuilderMap();
        return map.containsKey(key) ? dataConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus getDataOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatusOrBuilder> map = internalGetMutableData().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return dataConverter.build(map.get(key));
      }
      public Builder clearData() {
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableData().clear();
        return this;
      }
      /**
       * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
       */
      public Builder removeData(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableData().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus>
          getMutableData() {
        bitField0_ |= 0x00000001;
        return internalGetMutableData().ensureMessageMap();
      }
      /**
       * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
       */
      public Builder putData(
          java.lang.String key,
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableData().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
       */
      public Builder putAllData(
          java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus> values) {
        for (java.util.Map.Entry<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableData().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>map&lt;string, .proto.VehicleAPIAttributeStatus&gt; data = 1;</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus.Builder putDataBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatusOrBuilder> builderMap = internalGetMutableData().ensureBuilderMap();
        com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatusOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus) {
          entry = ((com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus.Builder) entry;
      }

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

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIDataGetResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VehicleAPIDataGetResult>
        PARSER = new com.google.protobuf.AbstractParser<VehicleAPIDataGetResult>() {
      @java.lang.Override
      public VehicleAPIDataGetResult 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<VehicleAPIDataGetResult> parser() {
      return PARSER;
    }

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

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

  }

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

    /**
     * <pre>
     * Value of the attribute (can be anything)
     * </pre>
     *
     * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <pre>
     * Value of the attribute (can be anything)
     * </pre>
     *
     * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
     * @return The value.
     */
    com.google.protobuf.Value getValue();
    /**
     * <pre>
     * Value of the attribute (can be anything)
     * </pre>
     *
     * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
     */
    com.google.protobuf.ValueOrBuilder getValueOrBuilder();

    /**
     * <pre>
     * UTC timestamp in milliseconds
     * </pre>
     *
     * <code>int64 timestamp_in_ms = 2 [json_name = "ts"];</code>
     * @return The timestampInMs.
     */
    long getTimestampInMs();

    /**
     * <pre>
     * Status of the attribute
     * </pre>
     *
     * <code>.proto.VehicleAPI.AttributeStatus Status = 1 [json_name = "status"];</code>
     * @return The enum numeric value on the wire for status.
     */
    int getStatusValue();
    /**
     * <pre>
     * Status of the attribute
     * </pre>
     *
     * <code>.proto.VehicleAPI.AttributeStatus Status = 1 [json_name = "status"];</code>
     * @return The status.
     */
    com.daimler.mbcarkit.proto.Acp.VehicleAPI.AttributeStatus getStatus();
  }
  /**
   * Protobuf type {@code proto.VehicleAPIAttributeStatus}
   */
  public static final class VehicleAPIAttributeStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.VehicleAPIAttributeStatus)
      VehicleAPIAttributeStatusOrBuilder {
  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= */ "",
        "VehicleAPIAttributeStatus");
    }
    // Use VehicleAPIAttributeStatus.newBuilder() to construct.
    private VehicleAPIAttributeStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VehicleAPIAttributeStatus() {
      status_ = 0;
    }

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

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

    private int bitField0_;
    public static final int VALUE_FIELD_NUMBER = 3;
    private com.google.protobuf.Value value_;
    /**
     * <pre>
     * Value of the attribute (can be anything)
     * </pre>
     *
     * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Value of the attribute (can be anything)
     * </pre>
     *
     * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
     * @return The value.
     */
    @java.lang.Override
    public com.google.protobuf.Value getValue() {
      return value_ == null ? com.google.protobuf.Value.getDefaultInstance() : value_;
    }
    /**
     * <pre>
     * Value of the attribute (can be anything)
     * </pre>
     *
     * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
     */
    @java.lang.Override
    public com.google.protobuf.ValueOrBuilder getValueOrBuilder() {
      return value_ == null ? com.google.protobuf.Value.getDefaultInstance() : value_;
    }

    public static final int TIMESTAMP_IN_MS_FIELD_NUMBER = 2;
    private long timestampInMs_ = 0L;
    /**
     * <pre>
     * UTC timestamp in milliseconds
     * </pre>
     *
     * <code>int64 timestamp_in_ms = 2 [json_name = "ts"];</code>
     * @return The timestampInMs.
     */
    @java.lang.Override
    public long getTimestampInMs() {
      return timestampInMs_;
    }

    public static final int STATUS_FIELD_NUMBER = 1;
    private int status_ = 0;
    /**
     * <pre>
     * Status of the attribute
     * </pre>
     *
     * <code>.proto.VehicleAPI.AttributeStatus Status = 1 [json_name = "status"];</code>
     * @return The enum numeric value on the wire for status.
     */
    @java.lang.Override public int getStatusValue() {
      return status_;
    }
    /**
     * <pre>
     * Status of the attribute
     * </pre>
     *
     * <code>.proto.VehicleAPI.AttributeStatus Status = 1 [json_name = "status"];</code>
     * @return The status.
     */
    @java.lang.Override public com.daimler.mbcarkit.proto.Acp.VehicleAPI.AttributeStatus getStatus() {
      com.daimler.mbcarkit.proto.Acp.VehicleAPI.AttributeStatus result = com.daimler.mbcarkit.proto.Acp.VehicleAPI.AttributeStatus.forNumber(status_);
      return result == null ? com.daimler.mbcarkit.proto.Acp.VehicleAPI.AttributeStatus.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 (status_ != com.daimler.mbcarkit.proto.Acp.VehicleAPI.AttributeStatus.VALUE_SET.getNumber()) {
        output.writeEnum(1, status_);
      }
      if (timestampInMs_ != 0L) {
        output.writeInt64(2, timestampInMs_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(3, getValue());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (status_ != com.daimler.mbcarkit.proto.Acp.VehicleAPI.AttributeStatus.VALUE_SET.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, status_);
      }
      if (timestampInMs_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, timestampInMs_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getValue());
      }
      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.Vehicleapi.VehicleAPIAttributeStatus)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus other = (com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus) obj;

      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (getTimestampInMs()
          != other.getTimestampInMs()) return false;
      if (status_ != other.status_) 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 (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      hash = (37 * hash) + TIMESTAMP_IN_MS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestampInMs());
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + status_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus 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.Vehicleapi.VehicleAPIAttributeStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus 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.Vehicleapi.VehicleAPIAttributeStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus 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.Vehicleapi.VehicleAPIAttributeStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus 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.Vehicleapi.VehicleAPIAttributeStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus 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.Vehicleapi.VehicleAPIAttributeStatus 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.VehicleAPIAttributeStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.VehicleAPIAttributeStatus)
        com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_VehicleAPIAttributeStatus_descriptor;
      }

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

      // Construct using com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          internalGetValueFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        value_ = null;
        if (valueBuilder_ != null) {
          valueBuilder_.dispose();
          valueBuilder_ = null;
        }
        timestampInMs_ = 0L;
        status_ = 0;
        return this;
      }

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

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

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

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

      private void buildPartial0(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.value_ = valueBuilder_ == null
              ? value_
              : valueBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.timestampInMs_ = timestampInMs_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.status_ = status_;
        }
        result.bitField0_ |= to_bitField0_;
      }

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

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus other) {
        if (other == com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus.getDefaultInstance()) return this;
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        if (other.getTimestampInMs() != 0L) {
          setTimestampInMs(other.getTimestampInMs());
        }
        if (other.status_ != 0) {
          setStatusValue(other.getStatusValue());
        }
        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: {
                status_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 8
              case 16: {
                timestampInMs_ = input.readInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                input.readMessage(
                    internalGetValueFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                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 com.google.protobuf.Value value_;
      private com.google.protobuf.SingleFieldBuilder<
          com.google.protobuf.Value, com.google.protobuf.Value.Builder, com.google.protobuf.ValueOrBuilder> valueBuilder_;
      /**
       * <pre>
       * Value of the attribute (can be anything)
       * </pre>
       *
       * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Value of the attribute (can be anything)
       * </pre>
       *
       * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
       * @return The value.
       */
      public com.google.protobuf.Value getValue() {
        if (valueBuilder_ == null) {
          return value_ == null ? com.google.protobuf.Value.getDefaultInstance() : value_;
        } else {
          return valueBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Value of the attribute (can be anything)
       * </pre>
       *
       * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
       */
      public Builder setValue(com.google.protobuf.Value value) {
        if (valueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
        } else {
          valueBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Value of the attribute (can be anything)
       * </pre>
       *
       * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
       */
      public Builder setValue(
          com.google.protobuf.Value.Builder builderForValue) {
        if (valueBuilder_ == null) {
          value_ = builderForValue.build();
        } else {
          valueBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Value of the attribute (can be anything)
       * </pre>
       *
       * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
       */
      public Builder mergeValue(com.google.protobuf.Value value) {
        if (valueBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            value_ != null &&
            value_ != com.google.protobuf.Value.getDefaultInstance()) {
            getValueBuilder().mergeFrom(value);
          } else {
            value_ = value;
          }
        } else {
          valueBuilder_.mergeFrom(value);
        }
        if (value_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Value of the attribute (can be anything)
       * </pre>
       *
       * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = null;
        if (valueBuilder_ != null) {
          valueBuilder_.dispose();
          valueBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Value of the attribute (can be anything)
       * </pre>
       *
       * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
       */
      public com.google.protobuf.Value.Builder getValueBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return internalGetValueFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Value of the attribute (can be anything)
       * </pre>
       *
       * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
       */
      public com.google.protobuf.ValueOrBuilder getValueOrBuilder() {
        if (valueBuilder_ != null) {
          return valueBuilder_.getMessageOrBuilder();
        } else {
          return value_ == null ?
              com.google.protobuf.Value.getDefaultInstance() : value_;
        }
      }
      /**
       * <pre>
       * Value of the attribute (can be anything)
       * </pre>
       *
       * <code>.google.protobuf.Value value = 3 [json_name = "value"];</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          com.google.protobuf.Value, com.google.protobuf.Value.Builder, com.google.protobuf.ValueOrBuilder> 
          internalGetValueFieldBuilder() {
        if (valueBuilder_ == null) {
          valueBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              com.google.protobuf.Value, com.google.protobuf.Value.Builder, com.google.protobuf.ValueOrBuilder>(
                  getValue(),
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        return valueBuilder_;
      }

      private long timestampInMs_ ;
      /**
       * <pre>
       * UTC timestamp in milliseconds
       * </pre>
       *
       * <code>int64 timestamp_in_ms = 2 [json_name = "ts"];</code>
       * @return The timestampInMs.
       */
      @java.lang.Override
      public long getTimestampInMs() {
        return timestampInMs_;
      }
      /**
       * <pre>
       * UTC timestamp in milliseconds
       * </pre>
       *
       * <code>int64 timestamp_in_ms = 2 [json_name = "ts"];</code>
       * @param value The timestampInMs to set.
       * @return This builder for chaining.
       */
      public Builder setTimestampInMs(long value) {

        timestampInMs_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * UTC timestamp in milliseconds
       * </pre>
       *
       * <code>int64 timestamp_in_ms = 2 [json_name = "ts"];</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestampInMs() {
        bitField0_ = (bitField0_ & ~0x00000002);
        timestampInMs_ = 0L;
        onChanged();
        return this;
      }

      private int status_ = 0;
      /**
       * <pre>
       * Status of the attribute
       * </pre>
       *
       * <code>.proto.VehicleAPI.AttributeStatus Status = 1 [json_name = "status"];</code>
       * @return The enum numeric value on the wire for status.
       */
      @java.lang.Override public int getStatusValue() {
        return status_;
      }
      /**
       * <pre>
       * Status of the attribute
       * </pre>
       *
       * <code>.proto.VehicleAPI.AttributeStatus Status = 1 [json_name = "status"];</code>
       * @param value The enum numeric value on the wire for status to set.
       * @return This builder for chaining.
       */
      public Builder setStatusValue(int value) {
        status_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status of the attribute
       * </pre>
       *
       * <code>.proto.VehicleAPI.AttributeStatus Status = 1 [json_name = "status"];</code>
       * @return The status.
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Acp.VehicleAPI.AttributeStatus getStatus() {
        com.daimler.mbcarkit.proto.Acp.VehicleAPI.AttributeStatus result = com.daimler.mbcarkit.proto.Acp.VehicleAPI.AttributeStatus.forNumber(status_);
        return result == null ? com.daimler.mbcarkit.proto.Acp.VehicleAPI.AttributeStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Status of the attribute
       * </pre>
       *
       * <code>.proto.VehicleAPI.AttributeStatus Status = 1 [json_name = "status"];</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(com.daimler.mbcarkit.proto.Acp.VehicleAPI.AttributeStatus value) {
        if (value == null) { throw new NullPointerException(); }
        bitField0_ |= 0x00000004;
        status_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status of the attribute
       * </pre>
       *
       * <code>.proto.VehicleAPI.AttributeStatus Status = 1 [json_name = "status"];</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = 0;
        onChanged();
        return this;
      }

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

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIAttributeStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VehicleAPIAttributeStatus>
        PARSER = new com.google.protobuf.AbstractParser<VehicleAPIAttributeStatus>() {
      @java.lang.Override
      public VehicleAPIAttributeStatus 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<VehicleAPIAttributeStatus> parser() {
      return PARSER;
    }

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

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

  }

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

    /**
     * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
     */
    java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> 
        getErrorsList();
    /**
     * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError getErrors(int index);
    /**
     * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
     */
    int getErrorsCount();
    /**
     * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
     */
    java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
        getErrorsOrBuilderList();
    /**
     * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder getErrorsOrBuilder(
        int index);

    /**
     * <pre>
     * GUID (RFC 4122)
     * </pre>
     *
     * <code>string instance_id = 2 [json_name = "instanceid"];</code>
     * @return The instanceId.
     */
    java.lang.String getInstanceId();
    /**
     * <pre>
     * GUID (RFC 4122)
     * </pre>
     *
     * <code>string instance_id = 2 [json_name = "instanceid"];</code>
     * @return The bytes for instanceId.
     */
    com.google.protobuf.ByteString
        getInstanceIdBytes();

    /**
     * <pre>
     * Name of the command
     * </pre>
     *
     * <code>string name = 3 [json_name = "name"];</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the command
     * </pre>
     *
     * <code>string name = 3 [json_name = "name"];</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Process ID
     * </pre>
     *
     * <code>int64 process_id = 4 [json_name = "processid"];</code>
     * @return The processId.
     */
    long getProcessId();

    /**
     * <pre>
     * Response parameters as defined by the command
     * </pre>
     *
     * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
     * @return Whether the responseParameters field is set.
     */
    boolean hasResponseParameters();
    /**
     * <pre>
     * Response parameters as defined by the command
     * </pre>
     *
     * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
     * @return The responseParameters.
     */
    com.google.protobuf.Value getResponseParameters();
    /**
     * <pre>
     * Response parameters as defined by the command
     * </pre>
     *
     * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
     */
    com.google.protobuf.ValueOrBuilder getResponseParametersOrBuilder();

    /**
     * <pre>
     * Current processing state
     * </pre>
     *
     * <code>.proto.VehicleAPI.CommandState state = 7 [json_name = "state"];</code>
     * @return The enum numeric value on the wire for state.
     */
    int getStateValue();
    /**
     * <pre>
     * Current processing state
     * </pre>
     *
     * <code>.proto.VehicleAPI.CommandState state = 7 [json_name = "state"];</code>
     * @return The state.
     */
    com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState getState();

    /**
     * <pre>
     * UTC timestamp in seconds (ISO 9945)
     * </pre>
     *
     * <code>int64 timestamp_in_s = 8 [json_name = "timestamp"];</code>
     * @return The timestampInS.
     */
    long getTimestampInS();

    /**
     * <pre>
     * Tracking ID. SHOULD be a GUID (RFC 4122)
     * </pre>
     *
     * <code>string tracking_id = 9 [json_name = "trackingid"];</code>
     * @return The trackingId.
     */
    java.lang.String getTrackingId();
    /**
     * <pre>
     * Tracking ID. SHOULD be a GUID (RFC 4122)
     * </pre>
     *
     * <code>string tracking_id = 9 [json_name = "trackingid"];</code>
     * @return The bytes for trackingId.
     */
    com.google.protobuf.ByteString
        getTrackingIdBytes();
  }
  /**
   * Protobuf type {@code proto.VehicleAPICommandProcessStatus}
   */
  public static final class VehicleAPICommandProcessStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.VehicleAPICommandProcessStatus)
      VehicleAPICommandProcessStatusOrBuilder {
  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= */ "",
        "VehicleAPICommandProcessStatus");
    }
    // Use VehicleAPICommandProcessStatus.newBuilder() to construct.
    private VehicleAPICommandProcessStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VehicleAPICommandProcessStatus() {
      errors_ = java.util.Collections.emptyList();
      instanceId_ = "";
      name_ = "";
      state_ = 0;
      trackingId_ = "";
    }

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

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

    private int bitField0_;
    public static final int ERRORS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> errors_;
    /**
     * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
     */
    @java.lang.Override
    public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> getErrorsList() {
      return errors_;
    }
    /**
     * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
        getErrorsOrBuilderList() {
      return errors_;
    }
    /**
     * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
     */
    @java.lang.Override
    public int getErrorsCount() {
      return errors_.size();
    }
    /**
     * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError getErrors(int index) {
      return errors_.get(index);
    }
    /**
     * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder getErrorsOrBuilder(
        int index) {
      return errors_.get(index);
    }

    public static final int INSTANCE_ID_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object instanceId_ = "";
    /**
     * <pre>
     * GUID (RFC 4122)
     * </pre>
     *
     * <code>string instance_id = 2 [json_name = "instanceid"];</code>
     * @return The instanceId.
     */
    @java.lang.Override
    public java.lang.String getInstanceId() {
      java.lang.Object ref = instanceId_;
      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();
        instanceId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * GUID (RFC 4122)
     * </pre>
     *
     * <code>string instance_id = 2 [json_name = "instanceid"];</code>
     * @return The bytes for instanceId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getInstanceIdBytes() {
      java.lang.Object ref = instanceId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        instanceId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name of the command
     * </pre>
     *
     * <code>string name = 3 [json_name = "name"];</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Name of the command
     * </pre>
     *
     * <code>string name = 3 [json_name = "name"];</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PROCESS_ID_FIELD_NUMBER = 4;
    private long processId_ = 0L;
    /**
     * <pre>
     * Process ID
     * </pre>
     *
     * <code>int64 process_id = 4 [json_name = "processid"];</code>
     * @return The processId.
     */
    @java.lang.Override
    public long getProcessId() {
      return processId_;
    }

    public static final int RESPONSE_PARAMETERS_FIELD_NUMBER = 6;
    private com.google.protobuf.Value responseParameters_;
    /**
     * <pre>
     * Response parameters as defined by the command
     * </pre>
     *
     * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
     * @return Whether the responseParameters field is set.
     */
    @java.lang.Override
    public boolean hasResponseParameters() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Response parameters as defined by the command
     * </pre>
     *
     * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
     * @return The responseParameters.
     */
    @java.lang.Override
    public com.google.protobuf.Value getResponseParameters() {
      return responseParameters_ == null ? com.google.protobuf.Value.getDefaultInstance() : responseParameters_;
    }
    /**
     * <pre>
     * Response parameters as defined by the command
     * </pre>
     *
     * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
     */
    @java.lang.Override
    public com.google.protobuf.ValueOrBuilder getResponseParametersOrBuilder() {
      return responseParameters_ == null ? com.google.protobuf.Value.getDefaultInstance() : responseParameters_;
    }

    public static final int STATE_FIELD_NUMBER = 7;
    private int state_ = 0;
    /**
     * <pre>
     * Current processing state
     * </pre>
     *
     * <code>.proto.VehicleAPI.CommandState state = 7 [json_name = "state"];</code>
     * @return The enum numeric value on the wire for state.
     */
    @java.lang.Override public int getStateValue() {
      return state_;
    }
    /**
     * <pre>
     * Current processing state
     * </pre>
     *
     * <code>.proto.VehicleAPI.CommandState state = 7 [json_name = "state"];</code>
     * @return The state.
     */
    @java.lang.Override public com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState getState() {
      com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState result = com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.forNumber(state_);
      return result == null ? com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.UNRECOGNIZED : result;
    }

    public static final int TIMESTAMP_IN_S_FIELD_NUMBER = 8;
    private long timestampInS_ = 0L;
    /**
     * <pre>
     * UTC timestamp in seconds (ISO 9945)
     * </pre>
     *
     * <code>int64 timestamp_in_s = 8 [json_name = "timestamp"];</code>
     * @return The timestampInS.
     */
    @java.lang.Override
    public long getTimestampInS() {
      return timestampInS_;
    }

    public static final int TRACKING_ID_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile java.lang.Object trackingId_ = "";
    /**
     * <pre>
     * Tracking ID. SHOULD be a GUID (RFC 4122)
     * </pre>
     *
     * <code>string tracking_id = 9 [json_name = "trackingid"];</code>
     * @return The trackingId.
     */
    @java.lang.Override
    public java.lang.String getTrackingId() {
      java.lang.Object ref = trackingId_;
      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();
        trackingId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Tracking ID. SHOULD be a GUID (RFC 4122)
     * </pre>
     *
     * <code>string tracking_id = 9 [json_name = "trackingid"];</code>
     * @return The bytes for trackingId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTrackingIdBytes() {
      java.lang.Object ref = trackingId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        trackingId_ = 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 {
      for (int i = 0; i < errors_.size(); i++) {
        output.writeMessage(1, errors_.get(i));
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(instanceId_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, instanceId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, name_);
      }
      if (processId_ != 0L) {
        output.writeInt64(4, processId_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(6, getResponseParameters());
      }
      if (state_ != com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.UNKNOWN_COMMAND_STATE.getNumber()) {
        output.writeEnum(7, state_);
      }
      if (timestampInS_ != 0L) {
        output.writeInt64(8, timestampInS_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(trackingId_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, trackingId_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < errors_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, errors_.get(i));
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(instanceId_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, instanceId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, name_);
      }
      if (processId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, processId_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getResponseParameters());
      }
      if (state_ != com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.UNKNOWN_COMMAND_STATE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(7, state_);
      }
      if (timestampInS_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, timestampInS_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(trackingId_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(9, trackingId_);
      }
      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.Vehicleapi.VehicleAPICommandProcessStatus)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus other = (com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus) obj;

      if (!getErrorsList()
          .equals(other.getErrorsList())) return false;
      if (!getInstanceId()
          .equals(other.getInstanceId())) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (getProcessId()
          != other.getProcessId()) return false;
      if (hasResponseParameters() != other.hasResponseParameters()) return false;
      if (hasResponseParameters()) {
        if (!getResponseParameters()
            .equals(other.getResponseParameters())) return false;
      }
      if (state_ != other.state_) return false;
      if (getTimestampInS()
          != other.getTimestampInS()) return false;
      if (!getTrackingId()
          .equals(other.getTrackingId())) 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 (getErrorsCount() > 0) {
        hash = (37 * hash) + ERRORS_FIELD_NUMBER;
        hash = (53 * hash) + getErrorsList().hashCode();
      }
      hash = (37 * hash) + INSTANCE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getInstanceId().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + PROCESS_ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getProcessId());
      if (hasResponseParameters()) {
        hash = (37 * hash) + RESPONSE_PARAMETERS_FIELD_NUMBER;
        hash = (53 * hash) + getResponseParameters().hashCode();
      }
      hash = (37 * hash) + STATE_FIELD_NUMBER;
      hash = (53 * hash) + state_;
      hash = (37 * hash) + TIMESTAMP_IN_S_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestampInS());
      hash = (37 * hash) + TRACKING_ID_FIELD_NUMBER;
      hash = (53 * hash) + getTrackingId().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus 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.Vehicleapi.VehicleAPICommandProcessStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus 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.Vehicleapi.VehicleAPICommandProcessStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus 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.Vehicleapi.VehicleAPICommandProcessStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus 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.Vehicleapi.VehicleAPICommandProcessStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus 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.Vehicleapi.VehicleAPICommandProcessStatus 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.VehicleAPICommandProcessStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.VehicleAPICommandProcessStatus)
        com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_VehicleAPICommandProcessStatus_descriptor;
      }

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

      // Construct using com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          internalGetErrorsFieldBuilder();
          internalGetResponseParametersFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (errorsBuilder_ == null) {
          errors_ = java.util.Collections.emptyList();
        } else {
          errors_ = null;
          errorsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        instanceId_ = "";
        name_ = "";
        processId_ = 0L;
        responseParameters_ = null;
        if (responseParametersBuilder_ != null) {
          responseParametersBuilder_.dispose();
          responseParametersBuilder_ = null;
        }
        state_ = 0;
        timestampInS_ = 0L;
        trackingId_ = "";
        return this;
      }

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

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

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

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

      private void buildPartialRepeatedFields(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus result) {
        if (errorsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            errors_ = java.util.Collections.unmodifiableList(errors_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.errors_ = errors_;
        } else {
          result.errors_ = errorsBuilder_.build();
        }
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.instanceId_ = instanceId_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.name_ = name_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.processId_ = processId_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.responseParameters_ = responseParametersBuilder_ == null
              ? responseParameters_
              : responseParametersBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.state_ = state_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.timestampInS_ = timestampInS_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.trackingId_ = trackingId_;
        }
        result.bitField0_ |= to_bitField0_;
      }

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

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus other) {
        if (other == com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus.getDefaultInstance()) return this;
        if (errorsBuilder_ == null) {
          if (!other.errors_.isEmpty()) {
            if (errors_.isEmpty()) {
              errors_ = other.errors_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureErrorsIsMutable();
              errors_.addAll(other.errors_);
            }
            onChanged();
          }
        } else {
          if (!other.errors_.isEmpty()) {
            if (errorsBuilder_.isEmpty()) {
              errorsBuilder_.dispose();
              errorsBuilder_ = null;
              errors_ = other.errors_;
              bitField0_ = (bitField0_ & ~0x00000001);
              errorsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   internalGetErrorsFieldBuilder() : null;
            } else {
              errorsBuilder_.addAllMessages(other.errors_);
            }
          }
        }
        if (!other.getInstanceId().isEmpty()) {
          instanceId_ = other.instanceId_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.getProcessId() != 0L) {
          setProcessId(other.getProcessId());
        }
        if (other.hasResponseParameters()) {
          mergeResponseParameters(other.getResponseParameters());
        }
        if (other.state_ != 0) {
          setStateValue(other.getStateValue());
        }
        if (other.getTimestampInS() != 0L) {
          setTimestampInS(other.getTimestampInS());
        }
        if (!other.getTrackingId().isEmpty()) {
          trackingId_ = other.trackingId_;
          bitField0_ |= 0x00000080;
          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: {
                com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError m =
                    input.readMessage(
                        com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.parser(),
                        extensionRegistry);
                if (errorsBuilder_ == null) {
                  ensureErrorsIsMutable();
                  errors_.add(m);
                } else {
                  errorsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                instanceId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                name_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                processId_ = input.readInt64();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 50: {
                input.readMessage(
                    internalGetResponseParametersFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 50
              case 56: {
                state_ = input.readEnum();
                bitField0_ |= 0x00000020;
                break;
              } // case 56
              case 64: {
                timestampInS_ = input.readInt64();
                bitField0_ |= 0x00000040;
                break;
              } // case 64
              case 74: {
                trackingId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000080;
                break;
              } // case 74
              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.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> errors_ =
        java.util.Collections.emptyList();
      private void ensureErrorsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          errors_ = new java.util.ArrayList<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError>(errors_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> errorsBuilder_;

      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> getErrorsList() {
        if (errorsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(errors_);
        } else {
          return errorsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public int getErrorsCount() {
        if (errorsBuilder_ == null) {
          return errors_.size();
        } else {
          return errorsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError getErrors(int index) {
        if (errorsBuilder_ == null) {
          return errors_.get(index);
        } else {
          return errorsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public Builder setErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError value) {
        if (errorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureErrorsIsMutable();
          errors_.set(index, value);
          onChanged();
        } else {
          errorsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public Builder setErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder builderForValue) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          errors_.set(index, builderForValue.build());
          onChanged();
        } else {
          errorsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public Builder addErrors(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError value) {
        if (errorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureErrorsIsMutable();
          errors_.add(value);
          onChanged();
        } else {
          errorsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public Builder addErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError value) {
        if (errorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureErrorsIsMutable();
          errors_.add(index, value);
          onChanged();
        } else {
          errorsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public Builder addErrors(
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder builderForValue) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          errors_.add(builderForValue.build());
          onChanged();
        } else {
          errorsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public Builder addErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder builderForValue) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          errors_.add(index, builderForValue.build());
          onChanged();
        } else {
          errorsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public Builder addAllErrors(
          java.lang.Iterable<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> values) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, errors_);
          onChanged();
        } else {
          errorsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public Builder clearErrors() {
        if (errorsBuilder_ == null) {
          errors_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          errorsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public Builder removeErrors(int index) {
        if (errorsBuilder_ == null) {
          ensureErrorsIsMutable();
          errors_.remove(index);
          onChanged();
        } else {
          errorsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder getErrorsBuilder(
          int index) {
        return internalGetErrorsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder getErrorsOrBuilder(
          int index) {
        if (errorsBuilder_ == null) {
          return errors_.get(index);  } else {
          return errorsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
           getErrorsOrBuilderList() {
        if (errorsBuilder_ != null) {
          return errorsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(errors_);
        }
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder addErrorsBuilder() {
        return internalGetErrorsFieldBuilder().addBuilder(
            com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.getDefaultInstance());
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder addErrorsBuilder(
          int index) {
        return internalGetErrorsFieldBuilder().addBuilder(
            index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.getDefaultInstance());
      }
      /**
       * <code>repeated .proto.VehicleAPIError errors = 1 [json_name = "errors"];</code>
       */
      public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder> 
           getErrorsBuilderList() {
        return internalGetErrorsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
          internalGetErrorsFieldBuilder() {
        if (errorsBuilder_ == null) {
          errorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder>(
                  errors_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          errors_ = null;
        }
        return errorsBuilder_;
      }

      private java.lang.Object instanceId_ = "";
      /**
       * <pre>
       * GUID (RFC 4122)
       * </pre>
       *
       * <code>string instance_id = 2 [json_name = "instanceid"];</code>
       * @return The instanceId.
       */
      public java.lang.String getInstanceId() {
        java.lang.Object ref = instanceId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          instanceId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * GUID (RFC 4122)
       * </pre>
       *
       * <code>string instance_id = 2 [json_name = "instanceid"];</code>
       * @return The bytes for instanceId.
       */
      public com.google.protobuf.ByteString
          getInstanceIdBytes() {
        java.lang.Object ref = instanceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          instanceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * GUID (RFC 4122)
       * </pre>
       *
       * <code>string instance_id = 2 [json_name = "instanceid"];</code>
       * @param value The instanceId to set.
       * @return This builder for chaining.
       */
      public Builder setInstanceId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        instanceId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * GUID (RFC 4122)
       * </pre>
       *
       * <code>string instance_id = 2 [json_name = "instanceid"];</code>
       * @return This builder for chaining.
       */
      public Builder clearInstanceId() {
        instanceId_ = getDefaultInstance().getInstanceId();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * GUID (RFC 4122)
       * </pre>
       *
       * <code>string instance_id = 2 [json_name = "instanceid"];</code>
       * @param value The bytes for instanceId to set.
       * @return This builder for chaining.
       */
      public Builder setInstanceIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        instanceId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name of the command
       * </pre>
       *
       * <code>string name = 3 [json_name = "name"];</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of the command
       * </pre>
       *
       * <code>string name = 3 [json_name = "name"];</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name of the command
       * </pre>
       *
       * <code>string name = 3 [json_name = "name"];</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the command
       * </pre>
       *
       * <code>string name = 3 [json_name = "name"];</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the command
       * </pre>
       *
       * <code>string name = 3 [json_name = "name"];</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private long processId_ ;
      /**
       * <pre>
       * Process ID
       * </pre>
       *
       * <code>int64 process_id = 4 [json_name = "processid"];</code>
       * @return The processId.
       */
      @java.lang.Override
      public long getProcessId() {
        return processId_;
      }
      /**
       * <pre>
       * Process ID
       * </pre>
       *
       * <code>int64 process_id = 4 [json_name = "processid"];</code>
       * @param value The processId to set.
       * @return This builder for chaining.
       */
      public Builder setProcessId(long value) {

        processId_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Process ID
       * </pre>
       *
       * <code>int64 process_id = 4 [json_name = "processid"];</code>
       * @return This builder for chaining.
       */
      public Builder clearProcessId() {
        bitField0_ = (bitField0_ & ~0x00000008);
        processId_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.Value responseParameters_;
      private com.google.protobuf.SingleFieldBuilder<
          com.google.protobuf.Value, com.google.protobuf.Value.Builder, com.google.protobuf.ValueOrBuilder> responseParametersBuilder_;
      /**
       * <pre>
       * Response parameters as defined by the command
       * </pre>
       *
       * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
       * @return Whether the responseParameters field is set.
       */
      public boolean hasResponseParameters() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Response parameters as defined by the command
       * </pre>
       *
       * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
       * @return The responseParameters.
       */
      public com.google.protobuf.Value getResponseParameters() {
        if (responseParametersBuilder_ == null) {
          return responseParameters_ == null ? com.google.protobuf.Value.getDefaultInstance() : responseParameters_;
        } else {
          return responseParametersBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Response parameters as defined by the command
       * </pre>
       *
       * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
       */
      public Builder setResponseParameters(com.google.protobuf.Value value) {
        if (responseParametersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          responseParameters_ = value;
        } else {
          responseParametersBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Response parameters as defined by the command
       * </pre>
       *
       * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
       */
      public Builder setResponseParameters(
          com.google.protobuf.Value.Builder builderForValue) {
        if (responseParametersBuilder_ == null) {
          responseParameters_ = builderForValue.build();
        } else {
          responseParametersBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Response parameters as defined by the command
       * </pre>
       *
       * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
       */
      public Builder mergeResponseParameters(com.google.protobuf.Value value) {
        if (responseParametersBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            responseParameters_ != null &&
            responseParameters_ != com.google.protobuf.Value.getDefaultInstance()) {
            getResponseParametersBuilder().mergeFrom(value);
          } else {
            responseParameters_ = value;
          }
        } else {
          responseParametersBuilder_.mergeFrom(value);
        }
        if (responseParameters_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Response parameters as defined by the command
       * </pre>
       *
       * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
       */
      public Builder clearResponseParameters() {
        bitField0_ = (bitField0_ & ~0x00000010);
        responseParameters_ = null;
        if (responseParametersBuilder_ != null) {
          responseParametersBuilder_.dispose();
          responseParametersBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Response parameters as defined by the command
       * </pre>
       *
       * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
       */
      public com.google.protobuf.Value.Builder getResponseParametersBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return internalGetResponseParametersFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Response parameters as defined by the command
       * </pre>
       *
       * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
       */
      public com.google.protobuf.ValueOrBuilder getResponseParametersOrBuilder() {
        if (responseParametersBuilder_ != null) {
          return responseParametersBuilder_.getMessageOrBuilder();
        } else {
          return responseParameters_ == null ?
              com.google.protobuf.Value.getDefaultInstance() : responseParameters_;
        }
      }
      /**
       * <pre>
       * Response parameters as defined by the command
       * </pre>
       *
       * <code>.google.protobuf.Value response_parameters = 6 [json_name = "responseparameters"];</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          com.google.protobuf.Value, com.google.protobuf.Value.Builder, com.google.protobuf.ValueOrBuilder> 
          internalGetResponseParametersFieldBuilder() {
        if (responseParametersBuilder_ == null) {
          responseParametersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              com.google.protobuf.Value, com.google.protobuf.Value.Builder, com.google.protobuf.ValueOrBuilder>(
                  getResponseParameters(),
                  getParentForChildren(),
                  isClean());
          responseParameters_ = null;
        }
        return responseParametersBuilder_;
      }

      private int state_ = 0;
      /**
       * <pre>
       * Current processing state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 7 [json_name = "state"];</code>
       * @return The enum numeric value on the wire for state.
       */
      @java.lang.Override public int getStateValue() {
        return state_;
      }
      /**
       * <pre>
       * Current processing state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 7 [json_name = "state"];</code>
       * @param value The enum numeric value on the wire for state to set.
       * @return This builder for chaining.
       */
      public Builder setStateValue(int value) {
        state_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Current processing state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 7 [json_name = "state"];</code>
       * @return The state.
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState getState() {
        com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState result = com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.forNumber(state_);
        return result == null ? com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Current processing state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 7 [json_name = "state"];</code>
       * @param value The state to set.
       * @return This builder for chaining.
       */
      public Builder setState(com.daimler.mbcarkit.proto.Acp.VehicleAPI.CommandState value) {
        if (value == null) { throw new NullPointerException(); }
        bitField0_ |= 0x00000020;
        state_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Current processing state
       * </pre>
       *
       * <code>.proto.VehicleAPI.CommandState state = 7 [json_name = "state"];</code>
       * @return This builder for chaining.
       */
      public Builder clearState() {
        bitField0_ = (bitField0_ & ~0x00000020);
        state_ = 0;
        onChanged();
        return this;
      }

      private long timestampInS_ ;
      /**
       * <pre>
       * UTC timestamp in seconds (ISO 9945)
       * </pre>
       *
       * <code>int64 timestamp_in_s = 8 [json_name = "timestamp"];</code>
       * @return The timestampInS.
       */
      @java.lang.Override
      public long getTimestampInS() {
        return timestampInS_;
      }
      /**
       * <pre>
       * UTC timestamp in seconds (ISO 9945)
       * </pre>
       *
       * <code>int64 timestamp_in_s = 8 [json_name = "timestamp"];</code>
       * @param value The timestampInS to set.
       * @return This builder for chaining.
       */
      public Builder setTimestampInS(long value) {

        timestampInS_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * UTC timestamp in seconds (ISO 9945)
       * </pre>
       *
       * <code>int64 timestamp_in_s = 8 [json_name = "timestamp"];</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestampInS() {
        bitField0_ = (bitField0_ & ~0x00000040);
        timestampInS_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object trackingId_ = "";
      /**
       * <pre>
       * Tracking ID. SHOULD be a GUID (RFC 4122)
       * </pre>
       *
       * <code>string tracking_id = 9 [json_name = "trackingid"];</code>
       * @return The trackingId.
       */
      public java.lang.String getTrackingId() {
        java.lang.Object ref = trackingId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          trackingId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Tracking ID. SHOULD be a GUID (RFC 4122)
       * </pre>
       *
       * <code>string tracking_id = 9 [json_name = "trackingid"];</code>
       * @return The bytes for trackingId.
       */
      public com.google.protobuf.ByteString
          getTrackingIdBytes() {
        java.lang.Object ref = trackingId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          trackingId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Tracking ID. SHOULD be a GUID (RFC 4122)
       * </pre>
       *
       * <code>string tracking_id = 9 [json_name = "trackingid"];</code>
       * @param value The trackingId to set.
       * @return This builder for chaining.
       */
      public Builder setTrackingId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        trackingId_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Tracking ID. SHOULD be a GUID (RFC 4122)
       * </pre>
       *
       * <code>string tracking_id = 9 [json_name = "trackingid"];</code>
       * @return This builder for chaining.
       */
      public Builder clearTrackingId() {
        trackingId_ = getDefaultInstance().getTrackingId();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Tracking ID. SHOULD be a GUID (RFC 4122)
       * </pre>
       *
       * <code>string tracking_id = 9 [json_name = "trackingid"];</code>
       * @param value The bytes for trackingId to set.
       * @return This builder for chaining.
       */
      public Builder setTrackingIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        trackingId_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

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

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPICommandProcessStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VehicleAPICommandProcessStatus>
        PARSER = new com.google.protobuf.AbstractParser<VehicleAPICommandProcessStatus>() {
      @java.lang.Override
      public VehicleAPICommandProcessStatus 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<VehicleAPICommandProcessStatus> parser() {
      return PARSER;
    }

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

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

  }

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

    /**
     * <code>string code = 1 [json_name = "error-code"];</code>
     * @return The code.
     */
    java.lang.String getCode();
    /**
     * <code>string code = 1 [json_name = "error-code"];</code>
     * @return The bytes for code.
     */
    com.google.protobuf.ByteString
        getCodeBytes();

    /**
     * <code>string message = 2 [json_name = "error-message"];</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <code>string message = 2 [json_name = "error-message"];</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();

    /**
     * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
     */
    int getAttributesCount();
    /**
     * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
     */
    boolean containsAttributes(
        java.lang.String key);
    /**
     * Use {@link #getAttributesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, com.google.protobuf.Value>
    getAttributes();
    /**
     * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
     */
    java.util.Map<java.lang.String, com.google.protobuf.Value>
    getAttributesMap();
    /**
     * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
     */
    /* nullable */
com.google.protobuf.Value getAttributesOrDefault(
        java.lang.String key,
        /* nullable */
com.google.protobuf.Value defaultValue);
    /**
     * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
     */
    com.google.protobuf.Value getAttributesOrThrow(
        java.lang.String key);

    /**
     * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
     */
    java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> 
        getSubErrorsList();
    /**
     * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError getSubErrors(int index);
    /**
     * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
     */
    int getSubErrorsCount();
    /**
     * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
     */
    java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
        getSubErrorsOrBuilderList();
    /**
     * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder getSubErrorsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code proto.VehicleAPIError}
   */
  public static final class VehicleAPIError extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.VehicleAPIError)
      VehicleAPIErrorOrBuilder {
  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= */ "",
        "VehicleAPIError");
    }
    // Use VehicleAPIError.newBuilder() to construct.
    private VehicleAPIError(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VehicleAPIError() {
      code_ = "";
      message_ = "";
      subErrors_ = java.util.Collections.emptyList();
    }

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

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

    public static final int CODE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object code_ = "";
    /**
     * <code>string code = 1 [json_name = "error-code"];</code>
     * @return The code.
     */
    @java.lang.Override
    public java.lang.String getCode() {
      java.lang.Object ref = code_;
      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();
        code_ = s;
        return s;
      }
    }
    /**
     * <code>string code = 1 [json_name = "error-code"];</code>
     * @return The bytes for code.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCodeBytes() {
      java.lang.Object ref = code_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        code_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MESSAGE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <code>string message = 2 [json_name = "error-message"];</code>
     * @return The message.
     */
    @java.lang.Override
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      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();
        message_ = s;
        return s;
      }
    }
    /**
     * <code>string message = 2 [json_name = "error-message"];</code>
     * @return The bytes for message.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ATTRIBUTES_FIELD_NUMBER = 3;
    private static final class AttributesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, com.google.protobuf.Value> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, com.google.protobuf.Value>newDefaultInstance(
                  com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_VehicleAPIError_AttributesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  com.google.protobuf.Value.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, com.google.protobuf.Value> attributes_;
    private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.Value>
    internalGetAttributes() {
      if (attributes_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            AttributesDefaultEntryHolder.defaultEntry);
      }
      return attributes_;
    }
    public int getAttributesCount() {
      return internalGetAttributes().getMap().size();
    }
    /**
     * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
     */
    @java.lang.Override
    public boolean containsAttributes(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetAttributes().getMap().containsKey(key);
    }
    /**
     * Use {@link #getAttributesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, com.google.protobuf.Value> getAttributes() {
      return getAttributesMap();
    }
    /**
     * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, com.google.protobuf.Value> getAttributesMap() {
      return internalGetAttributes().getMap();
    }
    /**
     * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
     */
    @java.lang.Override
    public /* nullable */
com.google.protobuf.Value getAttributesOrDefault(
        java.lang.String key,
        /* nullable */
com.google.protobuf.Value defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.google.protobuf.Value> map =
          internalGetAttributes().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
     */
    @java.lang.Override
    public com.google.protobuf.Value getAttributesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.google.protobuf.Value> map =
          internalGetAttributes().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int SUB_ERRORS_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> subErrors_;
    /**
     * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
     */
    @java.lang.Override
    public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> getSubErrorsList() {
      return subErrors_;
    }
    /**
     * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
        getSubErrorsOrBuilderList() {
      return subErrors_;
    }
    /**
     * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
     */
    @java.lang.Override
    public int getSubErrorsCount() {
      return subErrors_.size();
    }
    /**
     * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError getSubErrors(int index) {
      return subErrors_.get(index);
    }
    /**
     * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder getSubErrorsOrBuilder(
        int index) {
      return subErrors_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(code_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, code_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(message_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, message_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetAttributes(),
          AttributesDefaultEntryHolder.defaultEntry,
          3);
      for (int i = 0; i < subErrors_.size(); i++) {
        output.writeMessage(4, subErrors_.get(i));
      }
      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(code_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, code_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(message_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, message_);
      }
      for (java.util.Map.Entry<java.lang.String, com.google.protobuf.Value> entry
           : internalGetAttributes().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.Value>
        attributes__ = AttributesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, attributes__);
      }
      for (int i = 0; i < subErrors_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, subErrors_.get(i));
      }
      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.Vehicleapi.VehicleAPIError)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError other = (com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError) obj;

      if (!getCode()
          .equals(other.getCode())) return false;
      if (!getMessage()
          .equals(other.getMessage())) return false;
      if (!internalGetAttributes().equals(
          other.internalGetAttributes())) return false;
      if (!getSubErrorsList()
          .equals(other.getSubErrorsList())) 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) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode().hashCode();
      hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getMessage().hashCode();
      if (!internalGetAttributes().getMap().isEmpty()) {
        hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetAttributes().hashCode();
      }
      if (getSubErrorsCount() > 0) {
        hash = (37 * hash) + SUB_ERRORS_FIELD_NUMBER;
        hash = (53 * hash) + getSubErrorsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError 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.Vehicleapi.VehicleAPIError parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError 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.Vehicleapi.VehicleAPIError parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError 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.Vehicleapi.VehicleAPIError parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError 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.Vehicleapi.VehicleAPIError parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError 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.Vehicleapi.VehicleAPIError 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.VehicleAPIError}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.VehicleAPIError)
        com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_VehicleAPIError_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 3:
            return internalGetAttributes();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 3:
            return internalGetMutableAttributes();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_VehicleAPIError_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.class, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder.class);
      }

      // Construct using com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        code_ = "";
        message_ = "";
        internalGetMutableAttributes().clear();
        if (subErrorsBuilder_ == null) {
          subErrors_ = java.util.Collections.emptyList();
        } else {
          subErrors_ = null;
          subErrorsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

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

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

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

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

      private void buildPartialRepeatedFields(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError result) {
        if (subErrorsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            subErrors_ = java.util.Collections.unmodifiableList(subErrors_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.subErrors_ = subErrors_;
        } else {
          result.subErrors_ = subErrorsBuilder_.build();
        }
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.code_ = code_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.message_ = message_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.attributes_ = internalGetAttributes().build(AttributesDefaultEntryHolder.defaultEntry);
        }
      }

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

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError other) {
        if (other == com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.getDefaultInstance()) return this;
        if (!other.getCode().isEmpty()) {
          code_ = other.code_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getMessage().isEmpty()) {
          message_ = other.message_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        internalGetMutableAttributes().mergeFrom(
            other.internalGetAttributes());
        bitField0_ |= 0x00000004;
        if (subErrorsBuilder_ == null) {
          if (!other.subErrors_.isEmpty()) {
            if (subErrors_.isEmpty()) {
              subErrors_ = other.subErrors_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureSubErrorsIsMutable();
              subErrors_.addAll(other.subErrors_);
            }
            onChanged();
          }
        } else {
          if (!other.subErrors_.isEmpty()) {
            if (subErrorsBuilder_.isEmpty()) {
              subErrorsBuilder_.dispose();
              subErrorsBuilder_ = null;
              subErrors_ = other.subErrors_;
              bitField0_ = (bitField0_ & ~0x00000008);
              subErrorsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   internalGetSubErrorsFieldBuilder() : null;
            } else {
              subErrorsBuilder_.addAllMessages(other.subErrors_);
            }
          }
        }
        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: {
                code_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                message_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.Value>
                attributes__ = input.readMessage(
                    AttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableAttributes().ensureBuilderMap().put(
                    attributes__.getKey(), attributes__.getValue());
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError m =
                    input.readMessage(
                        com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.parser(),
                        extensionRegistry);
                if (subErrorsBuilder_ == null) {
                  ensureSubErrorsIsMutable();
                  subErrors_.add(m);
                } else {
                  subErrorsBuilder_.addMessage(m);
                }
                break;
              } // case 34
              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 code_ = "";
      /**
       * <code>string code = 1 [json_name = "error-code"];</code>
       * @return The code.
       */
      public java.lang.String getCode() {
        java.lang.Object ref = code_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          code_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string code = 1 [json_name = "error-code"];</code>
       * @return The bytes for code.
       */
      public com.google.protobuf.ByteString
          getCodeBytes() {
        java.lang.Object ref = code_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          code_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string code = 1 [json_name = "error-code"];</code>
       * @param value The code to set.
       * @return This builder for chaining.
       */
      public Builder setCode(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        code_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>string code = 1 [json_name = "error-code"];</code>
       * @return This builder for chaining.
       */
      public Builder clearCode() {
        code_ = getDefaultInstance().getCode();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>string code = 1 [json_name = "error-code"];</code>
       * @param value The bytes for code to set.
       * @return This builder for chaining.
       */
      public Builder setCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        code_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <code>string message = 2 [json_name = "error-message"];</code>
       * @return The message.
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          message_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string message = 2 [json_name = "error-message"];</code>
       * @return The bytes for message.
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string message = 2 [json_name = "error-message"];</code>
       * @param value The message to set.
       * @return This builder for chaining.
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        message_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>string message = 2 [json_name = "error-message"];</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>string message = 2 [json_name = "error-message"];</code>
       * @param value The bytes for message to set.
       * @return This builder for chaining.
       */
      public Builder setMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        message_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private static final class AttributesConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, com.google.protobuf.ValueOrBuilder, com.google.protobuf.Value> {
        @java.lang.Override
        public com.google.protobuf.Value build(com.google.protobuf.ValueOrBuilder val) {
          if (val instanceof com.google.protobuf.Value) { return (com.google.protobuf.Value) val; }
          return ((com.google.protobuf.Value.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.Value> defaultEntry() {
          return AttributesDefaultEntryHolder.defaultEntry;
        }
      };
      private static final AttributesConverter attributesConverter = new AttributesConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, com.google.protobuf.ValueOrBuilder, com.google.protobuf.Value, com.google.protobuf.Value.Builder> attributes_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, com.google.protobuf.ValueOrBuilder, com.google.protobuf.Value, com.google.protobuf.Value.Builder>
          internalGetAttributes() {
        if (attributes_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(attributesConverter);
        }
        return attributes_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, com.google.protobuf.ValueOrBuilder, com.google.protobuf.Value, com.google.protobuf.Value.Builder>
          internalGetMutableAttributes() {
        if (attributes_ == null) {
          attributes_ = new com.google.protobuf.MapFieldBuilder<>(attributesConverter);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return attributes_;
      }
      public int getAttributesCount() {
        return internalGetAttributes().ensureBuilderMap().size();
      }
      /**
       * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
       */
      @java.lang.Override
      public boolean containsAttributes(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetAttributes().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getAttributesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.google.protobuf.Value> getAttributes() {
        return getAttributesMap();
      }
      /**
       * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, com.google.protobuf.Value> getAttributesMap() {
        return internalGetAttributes().getImmutableMap();
      }
      /**
       * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
       */
      @java.lang.Override
      public /* nullable */
com.google.protobuf.Value getAttributesOrDefault(
          java.lang.String key,
          /* nullable */
com.google.protobuf.Value defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.google.protobuf.ValueOrBuilder> map = internalGetMutableAttributes().ensureBuilderMap();
        return map.containsKey(key) ? attributesConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
       */
      @java.lang.Override
      public com.google.protobuf.Value getAttributesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.google.protobuf.ValueOrBuilder> map = internalGetMutableAttributes().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return attributesConverter.build(map.get(key));
      }
      public Builder clearAttributes() {
        bitField0_ = (bitField0_ & ~0x00000004);
        internalGetMutableAttributes().clear();
        return this;
      }
      /**
       * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
       */
      public Builder removeAttributes(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableAttributes().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.google.protobuf.Value>
          getMutableAttributes() {
        bitField0_ |= 0x00000004;
        return internalGetMutableAttributes().ensureMessageMap();
      }
      /**
       * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
       */
      public Builder putAttributes(
          java.lang.String key,
          com.google.protobuf.Value value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableAttributes().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
       */
      public Builder putAllAttributes(
          java.util.Map<java.lang.String, com.google.protobuf.Value> values) {
        for (java.util.Map.Entry<java.lang.String, com.google.protobuf.Value> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableAttributes().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>map&lt;string, .google.protobuf.Value&gt; attributes = 3 [json_name = "attributes"];</code>
       */
      public com.google.protobuf.Value.Builder putAttributesBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, com.google.protobuf.ValueOrBuilder> builderMap = internalGetMutableAttributes().ensureBuilderMap();
        com.google.protobuf.ValueOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = com.google.protobuf.Value.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof com.google.protobuf.Value) {
          entry = ((com.google.protobuf.Value) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (com.google.protobuf.Value.Builder) entry;
      }

      private java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> subErrors_ =
        java.util.Collections.emptyList();
      private void ensureSubErrorsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          subErrors_ = new java.util.ArrayList<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError>(subErrors_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> subErrorsBuilder_;

      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> getSubErrorsList() {
        if (subErrorsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(subErrors_);
        } else {
          return subErrorsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public int getSubErrorsCount() {
        if (subErrorsBuilder_ == null) {
          return subErrors_.size();
        } else {
          return subErrorsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError getSubErrors(int index) {
        if (subErrorsBuilder_ == null) {
          return subErrors_.get(index);
        } else {
          return subErrorsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public Builder setSubErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError value) {
        if (subErrorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubErrorsIsMutable();
          subErrors_.set(index, value);
          onChanged();
        } else {
          subErrorsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public Builder setSubErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder builderForValue) {
        if (subErrorsBuilder_ == null) {
          ensureSubErrorsIsMutable();
          subErrors_.set(index, builderForValue.build());
          onChanged();
        } else {
          subErrorsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public Builder addSubErrors(com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError value) {
        if (subErrorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubErrorsIsMutable();
          subErrors_.add(value);
          onChanged();
        } else {
          subErrorsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public Builder addSubErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError value) {
        if (subErrorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubErrorsIsMutable();
          subErrors_.add(index, value);
          onChanged();
        } else {
          subErrorsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public Builder addSubErrors(
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder builderForValue) {
        if (subErrorsBuilder_ == null) {
          ensureSubErrorsIsMutable();
          subErrors_.add(builderForValue.build());
          onChanged();
        } else {
          subErrorsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public Builder addSubErrors(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder builderForValue) {
        if (subErrorsBuilder_ == null) {
          ensureSubErrorsIsMutable();
          subErrors_.add(index, builderForValue.build());
          onChanged();
        } else {
          subErrorsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public Builder addAllSubErrors(
          java.lang.Iterable<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError> values) {
        if (subErrorsBuilder_ == null) {
          ensureSubErrorsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, subErrors_);
          onChanged();
        } else {
          subErrorsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public Builder clearSubErrors() {
        if (subErrorsBuilder_ == null) {
          subErrors_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          subErrorsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public Builder removeSubErrors(int index) {
        if (subErrorsBuilder_ == null) {
          ensureSubErrorsIsMutable();
          subErrors_.remove(index);
          onChanged();
        } else {
          subErrorsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder getSubErrorsBuilder(
          int index) {
        return internalGetSubErrorsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder getSubErrorsOrBuilder(
          int index) {
        if (subErrorsBuilder_ == null) {
          return subErrors_.get(index);  } else {
          return subErrorsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
           getSubErrorsOrBuilderList() {
        if (subErrorsBuilder_ != null) {
          return subErrorsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(subErrors_);
        }
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder addSubErrorsBuilder() {
        return internalGetSubErrorsFieldBuilder().addBuilder(
            com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.getDefaultInstance());
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder addSubErrorsBuilder(
          int index) {
        return internalGetSubErrorsFieldBuilder().addBuilder(
            index, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.getDefaultInstance());
      }
      /**
       * <code>repeated .proto.VehicleAPIError sub_errors = 4 [json_name = "sub-errors"];</code>
       */
      public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder> 
           getSubErrorsBuilderList() {
        return internalGetSubErrorsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder> 
          internalGetSubErrorsFieldBuilder() {
        if (subErrorsBuilder_ == null) {
          subErrorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError.Builder, com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIErrorOrBuilder>(
                  subErrors_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          subErrors_ = null;
        }
        return subErrorsBuilder_;
      }

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

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.VehicleAPIError getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VehicleAPIError>
        PARSER = new com.google.protobuf.AbstractParser<VehicleAPIError>() {
      @java.lang.Override
      public VehicleAPIError 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<VehicleAPIError> parser() {
      return PARSER;
    }

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

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

  }

  public interface AppTwinPendingCommandsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.AppTwinPendingCommandsRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * AppTwinPendingCommandsRequest is sent from the AppTwin to the app to ask for commands that the app has not yet
   * received a finished state for. This request MUST eventually be answered with AppTwinPendingCommandsResponse.
   * </pre>
   *
   * Protobuf type {@code proto.AppTwinPendingCommandsRequest}
   */
  public static final class AppTwinPendingCommandsRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.AppTwinPendingCommandsRequest)
      AppTwinPendingCommandsRequestOrBuilder {
  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= */ "",
        "AppTwinPendingCommandsRequest");
    }
    // Use AppTwinPendingCommandsRequest.newBuilder() to construct.
    private AppTwinPendingCommandsRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AppTwinPendingCommandsRequest() {
    }

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

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_AppTwinPendingCommandsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest.class, com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest.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.Vehicleapi.AppTwinPendingCommandsRequest)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest other = (com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest) 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.Vehicleapi.AppTwinPendingCommandsRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest 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.Vehicleapi.AppTwinPendingCommandsRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest 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.Vehicleapi.AppTwinPendingCommandsRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest 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.Vehicleapi.AppTwinPendingCommandsRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest 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.Vehicleapi.AppTwinPendingCommandsRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest 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.Vehicleapi.AppTwinPendingCommandsRequest 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>
     * AppTwinPendingCommandsRequest is sent from the AppTwin to the app to ask for commands that the app has not yet
     * received a finished state for. This request MUST eventually be answered with AppTwinPendingCommandsResponse.
     * </pre>
     *
     * Protobuf type {@code proto.AppTwinPendingCommandsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.AppTwinPendingCommandsRequest)
        com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_AppTwinPendingCommandsRequest_descriptor;
      }

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

      // Construct using com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest.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.Vehicleapi.internal_static_proto_AppTwinPendingCommandsRequest_descriptor;
      }

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

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

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

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

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest other) {
        if (other == com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest.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.AppTwinPendingCommandsRequest)
    }

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AppTwinPendingCommandsRequest>
        PARSER = new com.google.protobuf.AbstractParser<AppTwinPendingCommandsRequest>() {
      @java.lang.Override
      public AppTwinPendingCommandsRequest 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<AppTwinPendingCommandsRequest> parser() {
      return PARSER;
    }

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

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

  }

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

    /**
     * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
     */
    java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand> 
        getPendingCommandsList();
    /**
     * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand getPendingCommands(int index);
    /**
     * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
     */
    int getPendingCommandsCount();
    /**
     * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
     */
    java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.PendingCommandOrBuilder> 
        getPendingCommandsOrBuilderList();
    /**
     * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
     */
    com.daimler.mbcarkit.proto.Vehicleapi.PendingCommandOrBuilder getPendingCommandsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * AppTwinPendingCommandsResponse is sent from the app to the AppTwin to tell it the commands that haven't been
   * "resolved yet" (are not in a finished state). The delivery of this message to the AppTwin will trigger a command
   * actor that polls the state for the specified command type and PID.
   * </pre>
   *
   * Protobuf type {@code proto.AppTwinPendingCommandsResponse}
   */
  public static final class AppTwinPendingCommandsResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.AppTwinPendingCommandsResponse)
      AppTwinPendingCommandsResponseOrBuilder {
  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= */ "",
        "AppTwinPendingCommandsResponse");
    }
    // Use AppTwinPendingCommandsResponse.newBuilder() to construct.
    private AppTwinPendingCommandsResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AppTwinPendingCommandsResponse() {
      pendingCommands_ = java.util.Collections.emptyList();
    }

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

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

    public static final int PENDING_COMMANDS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand> pendingCommands_;
    /**
     * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand> getPendingCommandsList() {
      return pendingCommands_;
    }
    /**
     * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.PendingCommandOrBuilder> 
        getPendingCommandsOrBuilderList() {
      return pendingCommands_;
    }
    /**
     * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
     */
    @java.lang.Override
    public int getPendingCommandsCount() {
      return pendingCommands_.size();
    }
    /**
     * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand getPendingCommands(int index) {
      return pendingCommands_.get(index);
    }
    /**
     * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
     */
    @java.lang.Override
    public com.daimler.mbcarkit.proto.Vehicleapi.PendingCommandOrBuilder getPendingCommandsOrBuilder(
        int index) {
      return pendingCommands_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      for (int i = 0; i < pendingCommands_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, pendingCommands_.get(i));
      }
      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.Vehicleapi.AppTwinPendingCommandsResponse)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse other = (com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse) obj;

      if (!getPendingCommandsList()
          .equals(other.getPendingCommandsList())) 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 (getPendingCommandsCount() > 0) {
        hash = (37 * hash) + PENDING_COMMANDS_FIELD_NUMBER;
        hash = (53 * hash) + getPendingCommandsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse 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.Vehicleapi.AppTwinPendingCommandsResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse 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.Vehicleapi.AppTwinPendingCommandsResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse 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.Vehicleapi.AppTwinPendingCommandsResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse 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.Vehicleapi.AppTwinPendingCommandsResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse 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.Vehicleapi.AppTwinPendingCommandsResponse 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>
     * AppTwinPendingCommandsResponse is sent from the app to the AppTwin to tell it the commands that haven't been
     * "resolved yet" (are not in a finished state). The delivery of this message to the AppTwin will trigger a command
     * actor that polls the state for the specified command type and PID.
     * </pre>
     *
     * Protobuf type {@code proto.AppTwinPendingCommandsResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.AppTwinPendingCommandsResponse)
        com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_AppTwinPendingCommandsResponse_descriptor;
      }

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

      // Construct using com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (pendingCommandsBuilder_ == null) {
          pendingCommands_ = java.util.Collections.emptyList();
        } else {
          pendingCommands_ = null;
          pendingCommandsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

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

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

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

      private void buildPartialRepeatedFields(com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse result) {
        if (pendingCommandsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            pendingCommands_ = java.util.Collections.unmodifiableList(pendingCommands_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.pendingCommands_ = pendingCommands_;
        } else {
          result.pendingCommands_ = pendingCommandsBuilder_.build();
        }
      }

      private void buildPartial0(com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse result) {
        int from_bitField0_ = bitField0_;
      }

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

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse other) {
        if (other == com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse.getDefaultInstance()) return this;
        if (pendingCommandsBuilder_ == null) {
          if (!other.pendingCommands_.isEmpty()) {
            if (pendingCommands_.isEmpty()) {
              pendingCommands_ = other.pendingCommands_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePendingCommandsIsMutable();
              pendingCommands_.addAll(other.pendingCommands_);
            }
            onChanged();
          }
        } else {
          if (!other.pendingCommands_.isEmpty()) {
            if (pendingCommandsBuilder_.isEmpty()) {
              pendingCommandsBuilder_.dispose();
              pendingCommandsBuilder_ = null;
              pendingCommands_ = other.pendingCommands_;
              bitField0_ = (bitField0_ & ~0x00000001);
              pendingCommandsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   internalGetPendingCommandsFieldBuilder() : null;
            } else {
              pendingCommandsBuilder_.addAllMessages(other.pendingCommands_);
            }
          }
        }
        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: {
                com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand m =
                    input.readMessage(
                        com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.parser(),
                        extensionRegistry);
                if (pendingCommandsBuilder_ == null) {
                  ensurePendingCommandsIsMutable();
                  pendingCommands_.add(m);
                } else {
                  pendingCommandsBuilder_.addMessage(m);
                }
                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.util.List<com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand> pendingCommands_ =
        java.util.Collections.emptyList();
      private void ensurePendingCommandsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          pendingCommands_ = new java.util.ArrayList<com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand>(pendingCommands_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand, com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.Builder, com.daimler.mbcarkit.proto.Vehicleapi.PendingCommandOrBuilder> pendingCommandsBuilder_;

      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand> getPendingCommandsList() {
        if (pendingCommandsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(pendingCommands_);
        } else {
          return pendingCommandsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public int getPendingCommandsCount() {
        if (pendingCommandsBuilder_ == null) {
          return pendingCommands_.size();
        } else {
          return pendingCommandsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand getPendingCommands(int index) {
        if (pendingCommandsBuilder_ == null) {
          return pendingCommands_.get(index);
        } else {
          return pendingCommandsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public Builder setPendingCommands(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand value) {
        if (pendingCommandsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePendingCommandsIsMutable();
          pendingCommands_.set(index, value);
          onChanged();
        } else {
          pendingCommandsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public Builder setPendingCommands(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.Builder builderForValue) {
        if (pendingCommandsBuilder_ == null) {
          ensurePendingCommandsIsMutable();
          pendingCommands_.set(index, builderForValue.build());
          onChanged();
        } else {
          pendingCommandsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public Builder addPendingCommands(com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand value) {
        if (pendingCommandsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePendingCommandsIsMutable();
          pendingCommands_.add(value);
          onChanged();
        } else {
          pendingCommandsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public Builder addPendingCommands(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand value) {
        if (pendingCommandsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePendingCommandsIsMutable();
          pendingCommands_.add(index, value);
          onChanged();
        } else {
          pendingCommandsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public Builder addPendingCommands(
          com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.Builder builderForValue) {
        if (pendingCommandsBuilder_ == null) {
          ensurePendingCommandsIsMutable();
          pendingCommands_.add(builderForValue.build());
          onChanged();
        } else {
          pendingCommandsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public Builder addPendingCommands(
          int index, com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.Builder builderForValue) {
        if (pendingCommandsBuilder_ == null) {
          ensurePendingCommandsIsMutable();
          pendingCommands_.add(index, builderForValue.build());
          onChanged();
        } else {
          pendingCommandsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public Builder addAllPendingCommands(
          java.lang.Iterable<? extends com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand> values) {
        if (pendingCommandsBuilder_ == null) {
          ensurePendingCommandsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, pendingCommands_);
          onChanged();
        } else {
          pendingCommandsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public Builder clearPendingCommands() {
        if (pendingCommandsBuilder_ == null) {
          pendingCommands_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          pendingCommandsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public Builder removePendingCommands(int index) {
        if (pendingCommandsBuilder_ == null) {
          ensurePendingCommandsIsMutable();
          pendingCommands_.remove(index);
          onChanged();
        } else {
          pendingCommandsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.Builder getPendingCommandsBuilder(
          int index) {
        return internalGetPendingCommandsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.PendingCommandOrBuilder getPendingCommandsOrBuilder(
          int index) {
        if (pendingCommandsBuilder_ == null) {
          return pendingCommands_.get(index);  } else {
          return pendingCommandsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public java.util.List<? extends com.daimler.mbcarkit.proto.Vehicleapi.PendingCommandOrBuilder> 
           getPendingCommandsOrBuilderList() {
        if (pendingCommandsBuilder_ != null) {
          return pendingCommandsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(pendingCommands_);
        }
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.Builder addPendingCommandsBuilder() {
        return internalGetPendingCommandsFieldBuilder().addBuilder(
            com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.getDefaultInstance());
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.Builder addPendingCommandsBuilder(
          int index) {
        return internalGetPendingCommandsFieldBuilder().addBuilder(
            index, com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.getDefaultInstance());
      }
      /**
       * <code>repeated .proto.PendingCommand pending_commands = 1;</code>
       */
      public java.util.List<com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.Builder> 
           getPendingCommandsBuilderList() {
        return internalGetPendingCommandsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand, com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.Builder, com.daimler.mbcarkit.proto.Vehicleapi.PendingCommandOrBuilder> 
          internalGetPendingCommandsFieldBuilder() {
        if (pendingCommandsBuilder_ == null) {
          pendingCommandsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand, com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.Builder, com.daimler.mbcarkit.proto.Vehicleapi.PendingCommandOrBuilder>(
                  pendingCommands_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          pendingCommands_ = null;
        }
        return pendingCommandsBuilder_;
      }

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

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.AppTwinPendingCommandsResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AppTwinPendingCommandsResponse>
        PARSER = new com.google.protobuf.AbstractParser<AppTwinPendingCommandsResponse>() {
      @java.lang.Override
      public AppTwinPendingCommandsResponse 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<AppTwinPendingCommandsResponse> parser() {
      return PARSER;
    }

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

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

  }

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

    /**
     * <code>string vin = 1;</code>
     * @return The vin.
     */
    java.lang.String getVin();
    /**
     * <code>string vin = 1;</code>
     * @return The bytes for vin.
     */
    com.google.protobuf.ByteString
        getVinBytes();

    /**
     * <code>int64 process_id = 2;</code>
     * @return The processId.
     */
    long getProcessId();

    /**
     * <code>string request_id = 3;</code>
     * @return The requestId.
     */
    java.lang.String getRequestId();
    /**
     * <code>string request_id = 3;</code>
     * @return The bytes for requestId.
     */
    com.google.protobuf.ByteString
        getRequestIdBytes();

    /**
     * <code>.proto.ACP.CommandType type = 4;</code>
     * @return The enum numeric value on the wire for type.
     */
    int getTypeValue();
    /**
     * <code>.proto.ACP.CommandType type = 4;</code>
     * @return The type.
     */
    com.daimler.mbcarkit.proto.Acp.ACP.CommandType getType();
  }
  /**
   * Protobuf type {@code proto.PendingCommand}
   */
  public static final class PendingCommand extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:proto.PendingCommand)
      PendingCommandOrBuilder {
  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= */ "",
        "PendingCommand");
    }
    // Use PendingCommand.newBuilder() to construct.
    private PendingCommand(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PendingCommand() {
      vin_ = "";
      requestId_ = "";
      type_ = 0;
    }

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

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

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

    public static final int PROCESS_ID_FIELD_NUMBER = 2;
    private long processId_ = 0L;
    /**
     * <code>int64 process_id = 2;</code>
     * @return The processId.
     */
    @java.lang.Override
    public long getProcessId() {
      return processId_;
    }

    public static final int REQUEST_ID_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object requestId_ = "";
    /**
     * <code>string request_id = 3;</code>
     * @return The requestId.
     */
    @java.lang.Override
    public java.lang.String getRequestId() {
      java.lang.Object ref = requestId_;
      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();
        requestId_ = s;
        return s;
      }
    }
    /**
     * <code>string request_id = 3;</code>
     * @return The bytes for requestId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRequestIdBytes() {
      java.lang.Object ref = requestId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        requestId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TYPE_FIELD_NUMBER = 4;
    private int type_ = 0;
    /**
     * <code>.proto.ACP.CommandType type = 4;</code>
     * @return The enum numeric value on the wire for type.
     */
    @java.lang.Override public int getTypeValue() {
      return type_;
    }
    /**
     * <code>.proto.ACP.CommandType type = 4;</code>
     * @return The type.
     */
    @java.lang.Override public com.daimler.mbcarkit.proto.Acp.ACP.CommandType getType() {
      com.daimler.mbcarkit.proto.Acp.ACP.CommandType result = com.daimler.mbcarkit.proto.Acp.ACP.CommandType.forNumber(type_);
      return result == null ? com.daimler.mbcarkit.proto.Acp.ACP.CommandType.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 (!com.google.protobuf.GeneratedMessage.isStringEmpty(vin_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, vin_);
      }
      if (processId_ != 0L) {
        output.writeInt64(2, processId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(requestId_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, requestId_);
      }
      if (type_ != com.daimler.mbcarkit.proto.Acp.ACP.CommandType.UNKNOWNCOMMANDTYPE.getNumber()) {
        output.writeEnum(4, type_);
      }
      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(vin_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, vin_);
      }
      if (processId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, processId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(requestId_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, requestId_);
      }
      if (type_ != com.daimler.mbcarkit.proto.Acp.ACP.CommandType.UNKNOWNCOMMANDTYPE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(4, type_);
      }
      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.Vehicleapi.PendingCommand)) {
        return super.equals(obj);
      }
      com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand other = (com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand) obj;

      if (!getVin()
          .equals(other.getVin())) return false;
      if (getProcessId()
          != other.getProcessId()) return false;
      if (!getRequestId()
          .equals(other.getRequestId())) return false;
      if (type_ != other.type_) 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) + VIN_FIELD_NUMBER;
      hash = (53 * hash) + getVin().hashCode();
      hash = (37 * hash) + PROCESS_ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getProcessId());
      hash = (37 * hash) + REQUEST_ID_FIELD_NUMBER;
      hash = (53 * hash) + getRequestId().hashCode();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + type_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand 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.Vehicleapi.PendingCommand parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand 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.Vehicleapi.PendingCommand parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand 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.Vehicleapi.PendingCommand parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand 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.Vehicleapi.PendingCommand parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand 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.Vehicleapi.PendingCommand 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.PendingCommand}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.PendingCommand)
        com.daimler.mbcarkit.proto.Vehicleapi.PendingCommandOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.daimler.mbcarkit.proto.Vehicleapi.internal_static_proto_PendingCommand_descriptor;
      }

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

      // Construct using com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        vin_ = "";
        processId_ = 0L;
        requestId_ = "";
        type_ = 0;
        return this;
      }

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

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

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

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

      private void buildPartial0(com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.vin_ = vin_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.processId_ = processId_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.requestId_ = requestId_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.type_ = type_;
        }
      }

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

      public Builder mergeFrom(com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand other) {
        if (other == com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand.getDefaultInstance()) return this;
        if (!other.getVin().isEmpty()) {
          vin_ = other.vin_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.getProcessId() != 0L) {
          setProcessId(other.getProcessId());
        }
        if (!other.getRequestId().isEmpty()) {
          requestId_ = other.requestId_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.type_ != 0) {
          setTypeValue(other.getTypeValue());
        }
        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: {
                vin_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                processId_ = input.readInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                requestId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                type_ = input.readEnum();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              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 vin_ = "";
      /**
       * <code>string vin = 1;</code>
       * @return The vin.
       */
      public java.lang.String getVin() {
        java.lang.Object ref = vin_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          vin_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string vin = 1;</code>
       * @return The bytes for vin.
       */
      public com.google.protobuf.ByteString
          getVinBytes() {
        java.lang.Object ref = vin_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          vin_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string vin = 1;</code>
       * @param value The vin to set.
       * @return This builder for chaining.
       */
      public Builder setVin(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        vin_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>string vin = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVin() {
        vin_ = getDefaultInstance().getVin();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>string vin = 1;</code>
       * @param value The bytes for vin to set.
       * @return This builder for chaining.
       */
      public Builder setVinBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        vin_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private long processId_ ;
      /**
       * <code>int64 process_id = 2;</code>
       * @return The processId.
       */
      @java.lang.Override
      public long getProcessId() {
        return processId_;
      }
      /**
       * <code>int64 process_id = 2;</code>
       * @param value The processId to set.
       * @return This builder for chaining.
       */
      public Builder setProcessId(long value) {

        processId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>int64 process_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearProcessId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        processId_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object requestId_ = "";
      /**
       * <code>string request_id = 3;</code>
       * @return The requestId.
       */
      public java.lang.String getRequestId() {
        java.lang.Object ref = requestId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          requestId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string request_id = 3;</code>
       * @return The bytes for requestId.
       */
      public com.google.protobuf.ByteString
          getRequestIdBytes() {
        java.lang.Object ref = requestId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          requestId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string request_id = 3;</code>
       * @param value The requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        requestId_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>string request_id = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRequestId() {
        requestId_ = getDefaultInstance().getRequestId();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>string request_id = 3;</code>
       * @param value The bytes for requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        requestId_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private int type_ = 0;
      /**
       * <code>.proto.ACP.CommandType type = 4;</code>
       * @return The enum numeric value on the wire for type.
       */
      @java.lang.Override public int getTypeValue() {
        return type_;
      }
      /**
       * <code>.proto.ACP.CommandType type = 4;</code>
       * @param value The enum numeric value on the wire for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeValue(int value) {
        type_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>.proto.ACP.CommandType type = 4;</code>
       * @return The type.
       */
      @java.lang.Override
      public com.daimler.mbcarkit.proto.Acp.ACP.CommandType getType() {
        com.daimler.mbcarkit.proto.Acp.ACP.CommandType result = com.daimler.mbcarkit.proto.Acp.ACP.CommandType.forNumber(type_);
        return result == null ? com.daimler.mbcarkit.proto.Acp.ACP.CommandType.UNRECOGNIZED : result;
      }
      /**
       * <code>.proto.ACP.CommandType type = 4;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(com.daimler.mbcarkit.proto.Acp.ACP.CommandType value) {
        if (value == null) { throw new NullPointerException(); }
        bitField0_ |= 0x00000008;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.proto.ACP.CommandType type = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000008);
        type_ = 0;
        onChanged();
        return this;
      }

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

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

    public static com.daimler.mbcarkit.proto.Vehicleapi.PendingCommand getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PendingCommand>
        PARSER = new com.google.protobuf.AbstractParser<PendingCommand>() {
      @java.lang.Override
      public PendingCommand 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<PendingCommand> parser() {
      return PARSER;
    }

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

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

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_AcknowledgeAppTwinCommandStatusUpdatesByVIN_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_AcknowledgeAppTwinCommandStatusUpdatesByVIN_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_AppTwinCommandStatusUpdatesByVIN_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_AppTwinCommandStatusUpdatesByVIN_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_AppTwinCommandStatusUpdatesByVIN_UpdatesByVinEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_AppTwinCommandStatusUpdatesByVIN_UpdatesByVinEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_AppTwinCommandStatusUpdatesByPID_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_AppTwinCommandStatusUpdatesByPID_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_AppTwinCommandStatusUpdatesByPID_UpdatesByPidEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_AppTwinCommandStatusUpdatesByPID_UpdatesByPidEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_AppTwinCommandStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_AppTwinCommandStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_VehicleAPICommandPostResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_VehicleAPICommandPostResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_VehicleAPICommandGetResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_VehicleAPICommandGetResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_VehicleAPIDataGetResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_VehicleAPIDataGetResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_VehicleAPIDataGetResult_DataEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_VehicleAPIDataGetResult_DataEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_VehicleAPIAttributeStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_VehicleAPIAttributeStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_VehicleAPICommandProcessStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_VehicleAPICommandProcessStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_VehicleAPIError_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_VehicleAPIError_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_VehicleAPIError_AttributesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_VehicleAPIError_AttributesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_AppTwinPendingCommandsRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_AppTwinPendingCommandsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_AppTwinPendingCommandsResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_AppTwinPendingCommandsResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_PendingCommand_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_proto_PendingCommand_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\020vehicleapi.proto\022\005proto\032\tacp.proto\032\034go" +
      "ogle/protobuf/struct.proto\032\ngogo.proto\"F" +
      "\n+AcknowledgeAppTwinCommandStatusUpdates" +
      "ByVIN\022\027\n\017sequence_number\030\001 \001(\005\"\354\001\n AppTw" +
      "inCommandStatusUpdatesByVIN\022\027\n\017sequence_" +
      "number\030\001 \001(\005\022Q\n\016updates_by_vin\030\002 \003(\01329.p" +
      "roto.AppTwinCommandStatusUpdatesByVIN.Up" +
      "datesByVinEntry\032\\\n\021UpdatesByVinEntry\022\013\n\003" +
      "key\030\001 \001(\t\0226\n\005value\030\002 \001(\0132\'.proto.AppTwin" +
      "CommandStatusUpdatesByPID:\0028\001\"\324\001\n AppTwi" +
      "nCommandStatusUpdatesByPID\022\013\n\003vin\030\001 \001(\t\022" +
      "Q\n\016updates_by_pid\030\002 \003(\01329.proto.AppTwinC" +
      "ommandStatusUpdatesByPID.UpdatesByPidEnt" +
      "ry\032P\n\021UpdatesByPidEntry\022\013\n\003key\030\001 \001(\003\022*\n\005" +
      "value\030\002 \001(\0132\033.proto.AppTwinCommandStatus" +
      ":\0028\001\"\221\002\n\024AppTwinCommandStatus\022\022\n\nprocess" +
      "_id\030\001 \001(\003\022\022\n\nrequest_id\030\002 \001(\t\022\027\n\017timesta" +
      "mp_in_ms\030\003 \001(\003\022&\n\006errors\030\004 \003(\0132\026.proto.V" +
      "ehicleAPIError\022!\n\025blocking_time_seconds\030" +
      "\005 \001(\003B\002\030\001\022\030\n\014pin_attempts\030\006 \001(\005B\002\030\001\022$\n\004t" +
      "ype\030\007 \001(\0162\026.proto.ACP.CommandType\022-\n\005sta" +
      "te\030\010 \001(\0162\036.proto.VehicleAPI.CommandState" +
      "\"\242\001\n\033VehicleAPICommandPostResult\022\035\n\nproc" +
      "ess_id\030\001 \001(\003R\tprocessid\022.\n\006errors\030\002 \003(\0132" +
      "\026.proto.VehicleAPIErrorR\006errors\0224\n\005state" +
      "\030\003 \001(\0162\036.proto.VehicleAPI.CommandStateR\005" +
      "state\"\272\001\n\032VehicleAPICommandGetResult\022?\n\007" +
      "process\030\001 \003(\0132%.proto.VehicleAPICommandP" +
      "rocessStatusR\007process\022\037\n\013queue_count\030\002 \001" +
      "(\005R\nqueuecount\022:\n\nqueue_type\030\003 \001(\0162\033.pro" +
      "to.VehicleAPI.QueueTypeR\tqueuetype\"\240\001\n\027V" +
      "ehicleAPIDataGetResult\0226\n\004data\030\001 \003(\0132(.p" +
      "roto.VehicleAPIDataGetResult.DataEntry\032M" +
      "\n\tDataEntry\022\013\n\003key\030\001 \001(\t\022/\n\005value\030\002 \001(\0132" +
      " .proto.VehicleAPIAttributeStatus:\0028\001\"\241\001" +
      "\n\031VehicleAPIAttributeStatus\022,\n\005value\030\003 \001" +
      "(\0132\026.google.protobuf.ValueR\005value\022\033\n\017tim" +
      "estamp_in_ms\030\002 \001(\003R\002ts\0229\n\006Status\030\001 \001(\0162!" +
      ".proto.VehicleAPI.AttributeStatusR\006statu" +
      "s\"\347\002\n\036VehicleAPICommandProcessStatus\022.\n\006" +
      "errors\030\001 \003(\0132\026.proto.VehicleAPIErrorR\006er" +
      "rors\022\037\n\013instance_id\030\002 \001(\tR\ninstanceid\022\022\n" +
      "\004name\030\003 \001(\tR\004name\022\035\n\nprocess_id\030\004 \001(\003R\tp" +
      "rocessid\022G\n\023response_parameters\030\006 \001(\0132\026." +
      "google.protobuf.ValueR\022responseparameter" +
      "s\0224\n\005state\030\007 \001(\0162\036.proto.VehicleAPI.Comm" +
      "andStateR\005state\022!\n\016timestamp_in_s\030\010 \001(\003R" +
      "\ttimestamp\022\037\n\013tracking_id\030\t \001(\tR\ntrackin" +
      "gid\"\226\002\n\017VehicleAPIError\022\030\n\004code\030\001 \001(\tR\ne" +
      "rror-code\022\036\n\007message\030\002 \001(\tR\rerror-messag" +
      "e\022F\n\nattributes\030\003 \003(\0132&.proto.VehicleAPI" +
      "Error.AttributesEntryR\nattributes\0226\n\nsub" +
      "_errors\030\004 \003(\0132\026.proto.VehicleAPIErrorR\ns" +
      "ub-errors\032I\n\017AttributesEntry\022\013\n\003key\030\001 \001(" +
      "\t\022%\n\005value\030\002 \001(\0132\026.google.protobuf.Value" +
      ":\0028\001\"\037\n\035AppTwinPendingCommandsRequest\"Q\n" +
      "\036AppTwinPendingCommandsResponse\022/\n\020pendi" +
      "ng_commands\030\001 \003(\0132\025.proto.PendingCommand" +
      "\"k\n\016PendingCommand\022\013\n\003vin\030\001 \001(\t\022\022\n\nproce" +
      "ss_id\030\002 \001(\003\022\022\n\nrequest_id\030\003 \001(\t\022$\n\004type\030" +
      "\004 \001(\0162\026.proto.ACP.CommandTypeB \n\032com.dai" +
      "mler.mbcarkit.proto\320\341\036\001b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.daimler.mbcarkit.proto.Acp.getDescriptor(),
          com.google.protobuf.StructProto.getDescriptor(),
          com.google.protobuf.GoGoProtos.getDescriptor(),
        });
    internal_static_proto_AcknowledgeAppTwinCommandStatusUpdatesByVIN_descriptor =
      getDescriptor().getMessageType(0);
    internal_static_proto_AcknowledgeAppTwinCommandStatusUpdatesByVIN_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_AcknowledgeAppTwinCommandStatusUpdatesByVIN_descriptor,
        new java.lang.String[] { "SequenceNumber", });
    internal_static_proto_AppTwinCommandStatusUpdatesByVIN_descriptor =
      getDescriptor().getMessageType(1);
    internal_static_proto_AppTwinCommandStatusUpdatesByVIN_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_AppTwinCommandStatusUpdatesByVIN_descriptor,
        new java.lang.String[] { "SequenceNumber", "UpdatesByVin", });
    internal_static_proto_AppTwinCommandStatusUpdatesByVIN_UpdatesByVinEntry_descriptor =
      internal_static_proto_AppTwinCommandStatusUpdatesByVIN_descriptor.getNestedType(0);
    internal_static_proto_AppTwinCommandStatusUpdatesByVIN_UpdatesByVinEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_AppTwinCommandStatusUpdatesByVIN_UpdatesByVinEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_proto_AppTwinCommandStatusUpdatesByPID_descriptor =
      getDescriptor().getMessageType(2);
    internal_static_proto_AppTwinCommandStatusUpdatesByPID_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_AppTwinCommandStatusUpdatesByPID_descriptor,
        new java.lang.String[] { "Vin", "UpdatesByPid", });
    internal_static_proto_AppTwinCommandStatusUpdatesByPID_UpdatesByPidEntry_descriptor =
      internal_static_proto_AppTwinCommandStatusUpdatesByPID_descriptor.getNestedType(0);
    internal_static_proto_AppTwinCommandStatusUpdatesByPID_UpdatesByPidEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_AppTwinCommandStatusUpdatesByPID_UpdatesByPidEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_proto_AppTwinCommandStatus_descriptor =
      getDescriptor().getMessageType(3);
    internal_static_proto_AppTwinCommandStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_AppTwinCommandStatus_descriptor,
        new java.lang.String[] { "ProcessId", "RequestId", "TimestampInMs", "Errors", "BlockingTimeSeconds", "PinAttempts", "Type", "State", });
    internal_static_proto_VehicleAPICommandPostResult_descriptor =
      getDescriptor().getMessageType(4);
    internal_static_proto_VehicleAPICommandPostResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_VehicleAPICommandPostResult_descriptor,
        new java.lang.String[] { "ProcessId", "Errors", "State", });
    internal_static_proto_VehicleAPICommandGetResult_descriptor =
      getDescriptor().getMessageType(5);
    internal_static_proto_VehicleAPICommandGetResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_VehicleAPICommandGetResult_descriptor,
        new java.lang.String[] { "Process", "QueueCount", "QueueType", });
    internal_static_proto_VehicleAPIDataGetResult_descriptor =
      getDescriptor().getMessageType(6);
    internal_static_proto_VehicleAPIDataGetResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_VehicleAPIDataGetResult_descriptor,
        new java.lang.String[] { "Data", });
    internal_static_proto_VehicleAPIDataGetResult_DataEntry_descriptor =
      internal_static_proto_VehicleAPIDataGetResult_descriptor.getNestedType(0);
    internal_static_proto_VehicleAPIDataGetResult_DataEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_VehicleAPIDataGetResult_DataEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_proto_VehicleAPIAttributeStatus_descriptor =
      getDescriptor().getMessageType(7);
    internal_static_proto_VehicleAPIAttributeStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_VehicleAPIAttributeStatus_descriptor,
        new java.lang.String[] { "Value", "TimestampInMs", "Status", });
    internal_static_proto_VehicleAPICommandProcessStatus_descriptor =
      getDescriptor().getMessageType(8);
    internal_static_proto_VehicleAPICommandProcessStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_VehicleAPICommandProcessStatus_descriptor,
        new java.lang.String[] { "Errors", "InstanceId", "Name", "ProcessId", "ResponseParameters", "State", "TimestampInS", "TrackingId", });
    internal_static_proto_VehicleAPIError_descriptor =
      getDescriptor().getMessageType(9);
    internal_static_proto_VehicleAPIError_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_VehicleAPIError_descriptor,
        new java.lang.String[] { "Code", "Message", "Attributes", "SubErrors", });
    internal_static_proto_VehicleAPIError_AttributesEntry_descriptor =
      internal_static_proto_VehicleAPIError_descriptor.getNestedType(0);
    internal_static_proto_VehicleAPIError_AttributesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_VehicleAPIError_AttributesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_proto_AppTwinPendingCommandsRequest_descriptor =
      getDescriptor().getMessageType(10);
    internal_static_proto_AppTwinPendingCommandsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_AppTwinPendingCommandsRequest_descriptor,
        new java.lang.String[] { });
    internal_static_proto_AppTwinPendingCommandsResponse_descriptor =
      getDescriptor().getMessageType(11);
    internal_static_proto_AppTwinPendingCommandsResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_AppTwinPendingCommandsResponse_descriptor,
        new java.lang.String[] { "PendingCommands", });
    internal_static_proto_PendingCommand_descriptor =
      getDescriptor().getMessageType(12);
    internal_static_proto_PendingCommand_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_proto_PendingCommand_descriptor,
        new java.lang.String[] { "Vin", "ProcessId", "RequestId", "Type", });
    descriptor.resolveAllFeaturesImmutable();
    com.daimler.mbcarkit.proto.Acp.getDescriptor();
    com.google.protobuf.StructProto.getDescriptor();
    com.google.protobuf.GoGoProtos.getDescriptor();
    com.google.protobuf.ExtensionRegistry registry =
        com.google.protobuf.ExtensionRegistry.newInstance();
    registry.add(com.google.protobuf.GoGoProtos.goprotoEnumPrefixAll);
    com.google.protobuf.Descriptors.FileDescriptor
        .internalUpdateFileDescriptor(descriptor, registry);
  }

  // @@protoc_insertion_point(outer_class_scope)
}
