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

package com.fca.uconnect.global;

public final class GlobalUconnectControl4 {
  private GlobalUconnectControl4() {}
  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 UconnectMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.UconnectMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#47;The milliseconds since (Jan 1, 1970 00:00:00 UTC) when the message is created. Should come from the system clock of the sender.
     * </pre>
     *
     * <code>int64 timestamp = 1;</code>
     */
    long getTimestamp();

    /**
     * <pre>
     *&#47; may contain any arbitrary sequence of bytes. Intended for implementations where parties to a session need to share a session identifier. Implementations that do so will be able to use sessionId and messageId to correlate logged messages for diagnostic/debug purposes.
     * </pre>
     *
     * <code>bytes sessionId = 2;</code>
     */
    com.google.protobuf.ByteString getSessionId();

    /**
     * <pre>
     *&#47; Assigned to each message by the creator, to allow receivers to reply with correlation. Single node clients can use a per application instance global variable that increments with every message, with a range of -2^31-2^31-1. Clients that are clustered should assign a range of messageIds to each node in the cluster, with the full range equally apportioned.
     * </pre>
     *
     * <code>int32 messageId = 3;</code>
     */
    int getMessageId();

    /**
     * <pre>
     *&#47; Must only be set from the messageId of a received message. If there is not a received message being responded to, do not set any value other than the default. Initiators of interactions should never set correlationId, it is for point to point request/response only.
     * </pre>
     *
     * <code>int32 correlationId = 4;</code>
     */
    int getCorrelationId();

    /**
     * <pre>
     *	repeated google.protobuf.Any details = 5;
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
     */
    java.util.List<com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny> 
        getMessagesList();
    /**
     * <pre>
     *	repeated google.protobuf.Any details = 5;
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
     */
    com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny getMessages(int index);
    /**
     * <pre>
     *	repeated google.protobuf.Any details = 5;
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
     */
    int getMessagesCount();
    /**
     * <pre>
     *	repeated google.protobuf.Any details = 5;
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
     */
    java.util.List<? extends com.fca.uconnect.global.GlobalUconnectControl4.UconnectAnyOrBuilder> 
        getMessagesOrBuilderList();
    /**
     * <pre>
     *	repeated google.protobuf.Any details = 5;
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
     */
    com.fca.uconnect.global.GlobalUconnectControl4.UconnectAnyOrBuilder getMessagesOrBuilder(
        int index);

    /**
     * <pre>
     *&#47; The global api version to provide guidance to the backend for message routing in a multi-version environment.
     * </pre>
     *
     * <code>bytes apiVersionId = 6;</code>
     */
    com.google.protobuf.ByteString getApiVersionId();
  }
  /**
   * <pre>
   **
   * The UconnectMessage is the top level protocol buffer message for this API and contains header elements that are common to all messages.
   * Use of correlationId/messageId
   * The transport layer between the vehicle and services for the API is MQTT, which supports only the publish/subscribe messaging pattern. MQTT does not have any inherent mechanism for correlating sequences of messages, so the UconnectMessage includes messageId and correlationId attributes for this purpose. 
   * While a particular implemenation may make messageId a monotonically increasing unique sequence, it is not a requirement to do so and applications should not count on such behavior. Awareness of how an implementation generates messageId may be helpful for maintenance and debug, but properties such as uniqueness across sessions or application restarts should not be assumed.
   * Following diagrams are intended as an illustration of the concept of request/response correlation and should not be considered as any kind of suggested application architecture.
   * The following Diagram depicts how Client should implement Request/Response with messageId/correlationId.
   * &lt;img class=img-border src=./images/reqresp.png&gt;
   * The following Diagram depicts how SDP should implement Request/Response with messageId/correlationId.
   * &lt;img class=img-border style=margin-left:0em; src=./images/reqrespfromsdp.png&gt;
   * &lt;table class=sequence-table&gt;&lt;thead&gt;&lt;tr&gt;
   * &lt;td&gt;Title&lt;/td&gt;&lt;td&gt;Description&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;
   * &lt;tbody&gt;
   * &lt;tr&gt;&lt;td&gt;New Request/Response Interaction&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP starts new Request Response interaction to a Topic.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;Create Interaction Context &lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP creates Message with required information&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;newMessageId = nextMessageID()&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP generates the messageId for the message by incrementing a sequence counter and assign it to newMessageID&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;Put(newMessageId,interactionContext)&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;Create Message&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP creates message with interaction context.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;message.messageID = newMessageID &lt;/td&gt;&lt;td&gt;&lt;p&gt;Add the newly generated messageId to UconnectMessage.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;Publish Message&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP publishes the message to MQTT broker topic. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;Read Message&lt;/td&gt;&lt;td&gt;&lt;p&gt;The TBM/HU reads the message from subscribed MQTT Broker topic.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;Create Response&lt;/td&gt;&lt;td&gt;&lt;p&gt;The TBM/HU creates response message with required information.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;response.correlationID=message.messageID&lt;/td&gt;&lt;td&gt;&lt;p&gt;The TBM/HU correlationId set to the messageId from the received  Message.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;Publish Response&lt;/td&gt;&lt;td&gt;&lt;p&gt;The TBM/HU publishes response message to MQTT Broker topic.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;Read Response&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP reads the response message from subscribed MQTT Broker topic.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;interactionContext = get(response.correlationID)&lt;/td&gt;&lt;td&gt;&lt;p&gt;The TBM/HU verifies the correlationId matches the messageId of the sent request and assigns received Response to a required message.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;process Response&lt;/td&gt;&lt;td&gt;&lt;p&gt;TBM/HU process response message .&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;delete(response.correlationID)&lt;/td&gt;&lt;td&gt;&lt;p&gt;TBM/HU reads the message from MQTT Broker.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;/tbody&gt;
   * &lt;/table&gt;
   *  The following Diagram depicts how SDP initiate publish with no response.
   * &lt;img class=img-border src=./images/pubsubfromsdp.png&gt;
   * &lt;table class=sequence-table&gt;&lt;thead&gt;&lt;tr&gt;
   * &lt;td&gt;Title&lt;/td&gt;&lt;td&gt;Description&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;
   * &lt;tbody&gt;
   * &lt;tr&gt;&lt;td&gt;New Publish Interaction&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP starts new Publish interaction to a Topic.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;Create Message &lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP creates Message with required information&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;message.messageID = 0&lt;/td&gt;&lt;td&gt;&lt;p&gt;The Message id is defaulted to 0 as there is no response and no correlation Id from TBM/HU.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;Publish Message&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP Publish the message to required Topic through MQTT broker&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;tr&gt;&lt;td&gt;Read Message&lt;/td&gt;&lt;td&gt;&lt;p&gt;TBM/HU reads the message from MQTT Broker.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
   * &lt;/tbody&gt;
   * &lt;/table&gt;
   * </pre>
   *
   * Protobuf type {@code com.fca.uconnect.global.UconnectMessage}
   */
  public  static final class UconnectMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.UconnectMessage)
      UconnectMessageOrBuilder {
    // Use UconnectMessage.newBuilder() to construct.
    private UconnectMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UconnectMessage() {
      timestamp_ = 0L;
      sessionId_ = com.google.protobuf.ByteString.EMPTY;
      messageId_ = 0;
      correlationId_ = 0;
      messages_ = java.util.Collections.emptyList();
      apiVersionId_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private UconnectMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              timestamp_ = input.readInt64();
              break;
            }
            case 18: {

              sessionId_ = input.readBytes();
              break;
            }
            case 24: {

              messageId_ = input.readInt32();
              break;
            }
            case 32: {

              correlationId_ = input.readInt32();
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                messages_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny>();
                mutable_bitField0_ |= 0x00000010;
              }
              messages_.add(
                  input.readMessage(com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.parser(), extensionRegistry));
              break;
            }
            case 50: {

              apiVersionId_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          messages_ = java.util.Collections.unmodifiableList(messages_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_UconnectMessage_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_UconnectMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage.class, com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage.Builder.class);
    }

    private int bitField0_;
    public static final int TIMESTAMP_FIELD_NUMBER = 1;
    private long timestamp_;
    /**
     * <pre>
     *&#47;The milliseconds since (Jan 1, 1970 00:00:00 UTC) when the message is created. Should come from the system clock of the sender.
     * </pre>
     *
     * <code>int64 timestamp = 1;</code>
     */
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int SESSIONID_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString sessionId_;
    /**
     * <pre>
     *&#47; may contain any arbitrary sequence of bytes. Intended for implementations where parties to a session need to share a session identifier. Implementations that do so will be able to use sessionId and messageId to correlate logged messages for diagnostic/debug purposes.
     * </pre>
     *
     * <code>bytes sessionId = 2;</code>
     */
    public com.google.protobuf.ByteString getSessionId() {
      return sessionId_;
    }

    public static final int MESSAGEID_FIELD_NUMBER = 3;
    private int messageId_;
    /**
     * <pre>
     *&#47; Assigned to each message by the creator, to allow receivers to reply with correlation. Single node clients can use a per application instance global variable that increments with every message, with a range of -2^31-2^31-1. Clients that are clustered should assign a range of messageIds to each node in the cluster, with the full range equally apportioned.
     * </pre>
     *
     * <code>int32 messageId = 3;</code>
     */
    public int getMessageId() {
      return messageId_;
    }

    public static final int CORRELATIONID_FIELD_NUMBER = 4;
    private int correlationId_;
    /**
     * <pre>
     *&#47; Must only be set from the messageId of a received message. If there is not a received message being responded to, do not set any value other than the default. Initiators of interactions should never set correlationId, it is for point to point request/response only.
     * </pre>
     *
     * <code>int32 correlationId = 4;</code>
     */
    public int getCorrelationId() {
      return correlationId_;
    }

    public static final int MESSAGES_FIELD_NUMBER = 5;
    private java.util.List<com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny> messages_;
    /**
     * <pre>
     *	repeated google.protobuf.Any details = 5;
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
     */
    public java.util.List<com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny> getMessagesList() {
      return messages_;
    }
    /**
     * <pre>
     *	repeated google.protobuf.Any details = 5;
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
     */
    public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectControl4.UconnectAnyOrBuilder> 
        getMessagesOrBuilderList() {
      return messages_;
    }
    /**
     * <pre>
     *	repeated google.protobuf.Any details = 5;
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
     */
    public int getMessagesCount() {
      return messages_.size();
    }
    /**
     * <pre>
     *	repeated google.protobuf.Any details = 5;
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
     */
    public com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny getMessages(int index) {
      return messages_.get(index);
    }
    /**
     * <pre>
     *	repeated google.protobuf.Any details = 5;
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
     */
    public com.fca.uconnect.global.GlobalUconnectControl4.UconnectAnyOrBuilder getMessagesOrBuilder(
        int index) {
      return messages_.get(index);
    }

    public static final int APIVERSIONID_FIELD_NUMBER = 6;
    private com.google.protobuf.ByteString apiVersionId_;
    /**
     * <pre>
     *&#47; The global api version to provide guidance to the backend for message routing in a multi-version environment.
     * </pre>
     *
     * <code>bytes apiVersionId = 6;</code>
     */
    public com.google.protobuf.ByteString getApiVersionId() {
      return apiVersionId_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (timestamp_ != 0L) {
        output.writeInt64(1, timestamp_);
      }
      if (!sessionId_.isEmpty()) {
        output.writeBytes(2, sessionId_);
      }
      if (messageId_ != 0) {
        output.writeInt32(3, messageId_);
      }
      if (correlationId_ != 0) {
        output.writeInt32(4, correlationId_);
      }
      for (int i = 0; i < messages_.size(); i++) {
        output.writeMessage(5, messages_.get(i));
      }
      if (!apiVersionId_.isEmpty()) {
        output.writeBytes(6, apiVersionId_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, timestamp_);
      }
      if (!sessionId_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, sessionId_);
      }
      if (messageId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, messageId_);
      }
      if (correlationId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, correlationId_);
      }
      for (int i = 0; i < messages_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, messages_.get(i));
      }
      if (!apiVersionId_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, apiVersionId_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage)) {
        return super.equals(obj);
      }
      com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage other = (com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage) obj;

      boolean result = true;
      result = result && (getTimestamp()
          == other.getTimestamp());
      result = result && getSessionId()
          .equals(other.getSessionId());
      result = result && (getMessageId()
          == other.getMessageId());
      result = result && (getCorrelationId()
          == other.getCorrelationId());
      result = result && getMessagesList()
          .equals(other.getMessagesList());
      result = result && getApiVersionId()
          .equals(other.getApiVersionId());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (37 * hash) + SESSIONID_FIELD_NUMBER;
      hash = (53 * hash) + getSessionId().hashCode();
      hash = (37 * hash) + MESSAGEID_FIELD_NUMBER;
      hash = (53 * hash) + getMessageId();
      hash = (37 * hash) + CORRELATIONID_FIELD_NUMBER;
      hash = (53 * hash) + getCorrelationId();
      if (getMessagesCount() > 0) {
        hash = (37 * hash) + MESSAGES_FIELD_NUMBER;
        hash = (53 * hash) + getMessagesList().hashCode();
      }
      hash = (37 * hash) + APIVERSIONID_FIELD_NUMBER;
      hash = (53 * hash) + getApiVersionId().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     **
     * The UconnectMessage is the top level protocol buffer message for this API and contains header elements that are common to all messages.
     * Use of correlationId/messageId
     * The transport layer between the vehicle and services for the API is MQTT, which supports only the publish/subscribe messaging pattern. MQTT does not have any inherent mechanism for correlating sequences of messages, so the UconnectMessage includes messageId and correlationId attributes for this purpose. 
     * While a particular implemenation may make messageId a monotonically increasing unique sequence, it is not a requirement to do so and applications should not count on such behavior. Awareness of how an implementation generates messageId may be helpful for maintenance and debug, but properties such as uniqueness across sessions or application restarts should not be assumed.
     * Following diagrams are intended as an illustration of the concept of request/response correlation and should not be considered as any kind of suggested application architecture.
     * The following Diagram depicts how Client should implement Request/Response with messageId/correlationId.
     * &lt;img class=img-border src=./images/reqresp.png&gt;
     * The following Diagram depicts how SDP should implement Request/Response with messageId/correlationId.
     * &lt;img class=img-border style=margin-left:0em; src=./images/reqrespfromsdp.png&gt;
     * &lt;table class=sequence-table&gt;&lt;thead&gt;&lt;tr&gt;
     * &lt;td&gt;Title&lt;/td&gt;&lt;td&gt;Description&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;
     * &lt;tbody&gt;
     * &lt;tr&gt;&lt;td&gt;New Request/Response Interaction&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP starts new Request Response interaction to a Topic.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;Create Interaction Context &lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP creates Message with required information&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;newMessageId = nextMessageID()&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP generates the messageId for the message by incrementing a sequence counter and assign it to newMessageID&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;Put(newMessageId,interactionContext)&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;Create Message&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP creates message with interaction context.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;message.messageID = newMessageID &lt;/td&gt;&lt;td&gt;&lt;p&gt;Add the newly generated messageId to UconnectMessage.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;Publish Message&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP publishes the message to MQTT broker topic. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;Read Message&lt;/td&gt;&lt;td&gt;&lt;p&gt;The TBM/HU reads the message from subscribed MQTT Broker topic.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;Create Response&lt;/td&gt;&lt;td&gt;&lt;p&gt;The TBM/HU creates response message with required information.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;response.correlationID=message.messageID&lt;/td&gt;&lt;td&gt;&lt;p&gt;The TBM/HU correlationId set to the messageId from the received  Message.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;Publish Response&lt;/td&gt;&lt;td&gt;&lt;p&gt;The TBM/HU publishes response message to MQTT Broker topic.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;Read Response&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP reads the response message from subscribed MQTT Broker topic.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;interactionContext = get(response.correlationID)&lt;/td&gt;&lt;td&gt;&lt;p&gt;The TBM/HU verifies the correlationId matches the messageId of the sent request and assigns received Response to a required message.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;process Response&lt;/td&gt;&lt;td&gt;&lt;p&gt;TBM/HU process response message .&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;delete(response.correlationID)&lt;/td&gt;&lt;td&gt;&lt;p&gt;TBM/HU reads the message from MQTT Broker.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;/tbody&gt;
     * &lt;/table&gt;
     *  The following Diagram depicts how SDP initiate publish with no response.
     * &lt;img class=img-border src=./images/pubsubfromsdp.png&gt;
     * &lt;table class=sequence-table&gt;&lt;thead&gt;&lt;tr&gt;
     * &lt;td&gt;Title&lt;/td&gt;&lt;td&gt;Description&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;
     * &lt;tbody&gt;
     * &lt;tr&gt;&lt;td&gt;New Publish Interaction&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP starts new Publish interaction to a Topic.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;Create Message &lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP creates Message with required information&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;message.messageID = 0&lt;/td&gt;&lt;td&gt;&lt;p&gt;The Message id is defaulted to 0 as there is no response and no correlation Id from TBM/HU.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;Publish Message&lt;/td&gt;&lt;td&gt;&lt;p&gt;The SDP Publish the message to required Topic through MQTT broker&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;tr&gt;&lt;td&gt;Read Message&lt;/td&gt;&lt;td&gt;&lt;p&gt;TBM/HU reads the message from MQTT Broker.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
     * &lt;/tbody&gt;
     * &lt;/table&gt;
     * </pre>
     *
     * Protobuf type {@code com.fca.uconnect.global.UconnectMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.UconnectMessage)
        com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_UconnectMessage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_UconnectMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage.class, com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage.Builder.class);
      }

      // Construct using com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMessagesFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        timestamp_ = 0L;

        sessionId_ = com.google.protobuf.ByteString.EMPTY;

        messageId_ = 0;

        correlationId_ = 0;

        if (messagesBuilder_ == null) {
          messages_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
        } else {
          messagesBuilder_.clear();
        }
        apiVersionId_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_UconnectMessage_descriptor;
      }

      public com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage getDefaultInstanceForType() {
        return com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage.getDefaultInstance();
      }

      public com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage build() {
        com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage buildPartial() {
        com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage result = new com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.timestamp_ = timestamp_;
        result.sessionId_ = sessionId_;
        result.messageId_ = messageId_;
        result.correlationId_ = correlationId_;
        if (messagesBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            messages_ = java.util.Collections.unmodifiableList(messages_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.messages_ = messages_;
        } else {
          result.messages_ = messagesBuilder_.build();
        }
        result.apiVersionId_ = apiVersionId_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage) {
          return mergeFrom((com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage other) {
        if (other == com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage.getDefaultInstance()) return this;
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (other.getSessionId() != com.google.protobuf.ByteString.EMPTY) {
          setSessionId(other.getSessionId());
        }
        if (other.getMessageId() != 0) {
          setMessageId(other.getMessageId());
        }
        if (other.getCorrelationId() != 0) {
          setCorrelationId(other.getCorrelationId());
        }
        if (messagesBuilder_ == null) {
          if (!other.messages_.isEmpty()) {
            if (messages_.isEmpty()) {
              messages_ = other.messages_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureMessagesIsMutable();
              messages_.addAll(other.messages_);
            }
            onChanged();
          }
        } else {
          if (!other.messages_.isEmpty()) {
            if (messagesBuilder_.isEmpty()) {
              messagesBuilder_.dispose();
              messagesBuilder_ = null;
              messages_ = other.messages_;
              bitField0_ = (bitField0_ & ~0x00000010);
              messagesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMessagesFieldBuilder() : null;
            } else {
              messagesBuilder_.addAllMessages(other.messages_);
            }
          }
        }
        if (other.getApiVersionId() != com.google.protobuf.ByteString.EMPTY) {
          setApiVersionId(other.getApiVersionId());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long timestamp_ ;
      /**
       * <pre>
       *&#47;The milliseconds since (Jan 1, 1970 00:00:00 UTC) when the message is created. Should come from the system clock of the sender.
       * </pre>
       *
       * <code>int64 timestamp = 1;</code>
       */
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       *&#47;The milliseconds since (Jan 1, 1970 00:00:00 UTC) when the message is created. Should come from the system clock of the sender.
       * </pre>
       *
       * <code>int64 timestamp = 1;</code>
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47;The milliseconds since (Jan 1, 1970 00:00:00 UTC) when the message is created. Should come from the system clock of the sender.
       * </pre>
       *
       * <code>int64 timestamp = 1;</code>
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString sessionId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *&#47; may contain any arbitrary sequence of bytes. Intended for implementations where parties to a session need to share a session identifier. Implementations that do so will be able to use sessionId and messageId to correlate logged messages for diagnostic/debug purposes.
       * </pre>
       *
       * <code>bytes sessionId = 2;</code>
       */
      public com.google.protobuf.ByteString getSessionId() {
        return sessionId_;
      }
      /**
       * <pre>
       *&#47; may contain any arbitrary sequence of bytes. Intended for implementations where parties to a session need to share a session identifier. Implementations that do so will be able to use sessionId and messageId to correlate logged messages for diagnostic/debug purposes.
       * </pre>
       *
       * <code>bytes sessionId = 2;</code>
       */
      public Builder setSessionId(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sessionId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47; may contain any arbitrary sequence of bytes. Intended for implementations where parties to a session need to share a session identifier. Implementations that do so will be able to use sessionId and messageId to correlate logged messages for diagnostic/debug purposes.
       * </pre>
       *
       * <code>bytes sessionId = 2;</code>
       */
      public Builder clearSessionId() {
        
        sessionId_ = getDefaultInstance().getSessionId();
        onChanged();
        return this;
      }

      private int messageId_ ;
      /**
       * <pre>
       *&#47; Assigned to each message by the creator, to allow receivers to reply with correlation. Single node clients can use a per application instance global variable that increments with every message, with a range of -2^31-2^31-1. Clients that are clustered should assign a range of messageIds to each node in the cluster, with the full range equally apportioned.
       * </pre>
       *
       * <code>int32 messageId = 3;</code>
       */
      public int getMessageId() {
        return messageId_;
      }
      /**
       * <pre>
       *&#47; Assigned to each message by the creator, to allow receivers to reply with correlation. Single node clients can use a per application instance global variable that increments with every message, with a range of -2^31-2^31-1. Clients that are clustered should assign a range of messageIds to each node in the cluster, with the full range equally apportioned.
       * </pre>
       *
       * <code>int32 messageId = 3;</code>
       */
      public Builder setMessageId(int value) {
        
        messageId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47; Assigned to each message by the creator, to allow receivers to reply with correlation. Single node clients can use a per application instance global variable that increments with every message, with a range of -2^31-2^31-1. Clients that are clustered should assign a range of messageIds to each node in the cluster, with the full range equally apportioned.
       * </pre>
       *
       * <code>int32 messageId = 3;</code>
       */
      public Builder clearMessageId() {
        
        messageId_ = 0;
        onChanged();
        return this;
      }

      private int correlationId_ ;
      /**
       * <pre>
       *&#47; Must only be set from the messageId of a received message. If there is not a received message being responded to, do not set any value other than the default. Initiators of interactions should never set correlationId, it is for point to point request/response only.
       * </pre>
       *
       * <code>int32 correlationId = 4;</code>
       */
      public int getCorrelationId() {
        return correlationId_;
      }
      /**
       * <pre>
       *&#47; Must only be set from the messageId of a received message. If there is not a received message being responded to, do not set any value other than the default. Initiators of interactions should never set correlationId, it is for point to point request/response only.
       * </pre>
       *
       * <code>int32 correlationId = 4;</code>
       */
      public Builder setCorrelationId(int value) {
        
        correlationId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47; Must only be set from the messageId of a received message. If there is not a received message being responded to, do not set any value other than the default. Initiators of interactions should never set correlationId, it is for point to point request/response only.
       * </pre>
       *
       * <code>int32 correlationId = 4;</code>
       */
      public Builder clearCorrelationId() {
        
        correlationId_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny> messages_ =
        java.util.Collections.emptyList();
      private void ensureMessagesIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          messages_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny>(messages_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny, com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.Builder, com.fca.uconnect.global.GlobalUconnectControl4.UconnectAnyOrBuilder> messagesBuilder_;

      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public java.util.List<com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny> getMessagesList() {
        if (messagesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(messages_);
        } else {
          return messagesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public int getMessagesCount() {
        if (messagesBuilder_ == null) {
          return messages_.size();
        } else {
          return messagesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny getMessages(int index) {
        if (messagesBuilder_ == null) {
          return messages_.get(index);
        } else {
          return messagesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public Builder setMessages(
          int index, com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny value) {
        if (messagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMessagesIsMutable();
          messages_.set(index, value);
          onChanged();
        } else {
          messagesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public Builder setMessages(
          int index, com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.Builder builderForValue) {
        if (messagesBuilder_ == null) {
          ensureMessagesIsMutable();
          messages_.set(index, builderForValue.build());
          onChanged();
        } else {
          messagesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public Builder addMessages(com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny value) {
        if (messagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMessagesIsMutable();
          messages_.add(value);
          onChanged();
        } else {
          messagesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public Builder addMessages(
          int index, com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny value) {
        if (messagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMessagesIsMutable();
          messages_.add(index, value);
          onChanged();
        } else {
          messagesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public Builder addMessages(
          com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.Builder builderForValue) {
        if (messagesBuilder_ == null) {
          ensureMessagesIsMutable();
          messages_.add(builderForValue.build());
          onChanged();
        } else {
          messagesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public Builder addMessages(
          int index, com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.Builder builderForValue) {
        if (messagesBuilder_ == null) {
          ensureMessagesIsMutable();
          messages_.add(index, builderForValue.build());
          onChanged();
        } else {
          messagesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public Builder addAllMessages(
          java.lang.Iterable<? extends com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny> values) {
        if (messagesBuilder_ == null) {
          ensureMessagesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, messages_);
          onChanged();
        } else {
          messagesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public Builder clearMessages() {
        if (messagesBuilder_ == null) {
          messages_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          messagesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public Builder removeMessages(int index) {
        if (messagesBuilder_ == null) {
          ensureMessagesIsMutable();
          messages_.remove(index);
          onChanged();
        } else {
          messagesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.Builder getMessagesBuilder(
          int index) {
        return getMessagesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectControl4.UconnectAnyOrBuilder getMessagesOrBuilder(
          int index) {
        if (messagesBuilder_ == null) {
          return messages_.get(index);  } else {
          return messagesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectControl4.UconnectAnyOrBuilder> 
           getMessagesOrBuilderList() {
        if (messagesBuilder_ != null) {
          return messagesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(messages_);
        }
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.Builder addMessagesBuilder() {
        return getMessagesFieldBuilder().addBuilder(
            com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.getDefaultInstance());
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.Builder addMessagesBuilder(
          int index) {
        return getMessagesFieldBuilder().addBuilder(
            index, com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.getDefaultInstance());
      }
      /**
       * <pre>
       *	repeated google.protobuf.Any details = 5;
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.UconnectAny messages = 5;</code>
       */
      public java.util.List<com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.Builder> 
           getMessagesBuilderList() {
        return getMessagesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny, com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.Builder, com.fca.uconnect.global.GlobalUconnectControl4.UconnectAnyOrBuilder> 
          getMessagesFieldBuilder() {
        if (messagesBuilder_ == null) {
          messagesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny, com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.Builder, com.fca.uconnect.global.GlobalUconnectControl4.UconnectAnyOrBuilder>(
                  messages_,
                  ((bitField0_ & 0x00000010) == 0x00000010),
                  getParentForChildren(),
                  isClean());
          messages_ = null;
        }
        return messagesBuilder_;
      }

      private com.google.protobuf.ByteString apiVersionId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *&#47; The global api version to provide guidance to the backend for message routing in a multi-version environment.
       * </pre>
       *
       * <code>bytes apiVersionId = 6;</code>
       */
      public com.google.protobuf.ByteString getApiVersionId() {
        return apiVersionId_;
      }
      /**
       * <pre>
       *&#47; The global api version to provide guidance to the backend for message routing in a multi-version environment.
       * </pre>
       *
       * <code>bytes apiVersionId = 6;</code>
       */
      public Builder setApiVersionId(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        apiVersionId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47; The global api version to provide guidance to the backend for message routing in a multi-version environment.
       * </pre>
       *
       * <code>bytes apiVersionId = 6;</code>
       */
      public Builder clearApiVersionId() {
        
        apiVersionId_ = getDefaultInstance().getApiVersionId();
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.UconnectMessage)
    }

    // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.UconnectMessage)
    private static final com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage();
    }

    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.fca.uconnect.global.GlobalUconnectControl4.UconnectMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface KeepAliveMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.KeepAliveMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#47;The milliseconds since (Jan 1, 1970 00:00:00 UTC) when the message is created. Should come from the system clock of the sender.
     * </pre>
     *
     * <code>int64 timestamp = 1;</code>
     */
    long getTimestamp();
  }
  /**
   * <pre>
   **
   * The KeepAliveMessage provides a lightweight alternative to the base MQTT keep alive provided in the client library.  The message will be used in the scenario where the client manages the keep alive instead of letting the MQTT client manage the keep alive.
   * This is different from original MQTT Keep Alive,Imperical testing showed the custom KeepAliveMessage resulted in smaller messages over the network. This is in place as an optional approach to using the default keepalive.
   * </pre>
   *
   * Protobuf type {@code com.fca.uconnect.global.KeepAliveMessage}
   */
  public  static final class KeepAliveMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.KeepAliveMessage)
      KeepAliveMessageOrBuilder {
    // Use KeepAliveMessage.newBuilder() to construct.
    private KeepAliveMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private KeepAliveMessage() {
      timestamp_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private KeepAliveMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              timestamp_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_KeepAliveMessage_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_KeepAliveMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage.class, com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage.Builder.class);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 1;
    private long timestamp_;
    /**
     * <pre>
     *&#47;The milliseconds since (Jan 1, 1970 00:00:00 UTC) when the message is created. Should come from the system clock of the sender.
     * </pre>
     *
     * <code>int64 timestamp = 1;</code>
     */
    public long getTimestamp() {
      return timestamp_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (timestamp_ != 0L) {
        output.writeInt64(1, timestamp_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, timestamp_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage)) {
        return super.equals(obj);
      }
      com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage other = (com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage) obj;

      boolean result = true;
      result = result && (getTimestamp()
          == other.getTimestamp());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     **
     * The KeepAliveMessage provides a lightweight alternative to the base MQTT keep alive provided in the client library.  The message will be used in the scenario where the client manages the keep alive instead of letting the MQTT client manage the keep alive.
     * This is different from original MQTT Keep Alive,Imperical testing showed the custom KeepAliveMessage resulted in smaller messages over the network. This is in place as an optional approach to using the default keepalive.
     * </pre>
     *
     * Protobuf type {@code com.fca.uconnect.global.KeepAliveMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.KeepAliveMessage)
        com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_KeepAliveMessage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_KeepAliveMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage.class, com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage.Builder.class);
      }

      // Construct using com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        timestamp_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_KeepAliveMessage_descriptor;
      }

      public com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage getDefaultInstanceForType() {
        return com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage.getDefaultInstance();
      }

      public com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage build() {
        com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage buildPartial() {
        com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage result = new com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage(this);
        result.timestamp_ = timestamp_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage) {
          return mergeFrom((com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage other) {
        if (other == com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage.getDefaultInstance()) return this;
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long timestamp_ ;
      /**
       * <pre>
       *&#47;The milliseconds since (Jan 1, 1970 00:00:00 UTC) when the message is created. Should come from the system clock of the sender.
       * </pre>
       *
       * <code>int64 timestamp = 1;</code>
       */
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       *&#47;The milliseconds since (Jan 1, 1970 00:00:00 UTC) when the message is created. Should come from the system clock of the sender.
       * </pre>
       *
       * <code>int64 timestamp = 1;</code>
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47;The milliseconds since (Jan 1, 1970 00:00:00 UTC) when the message is created. Should come from the system clock of the sender.
       * </pre>
       *
       * <code>int64 timestamp = 1;</code>
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.KeepAliveMessage)
    }

    // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.KeepAliveMessage)
    private static final com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage();
    }

    public static com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.fca.uconnect.global.GlobalUconnectControl4.KeepAliveMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AckMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.AckMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.com.fca.uconnect.global.AckMessage.ResponseEnum response = 1;</code>
     */
    int getResponseValue();
    /**
     * <code>.com.fca.uconnect.global.AckMessage.ResponseEnum response = 1;</code>
     */
    com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.ResponseEnum getResponse();

    /**
     * <pre>
     *&#47; Indicates if the error is transient and to attempt a retry.
     * </pre>
     *
     * <code>bool isTransient = 2;</code>
     */
    boolean getIsTransient();

    /**
     * <code>int32 failureReasonCode = 3;</code>
     */
    int getFailureReasonCode();
  }
  /**
   * Protobuf type {@code com.fca.uconnect.global.AckMessage}
   */
  public  static final class AckMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.AckMessage)
      AckMessageOrBuilder {
    // Use AckMessage.newBuilder() to construct.
    private AckMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AckMessage() {
      response_ = 0;
      isTransient_ = false;
      failureReasonCode_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private AckMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();

              response_ = rawValue;
              break;
            }
            case 16: {

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

              failureReasonCode_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_AckMessage_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_AckMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.class, com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.Builder.class);
    }

    /**
     * Protobuf enum {@code com.fca.uconnect.global.AckMessage.ResponseEnum}
     */
    public enum ResponseEnum
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>SUCCESS = 0;</code>
       */
      SUCCESS(0),
      /**
       * <code>FAILURE = 1;</code>
       */
      FAILURE(1),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>SUCCESS = 0;</code>
       */
      public static final int SUCCESS_VALUE = 0;
      /**
       * <code>FAILURE = 1;</code>
       */
      public static final int FAILURE_VALUE = 1;


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

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

      public static ResponseEnum forNumber(int value) {
        switch (value) {
          case 0: return SUCCESS;
          case 1: return FAILURE;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:com.fca.uconnect.global.AckMessage.ResponseEnum)
    }

    public static final int RESPONSE_FIELD_NUMBER = 1;
    private int response_;
    /**
     * <code>.com.fca.uconnect.global.AckMessage.ResponseEnum response = 1;</code>
     */
    public int getResponseValue() {
      return response_;
    }
    /**
     * <code>.com.fca.uconnect.global.AckMessage.ResponseEnum response = 1;</code>
     */
    public com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.ResponseEnum getResponse() {
      com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.ResponseEnum result = com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.ResponseEnum.valueOf(response_);
      return result == null ? com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.ResponseEnum.UNRECOGNIZED : result;
    }

    public static final int ISTRANSIENT_FIELD_NUMBER = 2;
    private boolean isTransient_;
    /**
     * <pre>
     *&#47; Indicates if the error is transient and to attempt a retry.
     * </pre>
     *
     * <code>bool isTransient = 2;</code>
     */
    public boolean getIsTransient() {
      return isTransient_;
    }

    public static final int FAILUREREASONCODE_FIELD_NUMBER = 3;
    private int failureReasonCode_;
    /**
     * <code>int32 failureReasonCode = 3;</code>
     */
    public int getFailureReasonCode() {
      return failureReasonCode_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (response_ != com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.ResponseEnum.SUCCESS.getNumber()) {
        output.writeEnum(1, response_);
      }
      if (isTransient_ != false) {
        output.writeBool(2, isTransient_);
      }
      if (failureReasonCode_ != 0) {
        output.writeInt32(3, failureReasonCode_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (response_ != com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.ResponseEnum.SUCCESS.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, response_);
      }
      if (isTransient_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, isTransient_);
      }
      if (failureReasonCode_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, failureReasonCode_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectControl4.AckMessage)) {
        return super.equals(obj);
      }
      com.fca.uconnect.global.GlobalUconnectControl4.AckMessage other = (com.fca.uconnect.global.GlobalUconnectControl4.AckMessage) obj;

      boolean result = true;
      result = result && response_ == other.response_;
      result = result && (getIsTransient()
          == other.getIsTransient());
      result = result && (getFailureReasonCode()
          == other.getFailureReasonCode());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + RESPONSE_FIELD_NUMBER;
      hash = (53 * hash) + response_;
      hash = (37 * hash) + ISTRANSIENT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsTransient());
      hash = (37 * hash) + FAILUREREASONCODE_FIELD_NUMBER;
      hash = (53 * hash) + getFailureReasonCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.fca.uconnect.global.GlobalUconnectControl4.AckMessage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.AckMessage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.AckMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.AckMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.AckMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.AckMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.AckMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.AckMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.AckMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.AckMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.AckMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.AckMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectControl4.AckMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.fca.uconnect.global.AckMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.AckMessage)
        com.fca.uconnect.global.GlobalUconnectControl4.AckMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_AckMessage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_AckMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.class, com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.Builder.class);
      }

      // Construct using com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        response_ = 0;

        isTransient_ = false;

        failureReasonCode_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_AckMessage_descriptor;
      }

      public com.fca.uconnect.global.GlobalUconnectControl4.AckMessage getDefaultInstanceForType() {
        return com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.getDefaultInstance();
      }

      public com.fca.uconnect.global.GlobalUconnectControl4.AckMessage build() {
        com.fca.uconnect.global.GlobalUconnectControl4.AckMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.fca.uconnect.global.GlobalUconnectControl4.AckMessage buildPartial() {
        com.fca.uconnect.global.GlobalUconnectControl4.AckMessage result = new com.fca.uconnect.global.GlobalUconnectControl4.AckMessage(this);
        result.response_ = response_;
        result.isTransient_ = isTransient_;
        result.failureReasonCode_ = failureReasonCode_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.fca.uconnect.global.GlobalUconnectControl4.AckMessage) {
          return mergeFrom((com.fca.uconnect.global.GlobalUconnectControl4.AckMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectControl4.AckMessage other) {
        if (other == com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.getDefaultInstance()) return this;
        if (other.response_ != 0) {
          setResponseValue(other.getResponseValue());
        }
        if (other.getIsTransient() != false) {
          setIsTransient(other.getIsTransient());
        }
        if (other.getFailureReasonCode() != 0) {
          setFailureReasonCode(other.getFailureReasonCode());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.fca.uconnect.global.GlobalUconnectControl4.AckMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.fca.uconnect.global.GlobalUconnectControl4.AckMessage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int response_ = 0;
      /**
       * <code>.com.fca.uconnect.global.AckMessage.ResponseEnum response = 1;</code>
       */
      public int getResponseValue() {
        return response_;
      }
      /**
       * <code>.com.fca.uconnect.global.AckMessage.ResponseEnum response = 1;</code>
       */
      public Builder setResponseValue(int value) {
        response_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.AckMessage.ResponseEnum response = 1;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.ResponseEnum getResponse() {
        com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.ResponseEnum result = com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.ResponseEnum.valueOf(response_);
        return result == null ? com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.ResponseEnum.UNRECOGNIZED : result;
      }
      /**
       * <code>.com.fca.uconnect.global.AckMessage.ResponseEnum response = 1;</code>
       */
      public Builder setResponse(com.fca.uconnect.global.GlobalUconnectControl4.AckMessage.ResponseEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        response_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.AckMessage.ResponseEnum response = 1;</code>
       */
      public Builder clearResponse() {
        
        response_ = 0;
        onChanged();
        return this;
      }

      private boolean isTransient_ ;
      /**
       * <pre>
       *&#47; Indicates if the error is transient and to attempt a retry.
       * </pre>
       *
       * <code>bool isTransient = 2;</code>
       */
      public boolean getIsTransient() {
        return isTransient_;
      }
      /**
       * <pre>
       *&#47; Indicates if the error is transient and to attempt a retry.
       * </pre>
       *
       * <code>bool isTransient = 2;</code>
       */
      public Builder setIsTransient(boolean value) {
        
        isTransient_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47; Indicates if the error is transient and to attempt a retry.
       * </pre>
       *
       * <code>bool isTransient = 2;</code>
       */
      public Builder clearIsTransient() {
        
        isTransient_ = false;
        onChanged();
        return this;
      }

      private int failureReasonCode_ ;
      /**
       * <code>int32 failureReasonCode = 3;</code>
       */
      public int getFailureReasonCode() {
        return failureReasonCode_;
      }
      /**
       * <code>int32 failureReasonCode = 3;</code>
       */
      public Builder setFailureReasonCode(int value) {
        
        failureReasonCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 failureReasonCode = 3;</code>
       */
      public Builder clearFailureReasonCode() {
        
        failureReasonCode_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.AckMessage)
    }

    // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.AckMessage)
    private static final com.fca.uconnect.global.GlobalUconnectControl4.AckMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectControl4.AckMessage();
    }

    public static com.fca.uconnect.global.GlobalUconnectControl4.AckMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.fca.uconnect.global.GlobalUconnectControl4.AckMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UconnectAnyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.UconnectAny)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.com.fca.uconnect.global.SQDFPublish sqdfPublish = 1;</code>
     */
    com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish getSqdfPublish();
    /**
     * <code>.com.fca.uconnect.global.SQDFPublish sqdfPublish = 1;</code>
     */
    com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublishOrBuilder getSqdfPublishOrBuilder();

    /**
     * <code>.com.fca.uconnect.global.SQDFResponse sqdfResponse = 2;</code>
     */
    com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse getSqdfResponse();
    /**
     * <code>.com.fca.uconnect.global.SQDFResponse sqdfResponse = 2;</code>
     */
    com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponseOrBuilder getSqdfResponseOrBuilder();

    /**
     * <code>.com.fca.uconnect.global.SQDFRequest sqdfRequest = 3;</code>
     */
    com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest getSqdfRequest();
    /**
     * <code>.com.fca.uconnect.global.SQDFRequest sqdfRequest = 3;</code>
     */
    com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequestOrBuilder getSqdfRequestOrBuilder();

    public com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.MsgCase getMsgCase();
  }
  /**
   * <pre>
   **
   * The UconnectAny message allows for protocol buffer extensions so feature specific messages are decoupled from the top level message.  It is a placeholder to allow a repeated set of extensions.
   * </pre>
   *
   * Protobuf type {@code com.fca.uconnect.global.UconnectAny}
   */
  public  static final class UconnectAny extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.UconnectAny)
      UconnectAnyOrBuilder {
    // Use UconnectAny.newBuilder() to construct.
    private UconnectAny(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UconnectAny() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private UconnectAny(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.Builder subBuilder = null;
              if (msgCase_ == 1) {
                subBuilder = ((com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 1;
              break;
            }
            case 18: {
              com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.Builder subBuilder = null;
              if (msgCase_ == 2) {
                subBuilder = ((com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 2;
              break;
            }
            case 26: {
              com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.Builder subBuilder = null;
              if (msgCase_ == 3) {
                subBuilder = ((com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest) msg_).toBuilder();
              }
              msg_ =
                  input.readMessage(com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest) msg_);
                msg_ = subBuilder.buildPartial();
              }
              msgCase_ = 3;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_UconnectAny_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_UconnectAny_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.class, com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.Builder.class);
    }

    private int msgCase_ = 0;
    private java.lang.Object msg_;
    public enum MsgCase
        implements com.google.protobuf.Internal.EnumLite {
      SQDFPUBLISH(1),
      SQDFRESPONSE(2),
      SQDFREQUEST(3),
      MSG_NOT_SET(0);
      private final int value;
      private MsgCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static MsgCase valueOf(int value) {
        return forNumber(value);
      }

      public static MsgCase forNumber(int value) {
        switch (value) {
          case 1: return SQDFPUBLISH;
          case 2: return SQDFRESPONSE;
          case 3: return SQDFREQUEST;
          case 0: return MSG_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public MsgCase
    getMsgCase() {
      return MsgCase.forNumber(
          msgCase_);
    }

    public static final int SQDFPUBLISH_FIELD_NUMBER = 1;
    /**
     * <code>.com.fca.uconnect.global.SQDFPublish sqdfPublish = 1;</code>
     */
    public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish getSqdfPublish() {
      if (msgCase_ == 1) {
         return (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish) msg_;
      }
      return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.getDefaultInstance();
    }
    /**
     * <code>.com.fca.uconnect.global.SQDFPublish sqdfPublish = 1;</code>
     */
    public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublishOrBuilder getSqdfPublishOrBuilder() {
      if (msgCase_ == 1) {
         return (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish) msg_;
      }
      return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.getDefaultInstance();
    }

    public static final int SQDFRESPONSE_FIELD_NUMBER = 2;
    /**
     * <code>.com.fca.uconnect.global.SQDFResponse sqdfResponse = 2;</code>
     */
    public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse getSqdfResponse() {
      if (msgCase_ == 2) {
         return (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse) msg_;
      }
      return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.getDefaultInstance();
    }
    /**
     * <code>.com.fca.uconnect.global.SQDFResponse sqdfResponse = 2;</code>
     */
    public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponseOrBuilder getSqdfResponseOrBuilder() {
      if (msgCase_ == 2) {
         return (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse) msg_;
      }
      return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.getDefaultInstance();
    }

    public static final int SQDFREQUEST_FIELD_NUMBER = 3;
    /**
     * <code>.com.fca.uconnect.global.SQDFRequest sqdfRequest = 3;</code>
     */
    public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest getSqdfRequest() {
      if (msgCase_ == 3) {
         return (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest) msg_;
      }
      return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.getDefaultInstance();
    }
    /**
     * <code>.com.fca.uconnect.global.SQDFRequest sqdfRequest = 3;</code>
     */
    public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequestOrBuilder getSqdfRequestOrBuilder() {
      if (msgCase_ == 3) {
         return (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest) msg_;
      }
      return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (msgCase_ == 1) {
        output.writeMessage(1, (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish) msg_);
      }
      if (msgCase_ == 2) {
        output.writeMessage(2, (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse) msg_);
      }
      if (msgCase_ == 3) {
        output.writeMessage(3, (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest) msg_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (msgCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish) msg_);
      }
      if (msgCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse) msg_);
      }
      if (msgCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest) msg_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny)) {
        return super.equals(obj);
      }
      com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny other = (com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny) obj;

      boolean result = true;
      result = result && getMsgCase().equals(
          other.getMsgCase());
      if (!result) return false;
      switch (msgCase_) {
        case 1:
          result = result && getSqdfPublish()
              .equals(other.getSqdfPublish());
          break;
        case 2:
          result = result && getSqdfResponse()
              .equals(other.getSqdfResponse());
          break;
        case 3:
          result = result && getSqdfRequest()
              .equals(other.getSqdfRequest());
          break;
        case 0:
        default:
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (msgCase_) {
        case 1:
          hash = (37 * hash) + SQDFPUBLISH_FIELD_NUMBER;
          hash = (53 * hash) + getSqdfPublish().hashCode();
          break;
        case 2:
          hash = (37 * hash) + SQDFRESPONSE_FIELD_NUMBER;
          hash = (53 * hash) + getSqdfResponse().hashCode();
          break;
        case 3:
          hash = (37 * hash) + SQDFREQUEST_FIELD_NUMBER;
          hash = (53 * hash) + getSqdfRequest().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     **
     * The UconnectAny message allows for protocol buffer extensions so feature specific messages are decoupled from the top level message.  It is a placeholder to allow a repeated set of extensions.
     * </pre>
     *
     * Protobuf type {@code com.fca.uconnect.global.UconnectAny}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.UconnectAny)
        com.fca.uconnect.global.GlobalUconnectControl4.UconnectAnyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_UconnectAny_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_UconnectAny_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.class, com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.Builder.class);
      }

      // Construct using com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgCase_ = 0;
        msg_ = null;
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.fca.uconnect.global.GlobalUconnectControl4.internal_static_com_fca_uconnect_global_UconnectAny_descriptor;
      }

      public com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny getDefaultInstanceForType() {
        return com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.getDefaultInstance();
      }

      public com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny build() {
        com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny buildPartial() {
        com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny result = new com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny(this);
        if (msgCase_ == 1) {
          if (sqdfPublishBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = sqdfPublishBuilder_.build();
          }
        }
        if (msgCase_ == 2) {
          if (sqdfResponseBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = sqdfResponseBuilder_.build();
          }
        }
        if (msgCase_ == 3) {
          if (sqdfRequestBuilder_ == null) {
            result.msg_ = msg_;
          } else {
            result.msg_ = sqdfRequestBuilder_.build();
          }
        }
        result.msgCase_ = msgCase_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny) {
          return mergeFrom((com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny other) {
        if (other == com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny.getDefaultInstance()) return this;
        switch (other.getMsgCase()) {
          case SQDFPUBLISH: {
            mergeSqdfPublish(other.getSqdfPublish());
            break;
          }
          case SQDFRESPONSE: {
            mergeSqdfResponse(other.getSqdfResponse());
            break;
          }
          case SQDFREQUEST: {
            mergeSqdfRequest(other.getSqdfRequest());
            break;
          }
          case MSG_NOT_SET: {
            break;
          }
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int msgCase_ = 0;
      private java.lang.Object msg_;
      public MsgCase
          getMsgCase() {
        return MsgCase.forNumber(
            msgCase_);
      }

      public Builder clearMsg() {
        msgCase_ = 0;
        msg_ = null;
        onChanged();
        return this;
      }


      private com.google.protobuf.SingleFieldBuilderV3<
          com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.Builder, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublishOrBuilder> sqdfPublishBuilder_;
      /**
       * <code>.com.fca.uconnect.global.SQDFPublish sqdfPublish = 1;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish getSqdfPublish() {
        if (sqdfPublishBuilder_ == null) {
          if (msgCase_ == 1) {
            return (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish) msg_;
          }
          return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.getDefaultInstance();
        } else {
          if (msgCase_ == 1) {
            return sqdfPublishBuilder_.getMessage();
          }
          return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.getDefaultInstance();
        }
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFPublish sqdfPublish = 1;</code>
       */
      public Builder setSqdfPublish(com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish value) {
        if (sqdfPublishBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          sqdfPublishBuilder_.setMessage(value);
        }
        msgCase_ = 1;
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFPublish sqdfPublish = 1;</code>
       */
      public Builder setSqdfPublish(
          com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.Builder builderForValue) {
        if (sqdfPublishBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          sqdfPublishBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 1;
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFPublish sqdfPublish = 1;</code>
       */
      public Builder mergeSqdfPublish(com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish value) {
        if (sqdfPublishBuilder_ == null) {
          if (msgCase_ == 1 &&
              msg_ != com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.getDefaultInstance()) {
            msg_ = com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.newBuilder((com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 1) {
            sqdfPublishBuilder_.mergeFrom(value);
          }
          sqdfPublishBuilder_.setMessage(value);
        }
        msgCase_ = 1;
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFPublish sqdfPublish = 1;</code>
       */
      public Builder clearSqdfPublish() {
        if (sqdfPublishBuilder_ == null) {
          if (msgCase_ == 1) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 1) {
            msgCase_ = 0;
            msg_ = null;
          }
          sqdfPublishBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFPublish sqdfPublish = 1;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.Builder getSqdfPublishBuilder() {
        return getSqdfPublishFieldBuilder().getBuilder();
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFPublish sqdfPublish = 1;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublishOrBuilder getSqdfPublishOrBuilder() {
        if ((msgCase_ == 1) && (sqdfPublishBuilder_ != null)) {
          return sqdfPublishBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 1) {
            return (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish) msg_;
          }
          return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.getDefaultInstance();
        }
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFPublish sqdfPublish = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.Builder, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublishOrBuilder> 
          getSqdfPublishFieldBuilder() {
        if (sqdfPublishBuilder_ == null) {
          if (!(msgCase_ == 1)) {
            msg_ = com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.getDefaultInstance();
          }
          sqdfPublishBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish.Builder, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublishOrBuilder>(
                  (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFPublish) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 1;
        onChanged();;
        return sqdfPublishBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.Builder, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponseOrBuilder> sqdfResponseBuilder_;
      /**
       * <code>.com.fca.uconnect.global.SQDFResponse sqdfResponse = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse getSqdfResponse() {
        if (sqdfResponseBuilder_ == null) {
          if (msgCase_ == 2) {
            return (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse) msg_;
          }
          return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.getDefaultInstance();
        } else {
          if (msgCase_ == 2) {
            return sqdfResponseBuilder_.getMessage();
          }
          return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.getDefaultInstance();
        }
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFResponse sqdfResponse = 2;</code>
       */
      public Builder setSqdfResponse(com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse value) {
        if (sqdfResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          sqdfResponseBuilder_.setMessage(value);
        }
        msgCase_ = 2;
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFResponse sqdfResponse = 2;</code>
       */
      public Builder setSqdfResponse(
          com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.Builder builderForValue) {
        if (sqdfResponseBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          sqdfResponseBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 2;
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFResponse sqdfResponse = 2;</code>
       */
      public Builder mergeSqdfResponse(com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse value) {
        if (sqdfResponseBuilder_ == null) {
          if (msgCase_ == 2 &&
              msg_ != com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.getDefaultInstance()) {
            msg_ = com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.newBuilder((com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 2) {
            sqdfResponseBuilder_.mergeFrom(value);
          }
          sqdfResponseBuilder_.setMessage(value);
        }
        msgCase_ = 2;
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFResponse sqdfResponse = 2;</code>
       */
      public Builder clearSqdfResponse() {
        if (sqdfResponseBuilder_ == null) {
          if (msgCase_ == 2) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 2) {
            msgCase_ = 0;
            msg_ = null;
          }
          sqdfResponseBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFResponse sqdfResponse = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.Builder getSqdfResponseBuilder() {
        return getSqdfResponseFieldBuilder().getBuilder();
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFResponse sqdfResponse = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponseOrBuilder getSqdfResponseOrBuilder() {
        if ((msgCase_ == 2) && (sqdfResponseBuilder_ != null)) {
          return sqdfResponseBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 2) {
            return (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse) msg_;
          }
          return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.getDefaultInstance();
        }
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFResponse sqdfResponse = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.Builder, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponseOrBuilder> 
          getSqdfResponseFieldBuilder() {
        if (sqdfResponseBuilder_ == null) {
          if (!(msgCase_ == 2)) {
            msg_ = com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.getDefaultInstance();
          }
          sqdfResponseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse.Builder, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponseOrBuilder>(
                  (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFResponse) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 2;
        onChanged();;
        return sqdfResponseBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.Builder, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequestOrBuilder> sqdfRequestBuilder_;
      /**
       * <code>.com.fca.uconnect.global.SQDFRequest sqdfRequest = 3;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest getSqdfRequest() {
        if (sqdfRequestBuilder_ == null) {
          if (msgCase_ == 3) {
            return (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest) msg_;
          }
          return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.getDefaultInstance();
        } else {
          if (msgCase_ == 3) {
            return sqdfRequestBuilder_.getMessage();
          }
          return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.getDefaultInstance();
        }
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFRequest sqdfRequest = 3;</code>
       */
      public Builder setSqdfRequest(com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest value) {
        if (sqdfRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          msg_ = value;
          onChanged();
        } else {
          sqdfRequestBuilder_.setMessage(value);
        }
        msgCase_ = 3;
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFRequest sqdfRequest = 3;</code>
       */
      public Builder setSqdfRequest(
          com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.Builder builderForValue) {
        if (sqdfRequestBuilder_ == null) {
          msg_ = builderForValue.build();
          onChanged();
        } else {
          sqdfRequestBuilder_.setMessage(builderForValue.build());
        }
        msgCase_ = 3;
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFRequest sqdfRequest = 3;</code>
       */
      public Builder mergeSqdfRequest(com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest value) {
        if (sqdfRequestBuilder_ == null) {
          if (msgCase_ == 3 &&
              msg_ != com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.getDefaultInstance()) {
            msg_ = com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.newBuilder((com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest) msg_)
                .mergeFrom(value).buildPartial();
          } else {
            msg_ = value;
          }
          onChanged();
        } else {
          if (msgCase_ == 3) {
            sqdfRequestBuilder_.mergeFrom(value);
          }
          sqdfRequestBuilder_.setMessage(value);
        }
        msgCase_ = 3;
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFRequest sqdfRequest = 3;</code>
       */
      public Builder clearSqdfRequest() {
        if (sqdfRequestBuilder_ == null) {
          if (msgCase_ == 3) {
            msgCase_ = 0;
            msg_ = null;
            onChanged();
          }
        } else {
          if (msgCase_ == 3) {
            msgCase_ = 0;
            msg_ = null;
          }
          sqdfRequestBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFRequest sqdfRequest = 3;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.Builder getSqdfRequestBuilder() {
        return getSqdfRequestFieldBuilder().getBuilder();
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFRequest sqdfRequest = 3;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequestOrBuilder getSqdfRequestOrBuilder() {
        if ((msgCase_ == 3) && (sqdfRequestBuilder_ != null)) {
          return sqdfRequestBuilder_.getMessageOrBuilder();
        } else {
          if (msgCase_ == 3) {
            return (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest) msg_;
          }
          return com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.getDefaultInstance();
        }
      }
      /**
       * <code>.com.fca.uconnect.global.SQDFRequest sqdfRequest = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.Builder, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequestOrBuilder> 
          getSqdfRequestFieldBuilder() {
        if (sqdfRequestBuilder_ == null) {
          if (!(msgCase_ == 3)) {
            msg_ = com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.getDefaultInstance();
          }
          sqdfRequestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest.Builder, com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequestOrBuilder>(
                  (com.fca.uconnect.global.GlobalUconnectExtSQDF4.SQDFRequest) msg_,
                  getParentForChildren(),
                  isClean());
          msg_ = null;
        }
        msgCase_ = 3;
        onChanged();;
        return sqdfRequestBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.UconnectAny)
    }

    // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.UconnectAny)
    private static final com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny();
    }

    public static com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.fca.uconnect.global.GlobalUconnectControl4.UconnectAny getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_UconnectMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_UconnectMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_KeepAliveMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_KeepAliveMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_AckMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_AckMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_UconnectAny_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_UconnectAny_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\036Global_Uconnect_Control4.proto\022\027com.fc" +
      "a.uconnect.global\032\037Global_Uconnect_Ext_S" +
      "QDF4.proto\"\257\001\n\017UconnectMessage\022\021\n\ttimest" +
      "amp\030\001 \001(\003\022\021\n\tsessionId\030\002 \001(\014\022\021\n\tmessageI" +
      "d\030\003 \001(\005\022\025\n\rcorrelationId\030\004 \001(\005\0226\n\010messag" +
      "es\030\005 \003(\0132$.com.fca.uconnect.global.Uconn" +
      "ectAny\022\024\n\014apiVersionId\030\006 \001(\014\"%\n\020KeepAliv" +
      "eMessage\022\021\n\ttimestamp\030\001 \001(\003\"\252\001\n\nAckMessa" +
      "ge\022B\n\010response\030\001 \001(\01620.com.fca.uconnect." +
      "global.AckMessage.ResponseEnum\022\023\n\013isTran",
      "sient\030\002 \001(\010\022\031\n\021failureReasonCode\030\003 \001(\005\"(" +
      "\n\014ResponseEnum\022\013\n\007SUCCESS\020\000\022\013\n\007FAILURE\020\001" +
      "\"\315\001\n\013UconnectAny\022;\n\013sqdfPublish\030\001 \001(\0132$." +
      "com.fca.uconnect.global.SQDFPublishH\000\022=\n" +
      "\014sqdfResponse\030\002 \001(\0132%.com.fca.uconnect.g" +
      "lobal.SQDFResponseH\000\022;\n\013sqdfRequest\030\003 \001(" +
      "\0132$.com.fca.uconnect.global.SQDFRequestH" +
      "\000B\005\n\003msgb\006proto3"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.fca.uconnect.global.GlobalUconnectExtSQDF4.getDescriptor(),
        }, assigner);
    internal_static_com_fca_uconnect_global_UconnectMessage_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_com_fca_uconnect_global_UconnectMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_UconnectMessage_descriptor,
        new java.lang.String[] { "Timestamp", "SessionId", "MessageId", "CorrelationId", "Messages", "ApiVersionId", });
    internal_static_com_fca_uconnect_global_KeepAliveMessage_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_com_fca_uconnect_global_KeepAliveMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_KeepAliveMessage_descriptor,
        new java.lang.String[] { "Timestamp", });
    internal_static_com_fca_uconnect_global_AckMessage_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_com_fca_uconnect_global_AckMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_AckMessage_descriptor,
        new java.lang.String[] { "Response", "IsTransient", "FailureReasonCode", });
    internal_static_com_fca_uconnect_global_UconnectAny_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_com_fca_uconnect_global_UconnectAny_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_UconnectAny_descriptor,
        new java.lang.String[] { "SqdfPublish", "SqdfResponse", "SqdfRequest", "Msg", });
    com.fca.uconnect.global.GlobalUconnectExtSQDF4.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
