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

package io.confluent.kafka.serializers.protobuf.test;

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

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code io.confluent.kafka.serializers.protobuf.test.Status}
   */
  public enum Status
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>ACTIVE = 0;</code>
     */
    ACTIVE(0),
    /**
     * <code>INACTIVE = 1;</code>
     */
    INACTIVE(1),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>ACTIVE = 0;</code>
     */
    public static final int ACTIVE_VALUE = 0;
    /**
     * <code>INACTIVE = 1;</code>
     */
    public static final int INACTIVE_VALUE = 1;


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

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

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

    public static com.google.protobuf.Internal.EnumLiteMap<Status>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        Status> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<Status>() {
            public Status findValueByNumber(int number) {
              return Status.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 io.confluent.kafka.serializers.protobuf.test.NestedTestProto.getDescriptor().getEnumTypes().get(0);
    }

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

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

    // @@protoc_insertion_point(enum_scope:io.confluent.kafka.serializers.protobuf.test.Status)
  }

  public interface UserIdOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.confluent.kafka.serializers.protobuf.test.UserId)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string kafka_user_id = 1;</code>
     * @return The kafkaUserId.
     */
    java.lang.String getKafkaUserId();
    /**
     * <code>string kafka_user_id = 1;</code>
     * @return The bytes for kafkaUserId.
     */
    com.google.protobuf.ByteString
        getKafkaUserIdBytes();

    /**
     * <code>int32 other_user_id = 2;</code>
     * @return The otherUserId.
     */
    int getOtherUserId();

    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
     * @return Whether the anotherId field is set.
     */
    boolean hasAnotherId();
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
     * @return The anotherId.
     */
    io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId getAnotherId();
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
     */
    io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageIdOrBuilder getAnotherIdOrBuilder();

    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.UserIdCase getUserIdCase();
  }
  /**
   * Protobuf type {@code io.confluent.kafka.serializers.protobuf.test.UserId}
   */
  public  static final class UserId extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.confluent.kafka.serializers.protobuf.test.UserId)
      UserIdOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UserId.newBuilder() to construct.
    private UserId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UserId() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UserId(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              userIdCase_ = 1;
              userId_ = s;
              break;
            }
            case 16: {
              userIdCase_ = 2;
              userId_ = input.readInt32();
              break;
            }
            case 26: {
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.Builder subBuilder = null;
              if (userIdCase_ == 3) {
                subBuilder = ((io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId) userId_).toBuilder();
              }
              userId_ =
                  input.readMessage(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId) userId_);
                userId_ = subBuilder.buildPartial();
              }
              userIdCase_ = 3;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_UserId_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_UserId_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.class, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.Builder.class);
    }

    private int userIdCase_ = 0;
    private java.lang.Object userId_;
    public enum UserIdCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      KAFKA_USER_ID(1),
      OTHER_USER_ID(2),
      ANOTHER_ID(3),
      USERID_NOT_SET(0);
      private final int value;
      private UserIdCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static UserIdCase valueOf(int value) {
        return forNumber(value);
      }

      public static UserIdCase forNumber(int value) {
        switch (value) {
          case 1: return KAFKA_USER_ID;
          case 2: return OTHER_USER_ID;
          case 3: return ANOTHER_ID;
          case 0: return USERID_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public UserIdCase
    getUserIdCase() {
      return UserIdCase.forNumber(
          userIdCase_);
    }

    public static final int KAFKA_USER_ID_FIELD_NUMBER = 1;
    /**
     * <code>string kafka_user_id = 1;</code>
     * @return The kafkaUserId.
     */
    public java.lang.String getKafkaUserId() {
      java.lang.Object ref = "";
      if (userIdCase_ == 1) {
        ref = userId_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (userIdCase_ == 1) {
          userId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>string kafka_user_id = 1;</code>
     * @return The bytes for kafkaUserId.
     */
    public com.google.protobuf.ByteString
        getKafkaUserIdBytes() {
      java.lang.Object ref = "";
      if (userIdCase_ == 1) {
        ref = userId_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (userIdCase_ == 1) {
          userId_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OTHER_USER_ID_FIELD_NUMBER = 2;
    /**
     * <code>int32 other_user_id = 2;</code>
     * @return The otherUserId.
     */
    public int getOtherUserId() {
      if (userIdCase_ == 2) {
        return (java.lang.Integer) userId_;
      }
      return 0;
    }

    public static final int ANOTHER_ID_FIELD_NUMBER = 3;
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
     * @return Whether the anotherId field is set.
     */
    public boolean hasAnotherId() {
      return userIdCase_ == 3;
    }
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
     * @return The anotherId.
     */
    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId getAnotherId() {
      if (userIdCase_ == 3) {
         return (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId) userId_;
      }
      return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.getDefaultInstance();
    }
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
     */
    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageIdOrBuilder getAnotherIdOrBuilder() {
      if (userIdCase_ == 3) {
         return (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId) userId_;
      }
      return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (userIdCase_ == 1) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, userId_);
      }
      if (userIdCase_ == 2) {
        output.writeInt32(
            2, (int)((java.lang.Integer) userId_));
      }
      if (userIdCase_ == 3) {
        output.writeMessage(3, (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId) userId_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (userIdCase_ == 1) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, userId_);
      }
      if (userIdCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              2, (int)((java.lang.Integer) userId_));
      }
      if (userIdCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId) userId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId)) {
        return super.equals(obj);
      }
      io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId other = (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId) obj;

      if (!getUserIdCase().equals(other.getUserIdCase())) return false;
      switch (userIdCase_) {
        case 1:
          if (!getKafkaUserId()
              .equals(other.getKafkaUserId())) return false;
          break;
        case 2:
          if (getOtherUserId()
              != other.getOtherUserId()) return false;
          break;
        case 3:
          if (!getAnotherId()
              .equals(other.getAnotherId())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (userIdCase_) {
        case 1:
          hash = (37 * hash) + KAFKA_USER_ID_FIELD_NUMBER;
          hash = (53 * hash) + getKafkaUserId().hashCode();
          break;
        case 2:
          hash = (37 * hash) + OTHER_USER_ID_FIELD_NUMBER;
          hash = (53 * hash) + getOtherUserId();
          break;
        case 3:
          hash = (37 * hash) + ANOTHER_ID_FIELD_NUMBER;
          hash = (53 * hash) + getAnotherId().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId 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 io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId 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 io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code io.confluent.kafka.serializers.protobuf.test.UserId}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:io.confluent.kafka.serializers.protobuf.test.UserId)
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserIdOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_UserId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_UserId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.class, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.Builder.class);
      }

      // Construct using io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_UserId_descriptor;
      }

      @java.lang.Override
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId getDefaultInstanceForType() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.getDefaultInstance();
      }

      @java.lang.Override
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId build() {
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId buildPartial() {
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId result = new io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId(this);
        if (userIdCase_ == 1) {
          result.userId_ = userId_;
        }
        if (userIdCase_ == 2) {
          result.userId_ = userId_;
        }
        if (userIdCase_ == 3) {
          if (anotherIdBuilder_ == null) {
            result.userId_ = userId_;
          } else {
            result.userId_ = anotherIdBuilder_.build();
          }
        }
        result.userIdCase_ = userIdCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId) {
          return mergeFrom((io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId other) {
        if (other == io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.getDefaultInstance()) return this;
        switch (other.getUserIdCase()) {
          case KAFKA_USER_ID: {
            userIdCase_ = 1;
            userId_ = other.userId_;
            onChanged();
            break;
          }
          case OTHER_USER_ID: {
            setOtherUserId(other.getOtherUserId());
            break;
          }
          case ANOTHER_ID: {
            mergeAnotherId(other.getAnotherId());
            break;
          }
          case USERID_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int userIdCase_ = 0;
      private java.lang.Object userId_;
      public UserIdCase
          getUserIdCase() {
        return UserIdCase.forNumber(
            userIdCase_);
      }

      public Builder clearUserId() {
        userIdCase_ = 0;
        userId_ = null;
        onChanged();
        return this;
      }


      /**
       * <code>string kafka_user_id = 1;</code>
       * @return The kafkaUserId.
       */
      public java.lang.String getKafkaUserId() {
        java.lang.Object ref = "";
        if (userIdCase_ == 1) {
          ref = userId_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (userIdCase_ == 1) {
            userId_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string kafka_user_id = 1;</code>
       * @return The bytes for kafkaUserId.
       */
      public com.google.protobuf.ByteString
          getKafkaUserIdBytes() {
        java.lang.Object ref = "";
        if (userIdCase_ == 1) {
          ref = userId_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (userIdCase_ == 1) {
            userId_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string kafka_user_id = 1;</code>
       * @param value The kafkaUserId to set.
       * @return This builder for chaining.
       */
      public Builder setKafkaUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  userIdCase_ = 1;
        userId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string kafka_user_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearKafkaUserId() {
        if (userIdCase_ == 1) {
          userIdCase_ = 0;
          userId_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <code>string kafka_user_id = 1;</code>
       * @param value The bytes for kafkaUserId to set.
       * @return This builder for chaining.
       */
      public Builder setKafkaUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        userIdCase_ = 1;
        userId_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>int32 other_user_id = 2;</code>
       * @return The otherUserId.
       */
      public int getOtherUserId() {
        if (userIdCase_ == 2) {
          return (java.lang.Integer) userId_;
        }
        return 0;
      }
      /**
       * <code>int32 other_user_id = 2;</code>
       * @param value The otherUserId to set.
       * @return This builder for chaining.
       */
      public Builder setOtherUserId(int value) {
        userIdCase_ = 2;
        userId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 other_user_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearOtherUserId() {
        if (userIdCase_ == 2) {
          userIdCase_ = 0;
          userId_ = null;
          onChanged();
        }
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.Builder, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageIdOrBuilder> anotherIdBuilder_;
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
       * @return Whether the anotherId field is set.
       */
      public boolean hasAnotherId() {
        return userIdCase_ == 3;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
       * @return The anotherId.
       */
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId getAnotherId() {
        if (anotherIdBuilder_ == null) {
          if (userIdCase_ == 3) {
            return (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId) userId_;
          }
          return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.getDefaultInstance();
        } else {
          if (userIdCase_ == 3) {
            return anotherIdBuilder_.getMessage();
          }
          return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.getDefaultInstance();
        }
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
       */
      public Builder setAnotherId(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId value) {
        if (anotherIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userId_ = value;
          onChanged();
        } else {
          anotherIdBuilder_.setMessage(value);
        }
        userIdCase_ = 3;
        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
       */
      public Builder setAnotherId(
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.Builder builderForValue) {
        if (anotherIdBuilder_ == null) {
          userId_ = builderForValue.build();
          onChanged();
        } else {
          anotherIdBuilder_.setMessage(builderForValue.build());
        }
        userIdCase_ = 3;
        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
       */
      public Builder mergeAnotherId(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId value) {
        if (anotherIdBuilder_ == null) {
          if (userIdCase_ == 3 &&
              userId_ != io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.getDefaultInstance()) {
            userId_ = io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.newBuilder((io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId) userId_)
                .mergeFrom(value).buildPartial();
          } else {
            userId_ = value;
          }
          onChanged();
        } else {
          if (userIdCase_ == 3) {
            anotherIdBuilder_.mergeFrom(value);
          }
          anotherIdBuilder_.setMessage(value);
        }
        userIdCase_ = 3;
        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
       */
      public Builder clearAnotherId() {
        if (anotherIdBuilder_ == null) {
          if (userIdCase_ == 3) {
            userIdCase_ = 0;
            userId_ = null;
            onChanged();
          }
        } else {
          if (userIdCase_ == 3) {
            userIdCase_ = 0;
            userId_ = null;
          }
          anotherIdBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
       */
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.Builder getAnotherIdBuilder() {
        return getAnotherIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
       */
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageIdOrBuilder getAnotherIdOrBuilder() {
        if ((userIdCase_ == 3) && (anotherIdBuilder_ != null)) {
          return anotherIdBuilder_.getMessageOrBuilder();
        } else {
          if (userIdCase_ == 3) {
            return (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId) userId_;
          }
          return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.getDefaultInstance();
        }
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.MessageId another_id = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.Builder, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageIdOrBuilder> 
          getAnotherIdFieldBuilder() {
        if (anotherIdBuilder_ == null) {
          if (!(userIdCase_ == 3)) {
            userId_ = io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.getDefaultInstance();
          }
          anotherIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.Builder, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageIdOrBuilder>(
                  (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId) userId_,
                  getParentForChildren(),
                  isClean());
          userId_ = null;
        }
        userIdCase_ = 3;
        onChanged();;
        return anotherIdBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:io.confluent.kafka.serializers.protobuf.test.UserId)
    }

    // @@protoc_insertion_point(class_scope:io.confluent.kafka.serializers.protobuf.test.UserId)
    private static final io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId();
    }

    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MessageIdOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.confluent.kafka.serializers.protobuf.test.MessageId)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string id = 1;</code>
     * @return The id.
     */
    java.lang.String getId();
    /**
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();
  }
  /**
   * Protobuf type {@code io.confluent.kafka.serializers.protobuf.test.MessageId}
   */
  public  static final class MessageId extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.confluent.kafka.serializers.protobuf.test.MessageId)
      MessageIdOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MessageId.newBuilder() to construct.
    private MessageId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MessageId() {
      id_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MessageId(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              id_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_MessageId_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_MessageId_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.class, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * <code>string id = 1;</code>
     * @return The id.
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId)) {
        return super.equals(obj);
      }
      io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId other = (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId) obj;

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

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

    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId 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 io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId 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 io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code io.confluent.kafka.serializers.protobuf.test.MessageId}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:io.confluent.kafka.serializers.protobuf.test.MessageId)
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageIdOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_MessageId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_MessageId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.class, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.Builder.class);
      }

      // Construct using io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_MessageId_descriptor;
      }

      @java.lang.Override
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId getDefaultInstanceForType() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.getDefaultInstance();
      }

      @java.lang.Override
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId build() {
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId buildPartial() {
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId result = new io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId(this);
        result.id_ = id_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId) {
          return mergeFrom((io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId other) {
        if (other == io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object id_ = "";
      /**
       * <code>string id = 1;</code>
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <code>string id = 1;</code>
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:io.confluent.kafka.serializers.protobuf.test.MessageId)
    }

    // @@protoc_insertion_point(class_scope:io.confluent.kafka.serializers.protobuf.test.MessageId)
    private static final io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId();
    }

    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.MessageId getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ComplexTypeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.confluent.kafka.serializers.protobuf.test.ComplexType)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string one_id = 1;</code>
     * @return The oneId.
     */
    java.lang.String getOneId();
    /**
     * <code>string one_id = 1;</code>
     * @return The bytes for oneId.
     */
    com.google.protobuf.ByteString
        getOneIdBytes();

    /**
     * <code>int32 other_id = 2;</code>
     * @return The otherId.
     */
    int getOtherId();

    /**
     * <code>bool is_active = 3;</code>
     * @return The isActive.
     */
    boolean getIsActive();

    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.SomeValCase getSomeValCase();
  }
  /**
   * Protobuf type {@code io.confluent.kafka.serializers.protobuf.test.ComplexType}
   */
  public  static final class ComplexType extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.confluent.kafka.serializers.protobuf.test.ComplexType)
      ComplexTypeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ComplexType.newBuilder() to construct.
    private ComplexType(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ComplexType() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ComplexType(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              someValCase_ = 1;
              someVal_ = s;
              break;
            }
            case 16: {
              someValCase_ = 2;
              someVal_ = input.readInt32();
              break;
            }
            case 24: {

              isActive_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_ComplexType_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_ComplexType_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.class, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.Builder.class);
    }

    private int someValCase_ = 0;
    private java.lang.Object someVal_;
    public enum SomeValCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      ONE_ID(1),
      OTHER_ID(2),
      SOMEVAL_NOT_SET(0);
      private final int value;
      private SomeValCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static SomeValCase valueOf(int value) {
        return forNumber(value);
      }

      public static SomeValCase forNumber(int value) {
        switch (value) {
          case 1: return ONE_ID;
          case 2: return OTHER_ID;
          case 0: return SOMEVAL_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public SomeValCase
    getSomeValCase() {
      return SomeValCase.forNumber(
          someValCase_);
    }

    public static final int ONE_ID_FIELD_NUMBER = 1;
    /**
     * <code>string one_id = 1;</code>
     * @return The oneId.
     */
    public java.lang.String getOneId() {
      java.lang.Object ref = "";
      if (someValCase_ == 1) {
        ref = someVal_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (someValCase_ == 1) {
          someVal_ = s;
        }
        return s;
      }
    }
    /**
     * <code>string one_id = 1;</code>
     * @return The bytes for oneId.
     */
    public com.google.protobuf.ByteString
        getOneIdBytes() {
      java.lang.Object ref = "";
      if (someValCase_ == 1) {
        ref = someVal_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (someValCase_ == 1) {
          someVal_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OTHER_ID_FIELD_NUMBER = 2;
    /**
     * <code>int32 other_id = 2;</code>
     * @return The otherId.
     */
    public int getOtherId() {
      if (someValCase_ == 2) {
        return (java.lang.Integer) someVal_;
      }
      return 0;
    }

    public static final int IS_ACTIVE_FIELD_NUMBER = 3;
    private boolean isActive_;
    /**
     * <code>bool is_active = 3;</code>
     * @return The isActive.
     */
    public boolean getIsActive() {
      return isActive_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (someValCase_ == 1) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, someVal_);
      }
      if (someValCase_ == 2) {
        output.writeInt32(
            2, (int)((java.lang.Integer) someVal_));
      }
      if (isActive_ != false) {
        output.writeBool(3, isActive_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (someValCase_ == 1) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, someVal_);
      }
      if (someValCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              2, (int)((java.lang.Integer) someVal_));
      }
      if (isActive_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, isActive_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType)) {
        return super.equals(obj);
      }
      io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType other = (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType) obj;

      if (getIsActive()
          != other.getIsActive()) return false;
      if (!getSomeValCase().equals(other.getSomeValCase())) return false;
      switch (someValCase_) {
        case 1:
          if (!getOneId()
              .equals(other.getOneId())) return false;
          break;
        case 2:
          if (getOtherId()
              != other.getOtherId()) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + IS_ACTIVE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsActive());
      switch (someValCase_) {
        case 1:
          hash = (37 * hash) + ONE_ID_FIELD_NUMBER;
          hash = (53 * hash) + getOneId().hashCode();
          break;
        case 2:
          hash = (37 * hash) + OTHER_ID_FIELD_NUMBER;
          hash = (53 * hash) + getOtherId();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType 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 io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType 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 io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code io.confluent.kafka.serializers.protobuf.test.ComplexType}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:io.confluent.kafka.serializers.protobuf.test.ComplexType)
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexTypeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_ComplexType_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_ComplexType_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.class, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.Builder.class);
      }

      // Construct using io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        isActive_ = false;

        someValCase_ = 0;
        someVal_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_ComplexType_descriptor;
      }

      @java.lang.Override
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType getDefaultInstanceForType() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.getDefaultInstance();
      }

      @java.lang.Override
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType build() {
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType buildPartial() {
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType result = new io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType(this);
        if (someValCase_ == 1) {
          result.someVal_ = someVal_;
        }
        if (someValCase_ == 2) {
          result.someVal_ = someVal_;
        }
        result.isActive_ = isActive_;
        result.someValCase_ = someValCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType) {
          return mergeFrom((io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType other) {
        if (other == io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.getDefaultInstance()) return this;
        if (other.getIsActive() != false) {
          setIsActive(other.getIsActive());
        }
        switch (other.getSomeValCase()) {
          case ONE_ID: {
            someValCase_ = 1;
            someVal_ = other.someVal_;
            onChanged();
            break;
          }
          case OTHER_ID: {
            setOtherId(other.getOtherId());
            break;
          }
          case SOMEVAL_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int someValCase_ = 0;
      private java.lang.Object someVal_;
      public SomeValCase
          getSomeValCase() {
        return SomeValCase.forNumber(
            someValCase_);
      }

      public Builder clearSomeVal() {
        someValCase_ = 0;
        someVal_ = null;
        onChanged();
        return this;
      }


      /**
       * <code>string one_id = 1;</code>
       * @return The oneId.
       */
      public java.lang.String getOneId() {
        java.lang.Object ref = "";
        if (someValCase_ == 1) {
          ref = someVal_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (someValCase_ == 1) {
            someVal_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string one_id = 1;</code>
       * @return The bytes for oneId.
       */
      public com.google.protobuf.ByteString
          getOneIdBytes() {
        java.lang.Object ref = "";
        if (someValCase_ == 1) {
          ref = someVal_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (someValCase_ == 1) {
            someVal_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string one_id = 1;</code>
       * @param value The oneId to set.
       * @return This builder for chaining.
       */
      public Builder setOneId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  someValCase_ = 1;
        someVal_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string one_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOneId() {
        if (someValCase_ == 1) {
          someValCase_ = 0;
          someVal_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <code>string one_id = 1;</code>
       * @param value The bytes for oneId to set.
       * @return This builder for chaining.
       */
      public Builder setOneIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        someValCase_ = 1;
        someVal_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>int32 other_id = 2;</code>
       * @return The otherId.
       */
      public int getOtherId() {
        if (someValCase_ == 2) {
          return (java.lang.Integer) someVal_;
        }
        return 0;
      }
      /**
       * <code>int32 other_id = 2;</code>
       * @param value The otherId to set.
       * @return This builder for chaining.
       */
      public Builder setOtherId(int value) {
        someValCase_ = 2;
        someVal_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 other_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearOtherId() {
        if (someValCase_ == 2) {
          someValCase_ = 0;
          someVal_ = null;
          onChanged();
        }
        return this;
      }

      private boolean isActive_ ;
      /**
       * <code>bool is_active = 3;</code>
       * @return The isActive.
       */
      public boolean getIsActive() {
        return isActive_;
      }
      /**
       * <code>bool is_active = 3;</code>
       * @param value The isActive to set.
       * @return This builder for chaining.
       */
      public Builder setIsActive(boolean value) {
        
        isActive_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_active = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsActive() {
        
        isActive_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:io.confluent.kafka.serializers.protobuf.test.ComplexType)
    }

    // @@protoc_insertion_point(class_scope:io.confluent.kafka.serializers.protobuf.test.ComplexType)
    private static final io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType();
    }

    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NestedMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.confluent.kafka.serializers.protobuf.test.NestedMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
     * @return Whether the userId field is set.
     */
    boolean hasUserId();
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
     * @return The userId.
     */
    io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId getUserId();
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
     */
    io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserIdOrBuilder getUserIdOrBuilder();

    /**
     * <code>bool is_active = 2;</code>
     * @return The isActive.
     */
    boolean getIsActive();

    /**
     * <code>repeated string experiments_active = 3;</code>
     * @return A list containing the experimentsActive.
     */
    java.util.List<java.lang.String>
        getExperimentsActiveList();
    /**
     * <code>repeated string experiments_active = 3;</code>
     * @return The count of experimentsActive.
     */
    int getExperimentsActiveCount();
    /**
     * <code>repeated string experiments_active = 3;</code>
     * @param index The index of the element to return.
     * @return The experimentsActive at the given index.
     */
    java.lang.String getExperimentsActive(int index);
    /**
     * <code>repeated string experiments_active = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the experimentsActive at the given index.
     */
    com.google.protobuf.ByteString
        getExperimentsActiveBytes(int index);

    /**
     * <code>.google.protobuf.Timestamp updated_at = 4;</code>
     * @return Whether the updatedAt field is set.
     */
    boolean hasUpdatedAt();
    /**
     * <code>.google.protobuf.Timestamp updated_at = 4;</code>
     * @return The updatedAt.
     */
    com.google.protobuf.Timestamp getUpdatedAt();
    /**
     * <code>.google.protobuf.Timestamp updated_at = 4;</code>
     */
    com.google.protobuf.TimestampOrBuilder getUpdatedAtOrBuilder();

    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.Status status = 5;</code>
     * @return The enum numeric value on the wire for status.
     */
    int getStatusValue();
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.Status status = 5;</code>
     * @return The status.
     */
    io.confluent.kafka.serializers.protobuf.test.NestedTestProto.Status getStatus();

    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
     * @return Whether the complexType field is set.
     */
    boolean hasComplexType();
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
     * @return The complexType.
     */
    io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType getComplexType();
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
     */
    io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexTypeOrBuilder getComplexTypeOrBuilder();

    /**
     * <code>map&lt;string, string&gt; map_type = 7;</code>
     */
    int getMapTypeCount();
    /**
     * <code>map&lt;string, string&gt; map_type = 7;</code>
     */
    boolean containsMapType(
        java.lang.String key);
    /**
     * Use {@link #getMapTypeMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getMapType();
    /**
     * <code>map&lt;string, string&gt; map_type = 7;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getMapTypeMap();
    /**
     * <code>map&lt;string, string&gt; map_type = 7;</code>
     */

    java.lang.String getMapTypeOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * <code>map&lt;string, string&gt; map_type = 7;</code>
     */

    java.lang.String getMapTypeOrThrow(
        java.lang.String key);

    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
     * @return Whether the inner field is set.
     */
    boolean hasInner();
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
     * @return The inner.
     */
    io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage getInner();
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
     */
    io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessageOrBuilder getInnerOrBuilder();
  }
  /**
   * <pre>
   * Complex message using nested protos and repeated fields
   * </pre>
   *
   * Protobuf type {@code io.confluent.kafka.serializers.protobuf.test.NestedMessage}
   */
  public  static final class NestedMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.confluent.kafka.serializers.protobuf.test.NestedMessage)
      NestedMessageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NestedMessage.newBuilder() to construct.
    private NestedMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NestedMessage() {
      experimentsActive_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      status_ = 0;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private NestedMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.Builder subBuilder = null;
              if (userId_ != null) {
                subBuilder = userId_.toBuilder();
              }
              userId_ = input.readMessage(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(userId_);
                userId_ = subBuilder.buildPartial();
              }

              break;
            }
            case 16: {

              isActive_ = input.readBool();
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                experimentsActive_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              experimentsActive_.add(s);
              break;
            }
            case 34: {
              com.google.protobuf.Timestamp.Builder subBuilder = null;
              if (updatedAt_ != null) {
                subBuilder = updatedAt_.toBuilder();
              }
              updatedAt_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(updatedAt_);
                updatedAt_ = subBuilder.buildPartial();
              }

              break;
            }
            case 40: {
              int rawValue = input.readEnum();

              status_ = rawValue;
              break;
            }
            case 50: {
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.Builder subBuilder = null;
              if (complexType_ != null) {
                subBuilder = complexType_.toBuilder();
              }
              complexType_ = input.readMessage(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(complexType_);
                complexType_ = subBuilder.buildPartial();
              }

              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                mapType_ = com.google.protobuf.MapField.newMapField(
                    MapTypeDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000002;
              }
              com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
              mapType__ = input.readMessage(
                  MapTypeDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              mapType_.getMutableMap().put(
                  mapType__.getKey(), mapType__.getValue());
              break;
            }
            case 66: {
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.Builder subBuilder = null;
              if (inner_ != null) {
                subBuilder = inner_.toBuilder();
              }
              inner_ = input.readMessage(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(inner_);
                inner_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          experimentsActive_ = experimentsActive_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 7:
          return internalGetMapType();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.class, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.Builder.class);
    }

    /**
     * Protobuf enum {@code io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerEnum}
     */
    public enum InnerEnum
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>ZERO = 0;</code>
       */
      ZERO(0),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>ALSO_ZERO = 0;</code>
       */
      public static final InnerEnum ALSO_ZERO = ZERO;
      /**
       * <code>ZERO = 0;</code>
       */
      public static final int ZERO_VALUE = 0;
      /**
       * <code>ALSO_ZERO = 0;</code>
       */
      public static final int ALSO_ZERO_VALUE = 0;


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

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

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

      public static com.google.protobuf.Internal.EnumLiteMap<InnerEnum>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          InnerEnum> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<InnerEnum>() {
              public InnerEnum findValueByNumber(int number) {
                return InnerEnum.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 io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.getDescriptor().getEnumTypes().get(0);
      }

      private static final InnerEnum[] VALUES = {
        ZERO, ALSO_ZERO, 
      };

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

      // @@protoc_insertion_point(enum_scope:io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerEnum)
    }

    public interface InnerMessageOrBuilder extends
        // @@protoc_insertion_point(interface_extends:io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage)
        com.google.protobuf.MessageOrBuilder {

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

      /**
       * <code>repeated int32 ids = 2 [packed = true];</code>
       * @return A list containing the ids.
       */
      java.util.List<java.lang.Integer> getIdsList();
      /**
       * <code>repeated int32 ids = 2 [packed = true];</code>
       * @return The count of ids.
       */
      int getIdsCount();
      /**
       * <code>repeated int32 ids = 2 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The ids at the given index.
       */
      int getIds(int index);
    }
    /**
     * Protobuf type {@code io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage}
     */
    public  static final class InnerMessage extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage)
        InnerMessageOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use InnerMessage.newBuilder() to construct.
      private InnerMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private InnerMessage() {
        id_ = "";
        ids_ = emptyIntList();
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private InnerMessage(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();

                id_ = s;
                break;
              }
              case 16: {
                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                  ids_ = newIntList();
                  mutable_bitField0_ |= 0x00000001;
                }
                ids_.addInt(input.readInt32());
                break;
              }
              case 18: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
                  ids_ = newIntList();
                  mutable_bitField0_ |= 0x00000001;
                }
                while (input.getBytesUntilLimit() > 0) {
                  ids_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000001) != 0)) {
            ids_.makeImmutable(); // C
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_InnerMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_InnerMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.class, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.Builder.class);
      }

      public static final int ID_FIELD_NUMBER = 1;
      private volatile java.lang.Object id_;
      /**
       * <code>string id = 1[json_name = "id"];</code>
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        }
      }
      /**
       * <code>string id = 1[json_name = "id"];</code>
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int IDS_FIELD_NUMBER = 2;
      private com.google.protobuf.Internal.IntList ids_;
      /**
       * <code>repeated int32 ids = 2 [packed = true];</code>
       * @return A list containing the ids.
       */
      public java.util.List<java.lang.Integer>
          getIdsList() {
        return ids_;
      }
      /**
       * <code>repeated int32 ids = 2 [packed = true];</code>
       * @return The count of ids.
       */
      public int getIdsCount() {
        return ids_.size();
      }
      /**
       * <code>repeated int32 ids = 2 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The ids at the given index.
       */
      public int getIds(int index) {
        return ids_.getInt(index);
      }
      private int idsMemoizedSerializedSize = -1;

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (!getIdBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
        }
        if (getIdsList().size() > 0) {
          output.writeUInt32NoTag(18);
          output.writeUInt32NoTag(idsMemoizedSerializedSize);
        }
        for (int i = 0; i < ids_.size(); i++) {
          output.writeInt32NoTag(ids_.getInt(i));
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (!getIdBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < ids_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(ids_.getInt(i));
          }
          size += dataSize;
          if (!getIdsList().isEmpty()) {
            size += 1;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          idsMemoizedSerializedSize = dataSize;
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage)) {
          return super.equals(obj);
        }
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage other = (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage) obj;

        if (!getId()
            .equals(other.getId())) return false;
        if (!getIdsList()
            .equals(other.getIdsList())) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + ID_FIELD_NUMBER;
        hash = (53 * hash) + getId().hashCode();
        if (getIdsCount() > 0) {
          hash = (37 * hash) + IDS_FIELD_NUMBER;
          hash = (53 * hash) + getIdsList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage 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 io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage 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 io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage)
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessageOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_InnerMessage_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_InnerMessage_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.class, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.Builder.class);
        }

        // Construct using io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          id_ = "";

          ids_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_InnerMessage_descriptor;
        }

        @java.lang.Override
        public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage getDefaultInstanceForType() {
          return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.getDefaultInstance();
        }

        @java.lang.Override
        public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage build() {
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage buildPartial() {
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage result = new io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage(this);
          int from_bitField0_ = bitField0_;
          result.id_ = id_;
          if (((bitField0_ & 0x00000001) != 0)) {
            ids_.makeImmutable();
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.ids_ = ids_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage) {
            return mergeFrom((io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage other) {
          if (other == io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.getDefaultInstance()) return this;
          if (!other.getId().isEmpty()) {
            id_ = other.id_;
            onChanged();
          }
          if (!other.ids_.isEmpty()) {
            if (ids_.isEmpty()) {
              ids_ = other.ids_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureIdsIsMutable();
              ids_.addAll(other.ids_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private java.lang.Object id_ = "";
        /**
         * <code>string id = 1[json_name = "id"];</code>
         * @return The id.
         */
        public java.lang.String getId() {
          java.lang.Object ref = id_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            id_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>string id = 1[json_name = "id"];</code>
         * @return The bytes for id.
         */
        public com.google.protobuf.ByteString
            getIdBytes() {
          java.lang.Object ref = id_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            id_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>string id = 1[json_name = "id"];</code>
         * @param value The id to set.
         * @return This builder for chaining.
         */
        public Builder setId(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          id_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>string id = 1[json_name = "id"];</code>
         * @return This builder for chaining.
         */
        public Builder clearId() {
          
          id_ = getDefaultInstance().getId();
          onChanged();
          return this;
        }
        /**
         * <code>string id = 1[json_name = "id"];</code>
         * @param value The bytes for id to set.
         * @return This builder for chaining.
         */
        public Builder setIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          id_ = value;
          onChanged();
          return this;
        }

        private com.google.protobuf.Internal.IntList ids_ = emptyIntList();
        private void ensureIdsIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            ids_ = mutableCopy(ids_);
            bitField0_ |= 0x00000001;
           }
        }
        /**
         * <code>repeated int32 ids = 2 [packed = true];</code>
         * @return A list containing the ids.
         */
        public java.util.List<java.lang.Integer>
            getIdsList() {
          return ((bitField0_ & 0x00000001) != 0) ?
                   java.util.Collections.unmodifiableList(ids_) : ids_;
        }
        /**
         * <code>repeated int32 ids = 2 [packed = true];</code>
         * @return The count of ids.
         */
        public int getIdsCount() {
          return ids_.size();
        }
        /**
         * <code>repeated int32 ids = 2 [packed = true];</code>
         * @param index The index of the element to return.
         * @return The ids at the given index.
         */
        public int getIds(int index) {
          return ids_.getInt(index);
        }
        /**
         * <code>repeated int32 ids = 2 [packed = true];</code>
         * @param index The index to set the value at.
         * @param value The ids to set.
         * @return This builder for chaining.
         */
        public Builder setIds(
            int index, int value) {
          ensureIdsIsMutable();
          ids_.setInt(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 ids = 2 [packed = true];</code>
         * @param value The ids to add.
         * @return This builder for chaining.
         */
        public Builder addIds(int value) {
          ensureIdsIsMutable();
          ids_.addInt(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 ids = 2 [packed = true];</code>
         * @param values The ids to add.
         * @return This builder for chaining.
         */
        public Builder addAllIds(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, ids_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 ids = 2 [packed = true];</code>
         * @return This builder for chaining.
         */
        public Builder clearIds() {
          ids_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage)
      }

      // @@protoc_insertion_point(class_scope:io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage)
      private static final io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage();
      }

      public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int USER_ID_FIELD_NUMBER = 1;
    private io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId userId_;
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
     * @return Whether the userId field is set.
     */
    public boolean hasUserId() {
      return userId_ != null;
    }
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
     * @return The userId.
     */
    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId getUserId() {
      return userId_ == null ? io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.getDefaultInstance() : userId_;
    }
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
     */
    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserIdOrBuilder getUserIdOrBuilder() {
      return getUserId();
    }

    public static final int IS_ACTIVE_FIELD_NUMBER = 2;
    private boolean isActive_;
    /**
     * <code>bool is_active = 2;</code>
     * @return The isActive.
     */
    public boolean getIsActive() {
      return isActive_;
    }

    public static final int EXPERIMENTS_ACTIVE_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList experimentsActive_;
    /**
     * <code>repeated string experiments_active = 3;</code>
     * @return A list containing the experimentsActive.
     */
    public com.google.protobuf.ProtocolStringList
        getExperimentsActiveList() {
      return experimentsActive_;
    }
    /**
     * <code>repeated string experiments_active = 3;</code>
     * @return The count of experimentsActive.
     */
    public int getExperimentsActiveCount() {
      return experimentsActive_.size();
    }
    /**
     * <code>repeated string experiments_active = 3;</code>
     * @param index The index of the element to return.
     * @return The experimentsActive at the given index.
     */
    public java.lang.String getExperimentsActive(int index) {
      return experimentsActive_.get(index);
    }
    /**
     * <code>repeated string experiments_active = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the experimentsActive at the given index.
     */
    public com.google.protobuf.ByteString
        getExperimentsActiveBytes(int index) {
      return experimentsActive_.getByteString(index);
    }

    public static final int UPDATED_AT_FIELD_NUMBER = 4;
    private com.google.protobuf.Timestamp updatedAt_;
    /**
     * <code>.google.protobuf.Timestamp updated_at = 4;</code>
     * @return Whether the updatedAt field is set.
     */
    public boolean hasUpdatedAt() {
      return updatedAt_ != null;
    }
    /**
     * <code>.google.protobuf.Timestamp updated_at = 4;</code>
     * @return The updatedAt.
     */
    public com.google.protobuf.Timestamp getUpdatedAt() {
      return updatedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : updatedAt_;
    }
    /**
     * <code>.google.protobuf.Timestamp updated_at = 4;</code>
     */
    public com.google.protobuf.TimestampOrBuilder getUpdatedAtOrBuilder() {
      return getUpdatedAt();
    }

    public static final int STATUS_FIELD_NUMBER = 5;
    private int status_;
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.Status status = 5;</code>
     * @return The enum numeric value on the wire for status.
     */
    public int getStatusValue() {
      return status_;
    }
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.Status status = 5;</code>
     * @return The status.
     */
    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.Status getStatus() {
      @SuppressWarnings("deprecation")
      io.confluent.kafka.serializers.protobuf.test.NestedTestProto.Status result = io.confluent.kafka.serializers.protobuf.test.NestedTestProto.Status.valueOf(status_);
      return result == null ? io.confluent.kafka.serializers.protobuf.test.NestedTestProto.Status.UNRECOGNIZED : result;
    }

    public static final int COMPLEX_TYPE_FIELD_NUMBER = 6;
    private io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType complexType_;
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
     * @return Whether the complexType field is set.
     */
    public boolean hasComplexType() {
      return complexType_ != null;
    }
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
     * @return The complexType.
     */
    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType getComplexType() {
      return complexType_ == null ? io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.getDefaultInstance() : complexType_;
    }
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
     */
    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexTypeOrBuilder getComplexTypeOrBuilder() {
      return getComplexType();
    }

    public static final int MAP_TYPE_FIELD_NUMBER = 7;
    private static final class MapTypeDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_MapTypeEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> mapType_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetMapType() {
      if (mapType_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapTypeDefaultEntryHolder.defaultEntry);
      }
      return mapType_;
    }

    public int getMapTypeCount() {
      return internalGetMapType().getMap().size();
    }
    /**
     * <code>map&lt;string, string&gt; map_type = 7;</code>
     */

    public boolean containsMapType(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetMapType().getMap().containsKey(key);
    }
    /**
     * Use {@link #getMapTypeMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getMapType() {
      return getMapTypeMap();
    }
    /**
     * <code>map&lt;string, string&gt; map_type = 7;</code>
     */

    public java.util.Map<java.lang.String, java.lang.String> getMapTypeMap() {
      return internalGetMapType().getMap();
    }
    /**
     * <code>map&lt;string, string&gt; map_type = 7;</code>
     */

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

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

    public static final int INNER_FIELD_NUMBER = 8;
    private io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage inner_;
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
     * @return Whether the inner field is set.
     */
    public boolean hasInner() {
      return inner_ != null;
    }
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
     * @return The inner.
     */
    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage getInner() {
      return inner_ == null ? io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.getDefaultInstance() : inner_;
    }
    /**
     * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
     */
    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessageOrBuilder getInnerOrBuilder() {
      return getInner();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (userId_ != null) {
        output.writeMessage(1, getUserId());
      }
      if (isActive_ != false) {
        output.writeBool(2, isActive_);
      }
      for (int i = 0; i < experimentsActive_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, experimentsActive_.getRaw(i));
      }
      if (updatedAt_ != null) {
        output.writeMessage(4, getUpdatedAt());
      }
      if (status_ != io.confluent.kafka.serializers.protobuf.test.NestedTestProto.Status.ACTIVE.getNumber()) {
        output.writeEnum(5, status_);
      }
      if (complexType_ != null) {
        output.writeMessage(6, getComplexType());
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetMapType(),
          MapTypeDefaultEntryHolder.defaultEntry,
          7);
      if (inner_ != null) {
        output.writeMessage(8, getInner());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (userId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getUserId());
      }
      if (isActive_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, isActive_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < experimentsActive_.size(); i++) {
          dataSize += computeStringSizeNoTag(experimentsActive_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getExperimentsActiveList().size();
      }
      if (updatedAt_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getUpdatedAt());
      }
      if (status_ != io.confluent.kafka.serializers.protobuf.test.NestedTestProto.Status.ACTIVE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, status_);
      }
      if (complexType_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getComplexType());
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetMapType().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        mapType__ = MapTypeDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, mapType__);
      }
      if (inner_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getInner());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage)) {
        return super.equals(obj);
      }
      io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage other = (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage) obj;

      if (hasUserId() != other.hasUserId()) return false;
      if (hasUserId()) {
        if (!getUserId()
            .equals(other.getUserId())) return false;
      }
      if (getIsActive()
          != other.getIsActive()) return false;
      if (!getExperimentsActiveList()
          .equals(other.getExperimentsActiveList())) return false;
      if (hasUpdatedAt() != other.hasUpdatedAt()) return false;
      if (hasUpdatedAt()) {
        if (!getUpdatedAt()
            .equals(other.getUpdatedAt())) return false;
      }
      if (status_ != other.status_) return false;
      if (hasComplexType() != other.hasComplexType()) return false;
      if (hasComplexType()) {
        if (!getComplexType()
            .equals(other.getComplexType())) return false;
      }
      if (!internalGetMapType().equals(
          other.internalGetMapType())) return false;
      if (hasInner() != other.hasInner()) return false;
      if (hasInner()) {
        if (!getInner()
            .equals(other.getInner())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUserId()) {
        hash = (37 * hash) + USER_ID_FIELD_NUMBER;
        hash = (53 * hash) + getUserId().hashCode();
      }
      hash = (37 * hash) + IS_ACTIVE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsActive());
      if (getExperimentsActiveCount() > 0) {
        hash = (37 * hash) + EXPERIMENTS_ACTIVE_FIELD_NUMBER;
        hash = (53 * hash) + getExperimentsActiveList().hashCode();
      }
      if (hasUpdatedAt()) {
        hash = (37 * hash) + UPDATED_AT_FIELD_NUMBER;
        hash = (53 * hash) + getUpdatedAt().hashCode();
      }
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + status_;
      if (hasComplexType()) {
        hash = (37 * hash) + COMPLEX_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getComplexType().hashCode();
      }
      if (!internalGetMapType().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapType().hashCode();
      }
      if (hasInner()) {
        hash = (37 * hash) + INNER_FIELD_NUMBER;
        hash = (53 * hash) + getInner().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage 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 io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage 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 io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Complex message using nested protos and repeated fields
     * </pre>
     *
     * Protobuf type {@code io.confluent.kafka.serializers.protobuf.test.NestedMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:io.confluent.kafka.serializers.protobuf.test.NestedMessage)
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 7:
            return internalGetMapType();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 7:
            return internalGetMutableMapType();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.class, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.Builder.class);
      }

      // Construct using io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (userIdBuilder_ == null) {
          userId_ = null;
        } else {
          userId_ = null;
          userIdBuilder_ = null;
        }
        isActive_ = false;

        experimentsActive_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (updatedAtBuilder_ == null) {
          updatedAt_ = null;
        } else {
          updatedAt_ = null;
          updatedAtBuilder_ = null;
        }
        status_ = 0;

        if (complexTypeBuilder_ == null) {
          complexType_ = null;
        } else {
          complexType_ = null;
          complexTypeBuilder_ = null;
        }
        internalGetMutableMapType().clear();
        if (innerBuilder_ == null) {
          inner_ = null;
        } else {
          inner_ = null;
          innerBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_descriptor;
      }

      @java.lang.Override
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage getDefaultInstanceForType() {
        return io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.getDefaultInstance();
      }

      @java.lang.Override
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage build() {
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage buildPartial() {
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage result = new io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage(this);
        int from_bitField0_ = bitField0_;
        if (userIdBuilder_ == null) {
          result.userId_ = userId_;
        } else {
          result.userId_ = userIdBuilder_.build();
        }
        result.isActive_ = isActive_;
        if (((bitField0_ & 0x00000001) != 0)) {
          experimentsActive_ = experimentsActive_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.experimentsActive_ = experimentsActive_;
        if (updatedAtBuilder_ == null) {
          result.updatedAt_ = updatedAt_;
        } else {
          result.updatedAt_ = updatedAtBuilder_.build();
        }
        result.status_ = status_;
        if (complexTypeBuilder_ == null) {
          result.complexType_ = complexType_;
        } else {
          result.complexType_ = complexTypeBuilder_.build();
        }
        result.mapType_ = internalGetMapType();
        result.mapType_.makeImmutable();
        if (innerBuilder_ == null) {
          result.inner_ = inner_;
        } else {
          result.inner_ = innerBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage) {
          return mergeFrom((io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage other) {
        if (other == io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.getDefaultInstance()) return this;
        if (other.hasUserId()) {
          mergeUserId(other.getUserId());
        }
        if (other.getIsActive() != false) {
          setIsActive(other.getIsActive());
        }
        if (!other.experimentsActive_.isEmpty()) {
          if (experimentsActive_.isEmpty()) {
            experimentsActive_ = other.experimentsActive_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureExperimentsActiveIsMutable();
            experimentsActive_.addAll(other.experimentsActive_);
          }
          onChanged();
        }
        if (other.hasUpdatedAt()) {
          mergeUpdatedAt(other.getUpdatedAt());
        }
        if (other.status_ != 0) {
          setStatusValue(other.getStatusValue());
        }
        if (other.hasComplexType()) {
          mergeComplexType(other.getComplexType());
        }
        internalGetMutableMapType().mergeFrom(
            other.internalGetMapType());
        if (other.hasInner()) {
          mergeInner(other.getInner());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId userId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.Builder, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserIdOrBuilder> userIdBuilder_;
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
       * @return Whether the userId field is set.
       */
      public boolean hasUserId() {
        return userIdBuilder_ != null || userId_ != null;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
       * @return The userId.
       */
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId getUserId() {
        if (userIdBuilder_ == null) {
          return userId_ == null ? io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.getDefaultInstance() : userId_;
        } else {
          return userIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
       */
      public Builder setUserId(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId value) {
        if (userIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userId_ = value;
          onChanged();
        } else {
          userIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
       */
      public Builder setUserId(
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.Builder builderForValue) {
        if (userIdBuilder_ == null) {
          userId_ = builderForValue.build();
          onChanged();
        } else {
          userIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
       */
      public Builder mergeUserId(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId value) {
        if (userIdBuilder_ == null) {
          if (userId_ != null) {
            userId_ =
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.newBuilder(userId_).mergeFrom(value).buildPartial();
          } else {
            userId_ = value;
          }
          onChanged();
        } else {
          userIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
       */
      public Builder clearUserId() {
        if (userIdBuilder_ == null) {
          userId_ = null;
          onChanged();
        } else {
          userId_ = null;
          userIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
       */
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.Builder getUserIdBuilder() {
        
        onChanged();
        return getUserIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
       */
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserIdOrBuilder getUserIdOrBuilder() {
        if (userIdBuilder_ != null) {
          return userIdBuilder_.getMessageOrBuilder();
        } else {
          return userId_ == null ?
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.getDefaultInstance() : userId_;
        }
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.UserId user_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.Builder, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserIdOrBuilder> 
          getUserIdFieldBuilder() {
        if (userIdBuilder_ == null) {
          userIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserId.Builder, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.UserIdOrBuilder>(
                  getUserId(),
                  getParentForChildren(),
                  isClean());
          userId_ = null;
        }
        return userIdBuilder_;
      }

      private boolean isActive_ ;
      /**
       * <code>bool is_active = 2;</code>
       * @return The isActive.
       */
      public boolean getIsActive() {
        return isActive_;
      }
      /**
       * <code>bool is_active = 2;</code>
       * @param value The isActive to set.
       * @return This builder for chaining.
       */
      public Builder setIsActive(boolean value) {
        
        isActive_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_active = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsActive() {
        
        isActive_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList experimentsActive_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureExperimentsActiveIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          experimentsActive_ = new com.google.protobuf.LazyStringArrayList(experimentsActive_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string experiments_active = 3;</code>
       * @return A list containing the experimentsActive.
       */
      public com.google.protobuf.ProtocolStringList
          getExperimentsActiveList() {
        return experimentsActive_.getUnmodifiableView();
      }
      /**
       * <code>repeated string experiments_active = 3;</code>
       * @return The count of experimentsActive.
       */
      public int getExperimentsActiveCount() {
        return experimentsActive_.size();
      }
      /**
       * <code>repeated string experiments_active = 3;</code>
       * @param index The index of the element to return.
       * @return The experimentsActive at the given index.
       */
      public java.lang.String getExperimentsActive(int index) {
        return experimentsActive_.get(index);
      }
      /**
       * <code>repeated string experiments_active = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the experimentsActive at the given index.
       */
      public com.google.protobuf.ByteString
          getExperimentsActiveBytes(int index) {
        return experimentsActive_.getByteString(index);
      }
      /**
       * <code>repeated string experiments_active = 3;</code>
       * @param index The index to set the value at.
       * @param value The experimentsActive to set.
       * @return This builder for chaining.
       */
      public Builder setExperimentsActive(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExperimentsActiveIsMutable();
        experimentsActive_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string experiments_active = 3;</code>
       * @param value The experimentsActive to add.
       * @return This builder for chaining.
       */
      public Builder addExperimentsActive(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExperimentsActiveIsMutable();
        experimentsActive_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string experiments_active = 3;</code>
       * @param values The experimentsActive to add.
       * @return This builder for chaining.
       */
      public Builder addAllExperimentsActive(
          java.lang.Iterable<java.lang.String> values) {
        ensureExperimentsActiveIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, experimentsActive_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string experiments_active = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearExperimentsActive() {
        experimentsActive_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string experiments_active = 3;</code>
       * @param value The bytes of the experimentsActive to add.
       * @return This builder for chaining.
       */
      public Builder addExperimentsActiveBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureExperimentsActiveIsMutable();
        experimentsActive_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp updatedAt_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> updatedAtBuilder_;
      /**
       * <code>.google.protobuf.Timestamp updated_at = 4;</code>
       * @return Whether the updatedAt field is set.
       */
      public boolean hasUpdatedAt() {
        return updatedAtBuilder_ != null || updatedAt_ != null;
      }
      /**
       * <code>.google.protobuf.Timestamp updated_at = 4;</code>
       * @return The updatedAt.
       */
      public com.google.protobuf.Timestamp getUpdatedAt() {
        if (updatedAtBuilder_ == null) {
          return updatedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : updatedAt_;
        } else {
          return updatedAtBuilder_.getMessage();
        }
      }
      /**
       * <code>.google.protobuf.Timestamp updated_at = 4;</code>
       */
      public Builder setUpdatedAt(com.google.protobuf.Timestamp value) {
        if (updatedAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          updatedAt_ = value;
          onChanged();
        } else {
          updatedAtBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.google.protobuf.Timestamp updated_at = 4;</code>
       */
      public Builder setUpdatedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (updatedAtBuilder_ == null) {
          updatedAt_ = builderForValue.build();
          onChanged();
        } else {
          updatedAtBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.google.protobuf.Timestamp updated_at = 4;</code>
       */
      public Builder mergeUpdatedAt(com.google.protobuf.Timestamp value) {
        if (updatedAtBuilder_ == null) {
          if (updatedAt_ != null) {
            updatedAt_ =
              com.google.protobuf.Timestamp.newBuilder(updatedAt_).mergeFrom(value).buildPartial();
          } else {
            updatedAt_ = value;
          }
          onChanged();
        } else {
          updatedAtBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.google.protobuf.Timestamp updated_at = 4;</code>
       */
      public Builder clearUpdatedAt() {
        if (updatedAtBuilder_ == null) {
          updatedAt_ = null;
          onChanged();
        } else {
          updatedAt_ = null;
          updatedAtBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.google.protobuf.Timestamp updated_at = 4;</code>
       */
      public com.google.protobuf.Timestamp.Builder getUpdatedAtBuilder() {
        
        onChanged();
        return getUpdatedAtFieldBuilder().getBuilder();
      }
      /**
       * <code>.google.protobuf.Timestamp updated_at = 4;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getUpdatedAtOrBuilder() {
        if (updatedAtBuilder_ != null) {
          return updatedAtBuilder_.getMessageOrBuilder();
        } else {
          return updatedAt_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : updatedAt_;
        }
      }
      /**
       * <code>.google.protobuf.Timestamp updated_at = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getUpdatedAtFieldBuilder() {
        if (updatedAtBuilder_ == null) {
          updatedAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getUpdatedAt(),
                  getParentForChildren(),
                  isClean());
          updatedAt_ = null;
        }
        return updatedAtBuilder_;
      }

      private int status_ = 0;
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.Status status = 5;</code>
       * @return The enum numeric value on the wire for status.
       */
      public int getStatusValue() {
        return status_;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.Status status = 5;</code>
       * @param value The enum numeric value on the wire for status to set.
       * @return This builder for chaining.
       */
      public Builder setStatusValue(int value) {
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.Status status = 5;</code>
       * @return The status.
       */
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.Status getStatus() {
        @SuppressWarnings("deprecation")
        io.confluent.kafka.serializers.protobuf.test.NestedTestProto.Status result = io.confluent.kafka.serializers.protobuf.test.NestedTestProto.Status.valueOf(status_);
        return result == null ? io.confluent.kafka.serializers.protobuf.test.NestedTestProto.Status.UNRECOGNIZED : result;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.Status status = 5;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.Status value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        status_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.Status status = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        
        status_ = 0;
        onChanged();
        return this;
      }

      private io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType complexType_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.Builder, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexTypeOrBuilder> complexTypeBuilder_;
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
       * @return Whether the complexType field is set.
       */
      public boolean hasComplexType() {
        return complexTypeBuilder_ != null || complexType_ != null;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
       * @return The complexType.
       */
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType getComplexType() {
        if (complexTypeBuilder_ == null) {
          return complexType_ == null ? io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.getDefaultInstance() : complexType_;
        } else {
          return complexTypeBuilder_.getMessage();
        }
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
       */
      public Builder setComplexType(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType value) {
        if (complexTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          complexType_ = value;
          onChanged();
        } else {
          complexTypeBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
       */
      public Builder setComplexType(
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.Builder builderForValue) {
        if (complexTypeBuilder_ == null) {
          complexType_ = builderForValue.build();
          onChanged();
        } else {
          complexTypeBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
       */
      public Builder mergeComplexType(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType value) {
        if (complexTypeBuilder_ == null) {
          if (complexType_ != null) {
            complexType_ =
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.newBuilder(complexType_).mergeFrom(value).buildPartial();
          } else {
            complexType_ = value;
          }
          onChanged();
        } else {
          complexTypeBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
       */
      public Builder clearComplexType() {
        if (complexTypeBuilder_ == null) {
          complexType_ = null;
          onChanged();
        } else {
          complexType_ = null;
          complexTypeBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
       */
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.Builder getComplexTypeBuilder() {
        
        onChanged();
        return getComplexTypeFieldBuilder().getBuilder();
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
       */
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexTypeOrBuilder getComplexTypeOrBuilder() {
        if (complexTypeBuilder_ != null) {
          return complexTypeBuilder_.getMessageOrBuilder();
        } else {
          return complexType_ == null ?
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.getDefaultInstance() : complexType_;
        }
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.ComplexType complex_type = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.Builder, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexTypeOrBuilder> 
          getComplexTypeFieldBuilder() {
        if (complexTypeBuilder_ == null) {
          complexTypeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexType.Builder, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.ComplexTypeOrBuilder>(
                  getComplexType(),
                  getParentForChildren(),
                  isClean());
          complexType_ = null;
        }
        return complexTypeBuilder_;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> mapType_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetMapType() {
        if (mapType_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapTypeDefaultEntryHolder.defaultEntry);
        }
        return mapType_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetMutableMapType() {
        onChanged();;
        if (mapType_ == null) {
          mapType_ = com.google.protobuf.MapField.newMapField(
              MapTypeDefaultEntryHolder.defaultEntry);
        }
        if (!mapType_.isMutable()) {
          mapType_ = mapType_.copy();
        }
        return mapType_;
      }

      public int getMapTypeCount() {
        return internalGetMapType().getMap().size();
      }
      /**
       * <code>map&lt;string, string&gt; map_type = 7;</code>
       */

      public boolean containsMapType(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetMapType().getMap().containsKey(key);
      }
      /**
       * Use {@link #getMapTypeMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getMapType() {
        return getMapTypeMap();
      }
      /**
       * <code>map&lt;string, string&gt; map_type = 7;</code>
       */

      public java.util.Map<java.lang.String, java.lang.String> getMapTypeMap() {
        return internalGetMapType().getMap();
      }
      /**
       * <code>map&lt;string, string&gt; map_type = 7;</code>
       */

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

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

      public Builder clearMapType() {
        internalGetMutableMapType().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <code>map&lt;string, string&gt; map_type = 7;</code>
       */

      public Builder removeMapType(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableMapType().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
      getMutableMapType() {
        return internalGetMutableMapType().getMutableMap();
      }
      /**
       * <code>map&lt;string, string&gt; map_type = 7;</code>
       */
      public Builder putMapType(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        if (value == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableMapType().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <code>map&lt;string, string&gt; map_type = 7;</code>
       */

      public Builder putAllMapType(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableMapType().getMutableMap()
            .putAll(values);
        return this;
      }

      private io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage inner_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.Builder, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessageOrBuilder> innerBuilder_;
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
       * @return Whether the inner field is set.
       */
      public boolean hasInner() {
        return innerBuilder_ != null || inner_ != null;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
       * @return The inner.
       */
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage getInner() {
        if (innerBuilder_ == null) {
          return inner_ == null ? io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.getDefaultInstance() : inner_;
        } else {
          return innerBuilder_.getMessage();
        }
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
       */
      public Builder setInner(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage value) {
        if (innerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          inner_ = value;
          onChanged();
        } else {
          innerBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
       */
      public Builder setInner(
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.Builder builderForValue) {
        if (innerBuilder_ == null) {
          inner_ = builderForValue.build();
          onChanged();
        } else {
          innerBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
       */
      public Builder mergeInner(io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage value) {
        if (innerBuilder_ == null) {
          if (inner_ != null) {
            inner_ =
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.newBuilder(inner_).mergeFrom(value).buildPartial();
          } else {
            inner_ = value;
          }
          onChanged();
        } else {
          innerBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
       */
      public Builder clearInner() {
        if (innerBuilder_ == null) {
          inner_ = null;
          onChanged();
        } else {
          inner_ = null;
          innerBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
       */
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.Builder getInnerBuilder() {
        
        onChanged();
        return getInnerFieldBuilder().getBuilder();
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
       */
      public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessageOrBuilder getInnerOrBuilder() {
        if (innerBuilder_ != null) {
          return innerBuilder_.getMessageOrBuilder();
        } else {
          return inner_ == null ?
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.getDefaultInstance() : inner_;
        }
      }
      /**
       * <code>.io.confluent.kafka.serializers.protobuf.test.NestedMessage.InnerMessage inner = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.Builder, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessageOrBuilder> 
          getInnerFieldBuilder() {
        if (innerBuilder_ == null) {
          innerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessage.Builder, io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage.InnerMessageOrBuilder>(
                  getInner(),
                  getParentForChildren(),
                  isClean());
          inner_ = null;
        }
        return innerBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:io.confluent.kafka.serializers.protobuf.test.NestedMessage)
    }

    // @@protoc_insertion_point(class_scope:io.confluent.kafka.serializers.protobuf.test.NestedMessage)
    private static final io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage();
    }

    public static io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.confluent.kafka.serializers.protobuf.test.NestedTestProto.NestedMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_confluent_kafka_serializers_protobuf_test_UserId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_confluent_kafka_serializers_protobuf_test_UserId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_confluent_kafka_serializers_protobuf_test_MessageId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_confluent_kafka_serializers_protobuf_test_MessageId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_confluent_kafka_serializers_protobuf_test_ComplexType_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_confluent_kafka_serializers_protobuf_test_ComplexType_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_MapTypeEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_MapTypeEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_InnerMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_InnerMessage_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\025NestedTestProto.proto\022,io.confluent.ka" +
      "fka.serializers.protobuf.test\032\037google/pr" +
      "otobuf/timestamp.proto\"\224\001\n\006UserId\022\027\n\rkaf" +
      "ka_user_id\030\001 \001(\tH\000\022\027\n\rother_user_id\030\002 \001(" +
      "\005H\000\022M\n\nanother_id\030\003 \001(\01327.io.confluent.k" +
      "afka.serializers.protobuf.test.MessageId" +
      "H\000B\t\n\007user_id\"\027\n\tMessageId\022\n\n\002id\030\001 \001(\t\"R" +
      "\n\013ComplexType\022\020\n\006one_id\030\001 \001(\tH\000\022\022\n\010other" +
      "_id\030\002 \001(\005H\000\022\021\n\tis_active\030\003 \001(\010B\n\n\010some_v" +
      "al\"\250\005\n\rNestedMessage\022E\n\007user_id\030\001 \001(\01324." +
      "io.confluent.kafka.serializers.protobuf." +
      "test.UserId\022\021\n\tis_active\030\002 \001(\010\022\032\n\022experi" +
      "ments_active\030\003 \003(\t\022.\n\nupdated_at\030\004 \001(\0132\032" +
      ".google.protobuf.Timestamp\022D\n\006status\030\005 \001" +
      "(\01624.io.confluent.kafka.serializers.prot" +
      "obuf.test.Status\022O\n\014complex_type\030\006 \001(\01329" +
      ".io.confluent.kafka.serializers.protobuf" +
      ".test.ComplexType\022Z\n\010map_type\030\007 \003(\0132H.io" +
      ".confluent.kafka.serializers.protobuf.te" +
      "st.NestedMessage.MapTypeEntry\022W\n\005inner\030\010" +
      " \001(\0132H.io.confluent.kafka.serializers.pr" +
      "otobuf.test.NestedMessage.InnerMessage\032." +
      "\n\014MapTypeEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001" +
      "(\t:\0028\001\032/\n\014InnerMessage\022\016\n\002id\030\001 \001(\tR\002id\022\017" +
      "\n\003ids\030\002 \003(\005B\002\020\001\"(\n\tInnerEnum\022\010\n\004ZERO\020\000\022\r" +
      "\n\tALSO_ZERO\020\000\032\002\020\001J\004\010\016\020\017J\004\010\017\020\020J\004\010\t\020\014R\003foo" +
      "R\003bar*\"\n\006Status\022\n\n\006ACTIVE\020\000\022\014\n\010INACTIVE\020" +
      "\001BA\n,io.confluent.kafka.serializers.prot" +
      "obuf.testB\017NestedTestProtoP\000b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.protobuf.TimestampProto.getDescriptor(),
        });
    internal_static_io_confluent_kafka_serializers_protobuf_test_UserId_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_io_confluent_kafka_serializers_protobuf_test_UserId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_confluent_kafka_serializers_protobuf_test_UserId_descriptor,
        new java.lang.String[] { "KafkaUserId", "OtherUserId", "AnotherId", "UserId", });
    internal_static_io_confluent_kafka_serializers_protobuf_test_MessageId_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_io_confluent_kafka_serializers_protobuf_test_MessageId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_confluent_kafka_serializers_protobuf_test_MessageId_descriptor,
        new java.lang.String[] { "Id", });
    internal_static_io_confluent_kafka_serializers_protobuf_test_ComplexType_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_io_confluent_kafka_serializers_protobuf_test_ComplexType_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_confluent_kafka_serializers_protobuf_test_ComplexType_descriptor,
        new java.lang.String[] { "OneId", "OtherId", "IsActive", "SomeVal", });
    internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_descriptor,
        new java.lang.String[] { "UserId", "IsActive", "ExperimentsActive", "UpdatedAt", "Status", "ComplexType", "MapType", "Inner", });
    internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_MapTypeEntry_descriptor =
      internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_descriptor.getNestedTypes().get(0);
    internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_MapTypeEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_MapTypeEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_InnerMessage_descriptor =
      internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_descriptor.getNestedTypes().get(1);
    internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_InnerMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_confluent_kafka_serializers_protobuf_test_NestedMessage_InnerMessage_descriptor,
        new java.lang.String[] { "Id", "Ids", });
    com.google.protobuf.TimestampProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
