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

package legacy_gencode_test.proto3;

public final class Proto3GencodeTestProto {
  private Proto3GencodeTestProto() {}

  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 legacy_gencode_test.proto3.ForeignEnum} */
  public enum ForeignEnum implements com.google.protobuf.ProtocolMessageEnum {
    /** <code>FOREIGN_FOO = 0;</code> */
    FOREIGN_FOO(0),
    /** <code>FOREIGN_BAR = 1;</code> */
    FOREIGN_BAR(1),
    /** <code>FOREIGN_BAZ = 2;</code> */
    FOREIGN_BAZ(2),
    UNRECOGNIZED(-1),
    ;

    /** <code>FOREIGN_FOO = 0;</code> */
    public static final int FOREIGN_FOO_VALUE = 0;

    /** <code>FOREIGN_BAR = 1;</code> */
    public static final int FOREIGN_BAR_VALUE = 1;

    /** <code>FOREIGN_BAZ = 2;</code> */
    public static final int FOREIGN_BAZ_VALUE = 2;

    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 ForeignEnum 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 ForeignEnum forNumber(int value) {
      switch (value) {
        case 0:
          return FOREIGN_FOO;
        case 1:
          return FOREIGN_BAR;
        case 2:
          return FOREIGN_BAZ;
        default:
          return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<ForeignEnum> internalGetValueMap() {
      return internalValueMap;
    }

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

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

    public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
      return getDescriptor();
    }

    public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
      return legacy_gencode_test.proto3.Proto3GencodeTestProto.getDescriptor()
          .getEnumTypes()
          .get(0);
    }

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

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

    // @@protoc_insertion_point(enum_scope:legacy_gencode_test.proto3.ForeignEnum)
  }

  public interface TestMessageOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:legacy_gencode_test.proto3.TestMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string x = 2;</code>
     * @return The x.
     */
    java.lang.String getX();

    /**
     * <code>string x = 2;</code>
     *
     * @return The bytes for x.
     */
    com.google.protobuf.ByteString getXBytes();

    /**
     * <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code>
     * @return Whether the y field is set.
     */
    boolean hasY();
    /**
     * <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code>
     * @return The y.
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage getY();

    /** <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code> */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessageOrBuilder getYOrBuilder();
  }

  /** Protobuf type {@code legacy_gencode_test.proto3.TestMessage} */
  public static final class TestMessage extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:legacy_gencode_test.proto3.TestMessage)
      TestMessageOrBuilder {
    private static final long serialVersionUID = 0L;

    // Use TestMessage.newBuilder() to construct.
    private TestMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessage() {
      x_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return legacy_gencode_test.proto3.Proto3GencodeTestProto
          .internal_static_legacy_gencode_test_proto3_TestMessage_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return legacy_gencode_test.proto3.Proto3GencodeTestProto
          .internal_static_legacy_gencode_test_proto3_TestMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage.class,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage.Builder.class);
    }

    public static final int X_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object x_ = "";
    /**
     * <code>string x = 2;</code>
     * @return The x.
     */
    @java.lang.Override
    public java.lang.String getX() {
      java.lang.Object ref = x_;
      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();
        x_ = s;
        return s;
      }
    }

    /**
     * <code>string x = 2;</code>
     *
     * @return The bytes for x.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getXBytes() {
      java.lang.Object ref = x_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        x_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int Y_FIELD_NUMBER = 3;
    private legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage y_;
    /**
     * <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code>
     * @return Whether the y field is set.
     */
    @java.lang.Override
    public boolean hasY() {
      return y_ != null;
    }
    /**
     * <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code>
     * @return The y.
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage getY() {
      return y_ == null
          ? legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage.getDefaultInstance()
          : y_;
    }

    /** <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code> */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessageOrBuilder
        getYOrBuilder() {
      return y_ == null
          ? legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage.getDefaultInstance()
          : y_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(x_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, x_);
      }
      if (y_ != null) {
        output.writeMessage(3, getY());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(x_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, x_);
      }
      if (y_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getY());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage)) {
        return super.equals(obj);
      }
      legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage other =
          (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage) obj;

      if (!getX().equals(other.getX())) return false;
      if (hasY() != other.hasY()) return false;
      if (hasY()) {
        if (!getY().equals(other.getY())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + X_FIELD_NUMBER;
      hash = (53 * hash) + getX().hashCode();
      if (hasY()) {
        hash = (37 * hash) + Y_FIELD_NUMBER;
        hash = (53 * hash) + getY().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage 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 legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage 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 legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }
    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage 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(
        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage 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 legacy_gencode_test.proto3.TestMessage} */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:legacy_gencode_test.proto3.TestMessage)
        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_TestMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_TestMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage.class,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage.Builder.class);
      }

      // Construct using legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage.newBuilder()
      private Builder() {}

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        x_ = "";
        y_ = null;
        if (yBuilder_ != null) {
          yBuilder_.dispose();
          yBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_TestMessage_descriptor;
      }

      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage
          getDefaultInstanceForType() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage.getDefaultInstance();
      }

      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage build() {
        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage buildPartial() {
        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage result =
            new legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.x_ = x_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.y_ = yBuilder_ == null ? y_ : yBuilder_.build();
        }
      }

      @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 legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage) {
          return mergeFrom((legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage other) {
        if (other
            == legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage.getDefaultInstance())
          return this;
        if (!other.getX().isEmpty()) {
          x_ = other.x_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasY()) {
          mergeY(other.getY());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 18:
                {
                  x_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 18
              case 26:
                {
                  input.readMessage(getYFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 26
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object x_ = "";
      /**
       * <code>string x = 2;</code>
       * @return The x.
       */
      public java.lang.String getX() {
        java.lang.Object ref = x_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          x_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }

      /**
       * <code>string x = 2;</code>
       *
       * @return The bytes for x.
       */
      public com.google.protobuf.ByteString getXBytes() {
        java.lang.Object ref = x_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          x_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      /**
       * <code>string x = 2;</code>
       *
       * @param value The x to set.
       * @return This builder for chaining.
       */
      public Builder setX(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        x_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>string x = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearX() {
        x_ = getDefaultInstance().getX();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      /**
       * <code>string x = 2;</code>
       *
       * @param value The bytes for x to set.
       * @return This builder for chaining.
       */
      public Builder setXBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        x_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage y_;
      private com.google.protobuf.SingleFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage.Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessageOrBuilder>
          yBuilder_;

      /**
       * <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code>
       * @return Whether the y field is set.
       */
      public boolean hasY() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code>
       * @return The y.
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage getY() {
        if (yBuilder_ == null) {
          return y_ == null
              ? legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage
                  .getDefaultInstance()
              : y_;
        } else {
          return yBuilder_.getMessage();
        }
      }

      /** <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code> */
      public Builder setY(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage value) {
        if (yBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          y_ = value;
        } else {
          yBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      /** <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code> */
      public Builder setY(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage.Builder
              builderForValue) {
        if (yBuilder_ == null) {
          y_ = builderForValue.build();
        } else {
          yBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      /** <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code> */
      public Builder mergeY(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage value) {
        if (yBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)
              && y_ != null
              && y_
                  != legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage
                      .getDefaultInstance()) {
            getYBuilder().mergeFrom(value);
          } else {
            y_ = value;
          }
        } else {
          yBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      /** <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code> */
      public Builder clearY() {
        bitField0_ = (bitField0_ & ~0x00000002);
        y_ = null;
        if (yBuilder_ != null) {
          yBuilder_.dispose();
          yBuilder_ = null;
        }
        onChanged();
        return this;
      }

      /** <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code> */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage.Builder
          getYBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getYFieldBuilder().getBuilder();
      }

      /** <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code> */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessageOrBuilder
          getYOrBuilder() {
        if (yBuilder_ != null) {
          return yBuilder_.getMessageOrBuilder();
        } else {
          return y_ == null
              ? legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage
                  .getDefaultInstance()
              : y_;
        }
      }

      /** <code>.legacy_gencode_test.proto3.NestedTestMessage y = 3;</code> */
      private com.google.protobuf.SingleFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage.Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessageOrBuilder>
          getYFieldBuilder() {
        if (yBuilder_ == null) {
          yBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage.Builder,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessageOrBuilder>(
                  getY(), getParentForChildren(), isClean());
          y_ = null;
        }
        return yBuilder_;
      }
      @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:legacy_gencode_test.proto3.TestMessage)
    }

    // @@protoc_insertion_point(class_scope:legacy_gencode_test.proto3.TestMessage)
    private static final legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage();
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMessage
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NestedTestMessageOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:legacy_gencode_test.proto3.NestedTestMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated int32 z = 1;</code>
     * @return A list containing the z.
     */
    java.util.List<java.lang.Integer> getZList();
    /**
     * <code>repeated int32 z = 1;</code>
     * @return The count of z.
     */
    int getZCount();
    /**
     * <code>repeated int32 z = 1;</code>
     * @param index The index of the element to return.
     * @return The z at the given index.
     */
    int getZ(int index);
  }

  /** Protobuf type {@code legacy_gencode_test.proto3.NestedTestMessage} */
  public static final class NestedTestMessage extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:legacy_gencode_test.proto3.NestedTestMessage)
      NestedTestMessageOrBuilder {
    private static final long serialVersionUID = 0L;

    // Use NestedTestMessage.newBuilder() to construct.
    private NestedTestMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NestedTestMessage() {
      z_ = emptyIntList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return legacy_gencode_test.proto3.Proto3GencodeTestProto
          .internal_static_legacy_gencode_test_proto3_NestedTestMessage_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return legacy_gencode_test.proto3.Proto3GencodeTestProto
          .internal_static_legacy_gencode_test_proto3_NestedTestMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage.class,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage.Builder.class);
    }

    public static final int Z_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList z_;

    /**
     * <code>repeated int32 z = 1;</code>
     *
     * @return A list containing the z.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getZList() {
      return z_;
    }
    /**
     * <code>repeated int32 z = 1;</code>
     * @return The count of z.
     */
    public int getZCount() {
      return z_.size();
    }
    /**
     * <code>repeated int32 z = 1;</code>
     * @param index The index of the element to return.
     * @return The z at the given index.
     */
    public int getZ(int index) {
      return z_.getInt(index);
    }
    private int zMemoizedSerializedSize = -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 (getZList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(zMemoizedSerializedSize);
      }
      for (int i = 0; i < z_.size(); i++) {
        output.writeInt32NoTag(z_.getInt(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < z_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(z_.getInt(i));
        }
        size += dataSize;
        if (!getZList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        zMemoizedSerializedSize = dataSize;
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage)) {
        return super.equals(obj);
      }
      legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage other =
          (legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage) obj;

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

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

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage 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 legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage
        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 legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }
    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage 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(
        legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage 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 legacy_gencode_test.proto3.NestedTestMessage} */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:legacy_gencode_test.proto3.NestedTestMessage)
        legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_NestedTestMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_NestedTestMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage.class,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage.Builder.class);
      }

      // Construct using
      // legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage.newBuilder()
      private Builder() {}

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_NestedTestMessage_descriptor;
      }

      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage
          getDefaultInstanceForType() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage
            .getDefaultInstance();
      }

      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage build() {
        legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage buildPartial() {
        legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage result =
            new legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage result) {
        if (((bitField0_ & 0x00000001) != 0)) {
          z_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.z_ = z_;
      }

      private void buildPartial0(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage result) {
        int from_bitField0_ = bitField0_;
      }

      @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 legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage) {
          return mergeFrom(
              (legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage other) {
        if (other
            == legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage
                .getDefaultInstance()) return this;
        if (!other.z_.isEmpty()) {
          if (z_.isEmpty()) {
            z_ = other.z_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureZIsMutable();
            z_.addAll(other.z_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8:
                {
                  int v = input.readInt32();
                  ensureZIsMutable();
                  z_.addInt(v);
                  break;
                } // case 8
              case 10:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureZIsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    z_.addInt(input.readInt32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 10
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.IntList z_ = emptyIntList();
      private void ensureZIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          z_ = mutableCopy(z_);
          bitField0_ |= 0x00000001;
        }
      }

      /**
       * <code>repeated int32 z = 1;</code>
       *
       * @return A list containing the z.
       */
      public java.util.List<java.lang.Integer> getZList() {
        return ((bitField0_ & 0x00000001) != 0) ? java.util.Collections.unmodifiableList(z_) : z_;
      }
      /**
       * <code>repeated int32 z = 1;</code>
       * @return The count of z.
       */
      public int getZCount() {
        return z_.size();
      }
      /**
       * <code>repeated int32 z = 1;</code>
       * @param index The index of the element to return.
       * @return The z at the given index.
       */
      public int getZ(int index) {
        return z_.getInt(index);
      }

      /**
       * <code>repeated int32 z = 1;</code>
       *
       * @param index The index to set the value at.
       * @param value The z to set.
       * @return This builder for chaining.
       */
      public Builder setZ(int index, int value) {

        ensureZIsMutable();
        z_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 z = 1;</code>
       * @param value The z to add.
       * @return This builder for chaining.
       */
      public Builder addZ(int value) {
        
        ensureZIsMutable();
        z_.addInt(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated int32 z = 1;</code>
       *
       * @param values The z to add.
       * @return This builder for chaining.
       */
      public Builder addAllZ(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureZIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, z_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 z = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearZ() {
        z_ = 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:legacy_gencode_test.proto3.NestedTestMessage)
    }

    // @@protoc_insertion_point(class_scope:legacy_gencode_test.proto3.NestedTestMessage)
    private static final legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage();
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.NestedTestMessage
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface TestMostTypesProto3OrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:legacy_gencode_test.proto3.TestMostTypesProto3)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 optional_int32 = 1;</code>
     *
     * @return The optionalInt32.
     */
    int getOptionalInt32();

    /**
     * <code>int64 optional_int64 = 2;</code>
     *
     * @return The optionalInt64.
     */
    long getOptionalInt64();

    /**
     * <code>uint32 optional_uint32 = 3;</code>
     *
     * @return The optionalUint32.
     */
    int getOptionalUint32();

    /**
     * <code>uint64 optional_uint64 = 4;</code>
     *
     * @return The optionalUint64.
     */
    long getOptionalUint64();

    /**
     * <code>sint32 optional_sint32 = 5;</code>
     *
     * @return The optionalSint32.
     */
    int getOptionalSint32();

    /**
     * <code>sint64 optional_sint64 = 6;</code>
     *
     * @return The optionalSint64.
     */
    long getOptionalSint64();

    /**
     * <code>fixed32 optional_fixed32 = 7;</code>
     *
     * @return The optionalFixed32.
     */
    int getOptionalFixed32();

    /**
     * <code>fixed64 optional_fixed64 = 8;</code>
     *
     * @return The optionalFixed64.
     */
    long getOptionalFixed64();

    /**
     * <code>sfixed32 optional_sfixed32 = 9;</code>
     *
     * @return The optionalSfixed32.
     */
    int getOptionalSfixed32();

    /**
     * <code>sfixed64 optional_sfixed64 = 10;</code>
     *
     * @return The optionalSfixed64.
     */
    long getOptionalSfixed64();

    /**
     * <code>float optional_float = 11;</code>
     *
     * @return The optionalFloat.
     */
    float getOptionalFloat();

    /**
     * <code>double optional_double = 12;</code>
     *
     * @return The optionalDouble.
     */
    double getOptionalDouble();

    /**
     * <code>bool optional_bool = 13;</code>
     *
     * @return The optionalBool.
     */
    boolean getOptionalBool();

    /**
     * <code>string optional_string = 14;</code>
     *
     * @return The optionalString.
     */
    java.lang.String getOptionalString();

    /**
     * <code>string optional_string = 14;</code>
     *
     * @return The bytes for optionalString.
     */
    com.google.protobuf.ByteString getOptionalStringBytes();

    /**
     * <code>bytes optional_bytes = 15;</code>
     *
     * @return The optionalBytes.
     */
    com.google.protobuf.ByteString getOptionalBytes();

    /**
     * <code>
     * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
     * </code>
     *
     * @return Whether the optionalNestedMessage field is set.
     */
    boolean hasOptionalNestedMessage();

    /**
     * <code>
     * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
     * </code>
     *
     * @return The optionalNestedMessage.
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
        getOptionalNestedMessage();

    /**
     * <code>
     * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
     * </code>
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessageOrBuilder
        getOptionalNestedMessageOrBuilder();

    /**
     * <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code>
     *
     * @return Whether the optionalForeignMessage field is set.
     */
    boolean hasOptionalForeignMessage();

    /**
     * <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code>
     *
     * @return The optionalForeignMessage.
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage getOptionalForeignMessage();

    /** <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code> */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder
        getOptionalForeignMessageOrBuilder();

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum optional_nested_enum = 21;
     * </code>
     *
     * @return The enum numeric value on the wire for optionalNestedEnum.
     */
    int getOptionalNestedEnumValue();

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum optional_nested_enum = 21;
     * </code>
     *
     * @return The optionalNestedEnum.
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
        getOptionalNestedEnum();

    /**
     * <code>.legacy_gencode_test.proto3.ForeignEnum optional_foreign_enum = 22;</code>
     *
     * @return The enum numeric value on the wire for optionalForeignEnum.
     */
    int getOptionalForeignEnumValue();

    /**
     * <code>.legacy_gencode_test.proto3.ForeignEnum optional_foreign_enum = 22;</code>
     *
     * @return The optionalForeignEnum.
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum getOptionalForeignEnum();

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.AliasedEnum optional_aliased_enum = 23;
     * </code>
     *
     * @return The enum numeric value on the wire for optionalAliasedEnum.
     */
    int getOptionalAliasedEnumValue();

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.AliasedEnum optional_aliased_enum = 23;
     * </code>
     *
     * @return The optionalAliasedEnum.
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.AliasedEnum
        getOptionalAliasedEnum();

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code>
     *
     * @return Whether the recursiveMessage field is set.
     */
    boolean hasRecursiveMessage();

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code>
     *
     * @return The recursiveMessage.
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 getRecursiveMessage();

    /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code> */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3OrBuilder
        getRecursiveMessageOrBuilder();

    /**
     *
     *
     * <pre>
     * Repeated
     * </pre>
     *
     * <code>repeated int32 repeated_int32 = 31;</code>
     *
     * @return A list containing the repeatedInt32.
     */
    java.util.List<java.lang.Integer> getRepeatedInt32List();

    /**
     *
     *
     * <pre>
     * Repeated
     * </pre>
     *
     * <code>repeated int32 repeated_int32 = 31;</code>
     *
     * @return The count of repeatedInt32.
     */
    int getRepeatedInt32Count();

    /**
     *
     *
     * <pre>
     * Repeated
     * </pre>
     *
     * <code>repeated int32 repeated_int32 = 31;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedInt32 at the given index.
     */
    int getRepeatedInt32(int index);

    /**
     * <code>repeated int64 repeated_int64 = 32;</code>
     *
     * @return A list containing the repeatedInt64.
     */
    java.util.List<java.lang.Long> getRepeatedInt64List();

    /**
     * <code>repeated int64 repeated_int64 = 32;</code>
     *
     * @return The count of repeatedInt64.
     */
    int getRepeatedInt64Count();

    /**
     * <code>repeated int64 repeated_int64 = 32;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedInt64 at the given index.
     */
    long getRepeatedInt64(int index);

    /**
     * <code>repeated uint32 repeated_uint32 = 33;</code>
     *
     * @return A list containing the repeatedUint32.
     */
    java.util.List<java.lang.Integer> getRepeatedUint32List();

    /**
     * <code>repeated uint32 repeated_uint32 = 33;</code>
     *
     * @return The count of repeatedUint32.
     */
    int getRepeatedUint32Count();

    /**
     * <code>repeated uint32 repeated_uint32 = 33;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedUint32 at the given index.
     */
    int getRepeatedUint32(int index);

    /**
     * <code>repeated uint64 repeated_uint64 = 34;</code>
     *
     * @return A list containing the repeatedUint64.
     */
    java.util.List<java.lang.Long> getRepeatedUint64List();

    /**
     * <code>repeated uint64 repeated_uint64 = 34;</code>
     *
     * @return The count of repeatedUint64.
     */
    int getRepeatedUint64Count();

    /**
     * <code>repeated uint64 repeated_uint64 = 34;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedUint64 at the given index.
     */
    long getRepeatedUint64(int index);

    /**
     * <code>repeated sint32 repeated_sint32 = 35;</code>
     *
     * @return A list containing the repeatedSint32.
     */
    java.util.List<java.lang.Integer> getRepeatedSint32List();

    /**
     * <code>repeated sint32 repeated_sint32 = 35;</code>
     *
     * @return The count of repeatedSint32.
     */
    int getRepeatedSint32Count();

    /**
     * <code>repeated sint32 repeated_sint32 = 35;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedSint32 at the given index.
     */
    int getRepeatedSint32(int index);

    /**
     * <code>repeated sint64 repeated_sint64 = 36;</code>
     *
     * @return A list containing the repeatedSint64.
     */
    java.util.List<java.lang.Long> getRepeatedSint64List();

    /**
     * <code>repeated sint64 repeated_sint64 = 36;</code>
     *
     * @return The count of repeatedSint64.
     */
    int getRepeatedSint64Count();

    /**
     * <code>repeated sint64 repeated_sint64 = 36;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedSint64 at the given index.
     */
    long getRepeatedSint64(int index);

    /**
     * <code>repeated fixed32 repeated_fixed32 = 37;</code>
     *
     * @return A list containing the repeatedFixed32.
     */
    java.util.List<java.lang.Integer> getRepeatedFixed32List();

    /**
     * <code>repeated fixed32 repeated_fixed32 = 37;</code>
     *
     * @return The count of repeatedFixed32.
     */
    int getRepeatedFixed32Count();

    /**
     * <code>repeated fixed32 repeated_fixed32 = 37;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedFixed32 at the given index.
     */
    int getRepeatedFixed32(int index);

    /**
     * <code>repeated fixed64 repeated_fixed64 = 38;</code>
     *
     * @return A list containing the repeatedFixed64.
     */
    java.util.List<java.lang.Long> getRepeatedFixed64List();

    /**
     * <code>repeated fixed64 repeated_fixed64 = 38;</code>
     *
     * @return The count of repeatedFixed64.
     */
    int getRepeatedFixed64Count();

    /**
     * <code>repeated fixed64 repeated_fixed64 = 38;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedFixed64 at the given index.
     */
    long getRepeatedFixed64(int index);

    /**
     * <code>repeated sfixed32 repeated_sfixed32 = 39;</code>
     *
     * @return A list containing the repeatedSfixed32.
     */
    java.util.List<java.lang.Integer> getRepeatedSfixed32List();

    /**
     * <code>repeated sfixed32 repeated_sfixed32 = 39;</code>
     *
     * @return The count of repeatedSfixed32.
     */
    int getRepeatedSfixed32Count();

    /**
     * <code>repeated sfixed32 repeated_sfixed32 = 39;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedSfixed32 at the given index.
     */
    int getRepeatedSfixed32(int index);

    /**
     * <code>repeated sfixed64 repeated_sfixed64 = 40;</code>
     *
     * @return A list containing the repeatedSfixed64.
     */
    java.util.List<java.lang.Long> getRepeatedSfixed64List();

    /**
     * <code>repeated sfixed64 repeated_sfixed64 = 40;</code>
     *
     * @return The count of repeatedSfixed64.
     */
    int getRepeatedSfixed64Count();

    /**
     * <code>repeated sfixed64 repeated_sfixed64 = 40;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedSfixed64 at the given index.
     */
    long getRepeatedSfixed64(int index);

    /**
     * <code>repeated float repeated_float = 41;</code>
     *
     * @return A list containing the repeatedFloat.
     */
    java.util.List<java.lang.Float> getRepeatedFloatList();

    /**
     * <code>repeated float repeated_float = 41;</code>
     *
     * @return The count of repeatedFloat.
     */
    int getRepeatedFloatCount();

    /**
     * <code>repeated float repeated_float = 41;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedFloat at the given index.
     */
    float getRepeatedFloat(int index);

    /**
     * <code>repeated double repeated_double = 42;</code>
     *
     * @return A list containing the repeatedDouble.
     */
    java.util.List<java.lang.Double> getRepeatedDoubleList();

    /**
     * <code>repeated double repeated_double = 42;</code>
     *
     * @return The count of repeatedDouble.
     */
    int getRepeatedDoubleCount();

    /**
     * <code>repeated double repeated_double = 42;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedDouble at the given index.
     */
    double getRepeatedDouble(int index);

    /**
     * <code>repeated bool repeated_bool = 43;</code>
     *
     * @return A list containing the repeatedBool.
     */
    java.util.List<java.lang.Boolean> getRepeatedBoolList();

    /**
     * <code>repeated bool repeated_bool = 43;</code>
     *
     * @return The count of repeatedBool.
     */
    int getRepeatedBoolCount();

    /**
     * <code>repeated bool repeated_bool = 43;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedBool at the given index.
     */
    boolean getRepeatedBool(int index);

    /**
     * <code>repeated string repeated_string = 44;</code>
     *
     * @return A list containing the repeatedString.
     */
    java.util.List<java.lang.String> getRepeatedStringList();

    /**
     * <code>repeated string repeated_string = 44;</code>
     *
     * @return The count of repeatedString.
     */
    int getRepeatedStringCount();

    /**
     * <code>repeated string repeated_string = 44;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedString at the given index.
     */
    java.lang.String getRepeatedString(int index);

    /**
     * <code>repeated string repeated_string = 44;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the repeatedString at the given index.
     */
    com.google.protobuf.ByteString getRepeatedStringBytes(int index);

    /**
     * <code>repeated bytes repeated_bytes = 45;</code>
     *
     * @return A list containing the repeatedBytes.
     */
    java.util.List<com.google.protobuf.ByteString> getRepeatedBytesList();

    /**
     * <code>repeated bytes repeated_bytes = 45;</code>
     *
     * @return The count of repeatedBytes.
     */
    int getRepeatedBytesCount();

    /**
     * <code>repeated bytes repeated_bytes = 45;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedBytes at the given index.
     */
    com.google.protobuf.ByteString getRepeatedBytes(int index);

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
     * </code>
     */
    java.util.List<
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
        getRepeatedNestedMessageList();

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
     * </code>
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
        getRepeatedNestedMessage(int index);

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
     * </code>
     */
    int getRepeatedNestedMessageCount();

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
     * </code>
     */
    java.util.List<
            ? extends
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                    .NestedMessageOrBuilder>
        getRepeatedNestedMessageOrBuilderList();

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
     * </code>
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessageOrBuilder
        getRepeatedNestedMessageOrBuilder(int index);

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
     * </code>
     */
    java.util.List<legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
        getRepeatedForeignMessageList();

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
     * </code>
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage getRepeatedForeignMessage(
        int index);

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
     * </code>
     */
    int getRepeatedForeignMessageCount();

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
     * </code>
     */
    java.util.List<
            ? extends legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder>
        getRepeatedForeignMessageOrBuilderList();

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
     * </code>
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder
        getRepeatedForeignMessageOrBuilder(int index);

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
     * </code>
     *
     * @return A list containing the repeatedNestedEnum.
     */
    java.util.List<legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        getRepeatedNestedEnumList();

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
     * </code>
     *
     * @return The count of repeatedNestedEnum.
     */
    int getRepeatedNestedEnumCount();

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
     * </code>
     *
     * @param index The index of the element to return.
     * @return The repeatedNestedEnum at the given index.
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
        getRepeatedNestedEnum(int index);

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
     * </code>
     *
     * @return A list containing the enum numeric values on the wire for repeatedNestedEnum.
     */
    java.util.List<java.lang.Integer> getRepeatedNestedEnumValueList();

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
     * </code>
     *
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of repeatedNestedEnum at the given index.
     */
    int getRepeatedNestedEnumValue(int index);

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
     *
     * @return A list containing the repeatedForeignEnum.
     */
    java.util.List<legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
        getRepeatedForeignEnumList();

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
     *
     * @return The count of repeatedForeignEnum.
     */
    int getRepeatedForeignEnumCount();

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedForeignEnum at the given index.
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum getRepeatedForeignEnum(int index);

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
     *
     * @return A list containing the enum numeric values on the wire for repeatedForeignEnum.
     */
    java.util.List<java.lang.Integer> getRepeatedForeignEnumValueList();

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
     *
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of repeatedForeignEnum at the given index.
     */
    int getRepeatedForeignEnumValue(int index);

    /**
     *
     *
     * <pre>
     * Packed
     * </pre>
     *
     * <code>repeated int32 packed_int32 = 75 [packed = true];</code>
     *
     * @return A list containing the packedInt32.
     */
    java.util.List<java.lang.Integer> getPackedInt32List();

    /**
     *
     *
     * <pre>
     * Packed
     * </pre>
     *
     * <code>repeated int32 packed_int32 = 75 [packed = true];</code>
     *
     * @return The count of packedInt32.
     */
    int getPackedInt32Count();

    /**
     *
     *
     * <pre>
     * Packed
     * </pre>
     *
     * <code>repeated int32 packed_int32 = 75 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedInt32 at the given index.
     */
    int getPackedInt32(int index);

    /**
     * <code>repeated int64 packed_int64 = 76 [packed = true];</code>
     *
     * @return A list containing the packedInt64.
     */
    java.util.List<java.lang.Long> getPackedInt64List();

    /**
     * <code>repeated int64 packed_int64 = 76 [packed = true];</code>
     *
     * @return The count of packedInt64.
     */
    int getPackedInt64Count();

    /**
     * <code>repeated int64 packed_int64 = 76 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedInt64 at the given index.
     */
    long getPackedInt64(int index);

    /**
     * <code>repeated uint32 packed_uint32 = 77 [packed = true];</code>
     *
     * @return A list containing the packedUint32.
     */
    java.util.List<java.lang.Integer> getPackedUint32List();

    /**
     * <code>repeated uint32 packed_uint32 = 77 [packed = true];</code>
     *
     * @return The count of packedUint32.
     */
    int getPackedUint32Count();

    /**
     * <code>repeated uint32 packed_uint32 = 77 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedUint32 at the given index.
     */
    int getPackedUint32(int index);

    /**
     * <code>repeated uint64 packed_uint64 = 78 [packed = true];</code>
     *
     * @return A list containing the packedUint64.
     */
    java.util.List<java.lang.Long> getPackedUint64List();

    /**
     * <code>repeated uint64 packed_uint64 = 78 [packed = true];</code>
     *
     * @return The count of packedUint64.
     */
    int getPackedUint64Count();

    /**
     * <code>repeated uint64 packed_uint64 = 78 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedUint64 at the given index.
     */
    long getPackedUint64(int index);

    /**
     * <code>repeated sint32 packed_sint32 = 79 [packed = true];</code>
     *
     * @return A list containing the packedSint32.
     */
    java.util.List<java.lang.Integer> getPackedSint32List();

    /**
     * <code>repeated sint32 packed_sint32 = 79 [packed = true];</code>
     *
     * @return The count of packedSint32.
     */
    int getPackedSint32Count();

    /**
     * <code>repeated sint32 packed_sint32 = 79 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedSint32 at the given index.
     */
    int getPackedSint32(int index);

    /**
     * <code>repeated sint64 packed_sint64 = 80 [packed = true];</code>
     *
     * @return A list containing the packedSint64.
     */
    java.util.List<java.lang.Long> getPackedSint64List();

    /**
     * <code>repeated sint64 packed_sint64 = 80 [packed = true];</code>
     *
     * @return The count of packedSint64.
     */
    int getPackedSint64Count();

    /**
     * <code>repeated sint64 packed_sint64 = 80 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedSint64 at the given index.
     */
    long getPackedSint64(int index);

    /**
     * <code>repeated fixed32 packed_fixed32 = 81 [packed = true];</code>
     *
     * @return A list containing the packedFixed32.
     */
    java.util.List<java.lang.Integer> getPackedFixed32List();

    /**
     * <code>repeated fixed32 packed_fixed32 = 81 [packed = true];</code>
     *
     * @return The count of packedFixed32.
     */
    int getPackedFixed32Count();

    /**
     * <code>repeated fixed32 packed_fixed32 = 81 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedFixed32 at the given index.
     */
    int getPackedFixed32(int index);

    /**
     * <code>repeated fixed64 packed_fixed64 = 82 [packed = true];</code>
     *
     * @return A list containing the packedFixed64.
     */
    java.util.List<java.lang.Long> getPackedFixed64List();

    /**
     * <code>repeated fixed64 packed_fixed64 = 82 [packed = true];</code>
     *
     * @return The count of packedFixed64.
     */
    int getPackedFixed64Count();

    /**
     * <code>repeated fixed64 packed_fixed64 = 82 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedFixed64 at the given index.
     */
    long getPackedFixed64(int index);

    /**
     * <code>repeated sfixed32 packed_sfixed32 = 83 [packed = true];</code>
     *
     * @return A list containing the packedSfixed32.
     */
    java.util.List<java.lang.Integer> getPackedSfixed32List();

    /**
     * <code>repeated sfixed32 packed_sfixed32 = 83 [packed = true];</code>
     *
     * @return The count of packedSfixed32.
     */
    int getPackedSfixed32Count();

    /**
     * <code>repeated sfixed32 packed_sfixed32 = 83 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedSfixed32 at the given index.
     */
    int getPackedSfixed32(int index);

    /**
     * <code>repeated sfixed64 packed_sfixed64 = 84 [packed = true];</code>
     *
     * @return A list containing the packedSfixed64.
     */
    java.util.List<java.lang.Long> getPackedSfixed64List();

    /**
     * <code>repeated sfixed64 packed_sfixed64 = 84 [packed = true];</code>
     *
     * @return The count of packedSfixed64.
     */
    int getPackedSfixed64Count();

    /**
     * <code>repeated sfixed64 packed_sfixed64 = 84 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedSfixed64 at the given index.
     */
    long getPackedSfixed64(int index);

    /**
     * <code>repeated float packed_float = 85 [packed = true];</code>
     *
     * @return A list containing the packedFloat.
     */
    java.util.List<java.lang.Float> getPackedFloatList();

    /**
     * <code>repeated float packed_float = 85 [packed = true];</code>
     *
     * @return The count of packedFloat.
     */
    int getPackedFloatCount();

    /**
     * <code>repeated float packed_float = 85 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedFloat at the given index.
     */
    float getPackedFloat(int index);

    /**
     * <code>repeated double packed_double = 86 [packed = true];</code>
     *
     * @return A list containing the packedDouble.
     */
    java.util.List<java.lang.Double> getPackedDoubleList();

    /**
     * <code>repeated double packed_double = 86 [packed = true];</code>
     *
     * @return The count of packedDouble.
     */
    int getPackedDoubleCount();

    /**
     * <code>repeated double packed_double = 86 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedDouble at the given index.
     */
    double getPackedDouble(int index);

    /**
     * <code>repeated bool packed_bool = 87 [packed = true];</code>
     *
     * @return A list containing the packedBool.
     */
    java.util.List<java.lang.Boolean> getPackedBoolList();

    /**
     * <code>repeated bool packed_bool = 87 [packed = true];</code>
     *
     * @return The count of packedBool.
     */
    int getPackedBoolCount();

    /**
     * <code>repeated bool packed_bool = 87 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedBool at the given index.
     */
    boolean getPackedBool(int index);

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
     * </code>
     *
     * @return A list containing the packedNestedEnum.
     */
    java.util.List<legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        getPackedNestedEnumList();

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
     * </code>
     *
     * @return The count of packedNestedEnum.
     */
    int getPackedNestedEnumCount();

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
     * </code>
     *
     * @param index The index of the element to return.
     * @return The packedNestedEnum at the given index.
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
        getPackedNestedEnum(int index);

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
     * </code>
     *
     * @return A list containing the enum numeric values on the wire for packedNestedEnum.
     */
    java.util.List<java.lang.Integer> getPackedNestedEnumValueList();

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
     * </code>
     *
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of packedNestedEnum at the given index.
     */
    int getPackedNestedEnumValue(int index);

    /**
     *
     *
     * <pre>
     * Unpacked
     * </pre>
     *
     * <code>repeated int32 unpacked_int32 = 89 [packed = false];</code>
     *
     * @return A list containing the unpackedInt32.
     */
    java.util.List<java.lang.Integer> getUnpackedInt32List();

    /**
     *
     *
     * <pre>
     * Unpacked
     * </pre>
     *
     * <code>repeated int32 unpacked_int32 = 89 [packed = false];</code>
     *
     * @return The count of unpackedInt32.
     */
    int getUnpackedInt32Count();

    /**
     *
     *
     * <pre>
     * Unpacked
     * </pre>
     *
     * <code>repeated int32 unpacked_int32 = 89 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedInt32 at the given index.
     */
    int getUnpackedInt32(int index);

    /**
     * <code>repeated int64 unpacked_int64 = 90 [packed = false];</code>
     *
     * @return A list containing the unpackedInt64.
     */
    java.util.List<java.lang.Long> getUnpackedInt64List();

    /**
     * <code>repeated int64 unpacked_int64 = 90 [packed = false];</code>
     *
     * @return The count of unpackedInt64.
     */
    int getUnpackedInt64Count();

    /**
     * <code>repeated int64 unpacked_int64 = 90 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedInt64 at the given index.
     */
    long getUnpackedInt64(int index);

    /**
     * <code>repeated uint32 unpacked_uint32 = 91 [packed = false];</code>
     *
     * @return A list containing the unpackedUint32.
     */
    java.util.List<java.lang.Integer> getUnpackedUint32List();

    /**
     * <code>repeated uint32 unpacked_uint32 = 91 [packed = false];</code>
     *
     * @return The count of unpackedUint32.
     */
    int getUnpackedUint32Count();

    /**
     * <code>repeated uint32 unpacked_uint32 = 91 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedUint32 at the given index.
     */
    int getUnpackedUint32(int index);

    /**
     * <code>repeated uint64 unpacked_uint64 = 92 [packed = false];</code>
     *
     * @return A list containing the unpackedUint64.
     */
    java.util.List<java.lang.Long> getUnpackedUint64List();

    /**
     * <code>repeated uint64 unpacked_uint64 = 92 [packed = false];</code>
     *
     * @return The count of unpackedUint64.
     */
    int getUnpackedUint64Count();

    /**
     * <code>repeated uint64 unpacked_uint64 = 92 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedUint64 at the given index.
     */
    long getUnpackedUint64(int index);

    /**
     * <code>repeated sint32 unpacked_sint32 = 93 [packed = false];</code>
     *
     * @return A list containing the unpackedSint32.
     */
    java.util.List<java.lang.Integer> getUnpackedSint32List();

    /**
     * <code>repeated sint32 unpacked_sint32 = 93 [packed = false];</code>
     *
     * @return The count of unpackedSint32.
     */
    int getUnpackedSint32Count();

    /**
     * <code>repeated sint32 unpacked_sint32 = 93 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedSint32 at the given index.
     */
    int getUnpackedSint32(int index);

    /**
     * <code>repeated sint64 unpacked_sint64 = 94 [packed = false];</code>
     *
     * @return A list containing the unpackedSint64.
     */
    java.util.List<java.lang.Long> getUnpackedSint64List();

    /**
     * <code>repeated sint64 unpacked_sint64 = 94 [packed = false];</code>
     *
     * @return The count of unpackedSint64.
     */
    int getUnpackedSint64Count();

    /**
     * <code>repeated sint64 unpacked_sint64 = 94 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedSint64 at the given index.
     */
    long getUnpackedSint64(int index);

    /**
     * <code>repeated fixed32 unpacked_fixed32 = 95 [packed = false];</code>
     *
     * @return A list containing the unpackedFixed32.
     */
    java.util.List<java.lang.Integer> getUnpackedFixed32List();

    /**
     * <code>repeated fixed32 unpacked_fixed32 = 95 [packed = false];</code>
     *
     * @return The count of unpackedFixed32.
     */
    int getUnpackedFixed32Count();

    /**
     * <code>repeated fixed32 unpacked_fixed32 = 95 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedFixed32 at the given index.
     */
    int getUnpackedFixed32(int index);

    /**
     * <code>repeated fixed64 unpacked_fixed64 = 96 [packed = false];</code>
     *
     * @return A list containing the unpackedFixed64.
     */
    java.util.List<java.lang.Long> getUnpackedFixed64List();

    /**
     * <code>repeated fixed64 unpacked_fixed64 = 96 [packed = false];</code>
     *
     * @return The count of unpackedFixed64.
     */
    int getUnpackedFixed64Count();

    /**
     * <code>repeated fixed64 unpacked_fixed64 = 96 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedFixed64 at the given index.
     */
    long getUnpackedFixed64(int index);

    /**
     * <code>repeated sfixed32 unpacked_sfixed32 = 97 [packed = false];</code>
     *
     * @return A list containing the unpackedSfixed32.
     */
    java.util.List<java.lang.Integer> getUnpackedSfixed32List();

    /**
     * <code>repeated sfixed32 unpacked_sfixed32 = 97 [packed = false];</code>
     *
     * @return The count of unpackedSfixed32.
     */
    int getUnpackedSfixed32Count();

    /**
     * <code>repeated sfixed32 unpacked_sfixed32 = 97 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedSfixed32 at the given index.
     */
    int getUnpackedSfixed32(int index);

    /**
     * <code>repeated sfixed64 unpacked_sfixed64 = 98 [packed = false];</code>
     *
     * @return A list containing the unpackedSfixed64.
     */
    java.util.List<java.lang.Long> getUnpackedSfixed64List();

    /**
     * <code>repeated sfixed64 unpacked_sfixed64 = 98 [packed = false];</code>
     *
     * @return The count of unpackedSfixed64.
     */
    int getUnpackedSfixed64Count();

    /**
     * <code>repeated sfixed64 unpacked_sfixed64 = 98 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedSfixed64 at the given index.
     */
    long getUnpackedSfixed64(int index);

    /**
     * <code>repeated float unpacked_float = 99 [packed = false];</code>
     *
     * @return A list containing the unpackedFloat.
     */
    java.util.List<java.lang.Float> getUnpackedFloatList();

    /**
     * <code>repeated float unpacked_float = 99 [packed = false];</code>
     *
     * @return The count of unpackedFloat.
     */
    int getUnpackedFloatCount();

    /**
     * <code>repeated float unpacked_float = 99 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedFloat at the given index.
     */
    float getUnpackedFloat(int index);

    /**
     * <code>repeated double unpacked_double = 100 [packed = false];</code>
     *
     * @return A list containing the unpackedDouble.
     */
    java.util.List<java.lang.Double> getUnpackedDoubleList();

    /**
     * <code>repeated double unpacked_double = 100 [packed = false];</code>
     *
     * @return The count of unpackedDouble.
     */
    int getUnpackedDoubleCount();

    /**
     * <code>repeated double unpacked_double = 100 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedDouble at the given index.
     */
    double getUnpackedDouble(int index);

    /**
     * <code>repeated bool unpacked_bool = 101 [packed = false];</code>
     *
     * @return A list containing the unpackedBool.
     */
    java.util.List<java.lang.Boolean> getUnpackedBoolList();

    /**
     * <code>repeated bool unpacked_bool = 101 [packed = false];</code>
     *
     * @return The count of unpackedBool.
     */
    int getUnpackedBoolCount();

    /**
     * <code>repeated bool unpacked_bool = 101 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedBool at the given index.
     */
    boolean getUnpackedBool(int index);

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
     * </code>
     *
     * @return A list containing the unpackedNestedEnum.
     */
    java.util.List<legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        getUnpackedNestedEnumList();

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
     * </code>
     *
     * @return The count of unpackedNestedEnum.
     */
    int getUnpackedNestedEnumCount();

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
     * </code>
     *
     * @param index The index of the element to return.
     * @return The unpackedNestedEnum at the given index.
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
        getUnpackedNestedEnum(int index);

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
     * </code>
     *
     * @return A list containing the enum numeric values on the wire for unpackedNestedEnum.
     */
    java.util.List<java.lang.Integer> getUnpackedNestedEnumValueList();

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
     * </code>
     *
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of unpackedNestedEnum at the given index.
     */
    int getUnpackedNestedEnumValue(int index);

    /**
     *
     *
     * <pre>
     * Map
     * </pre>
     *
     * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
     */
    int getMapInt32Int32Count();

    /**
     *
     *
     * <pre>
     * Map
     * </pre>
     *
     * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
     */
    boolean containsMapInt32Int32(int key);

    /** Use {@link #getMapInt32Int32Map()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.Integer, java.lang.Integer> getMapInt32Int32();

    /**
     *
     *
     * <pre>
     * Map
     * </pre>
     *
     * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
     */
    java.util.Map<java.lang.Integer, java.lang.Integer> getMapInt32Int32Map();

    /**
     *
     *
     * <pre>
     * Map
     * </pre>
     *
     * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
     */
    int getMapInt32Int32OrDefault(int key, int defaultValue);

    /**
     *
     *
     * <pre>
     * Map
     * </pre>
     *
     * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
     */
    int getMapInt32Int32OrThrow(int key);

    /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
    int getMapInt64Int64Count();

    /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
    boolean containsMapInt64Int64(long key);

    /** Use {@link #getMapInt64Int64Map()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.Long, java.lang.Long> getMapInt64Int64();

    /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
    java.util.Map<java.lang.Long, java.lang.Long> getMapInt64Int64Map();

    /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
    long getMapInt64Int64OrDefault(long key, long defaultValue);

    /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
    long getMapInt64Int64OrThrow(long key);

    /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
    int getMapUint32Uint32Count();

    /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
    boolean containsMapUint32Uint32(int key);

    /** Use {@link #getMapUint32Uint32Map()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.Integer, java.lang.Integer> getMapUint32Uint32();

    /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
    java.util.Map<java.lang.Integer, java.lang.Integer> getMapUint32Uint32Map();

    /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
    int getMapUint32Uint32OrDefault(int key, int defaultValue);

    /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
    int getMapUint32Uint32OrThrow(int key);

    /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
    int getMapUint64Uint64Count();

    /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
    boolean containsMapUint64Uint64(long key);

    /** Use {@link #getMapUint64Uint64Map()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.Long, java.lang.Long> getMapUint64Uint64();

    /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
    java.util.Map<java.lang.Long, java.lang.Long> getMapUint64Uint64Map();

    /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
    long getMapUint64Uint64OrDefault(long key, long defaultValue);

    /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
    long getMapUint64Uint64OrThrow(long key);

    /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
    int getMapSint32Sint32Count();

    /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
    boolean containsMapSint32Sint32(int key);

    /** Use {@link #getMapSint32Sint32Map()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.Integer, java.lang.Integer> getMapSint32Sint32();

    /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
    java.util.Map<java.lang.Integer, java.lang.Integer> getMapSint32Sint32Map();

    /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
    int getMapSint32Sint32OrDefault(int key, int defaultValue);

    /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
    int getMapSint32Sint32OrThrow(int key);

    /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
    int getMapSint64Sint64Count();

    /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
    boolean containsMapSint64Sint64(long key);

    /** Use {@link #getMapSint64Sint64Map()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.Long, java.lang.Long> getMapSint64Sint64();

    /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
    java.util.Map<java.lang.Long, java.lang.Long> getMapSint64Sint64Map();

    /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
    long getMapSint64Sint64OrDefault(long key, long defaultValue);

    /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
    long getMapSint64Sint64OrThrow(long key);

    /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
    int getMapFixed32Fixed32Count();

    /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
    boolean containsMapFixed32Fixed32(int key);

    /** Use {@link #getMapFixed32Fixed32Map()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.Integer, java.lang.Integer> getMapFixed32Fixed32();

    /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
    java.util.Map<java.lang.Integer, java.lang.Integer> getMapFixed32Fixed32Map();

    /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
    int getMapFixed32Fixed32OrDefault(int key, int defaultValue);

    /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
    int getMapFixed32Fixed32OrThrow(int key);

    /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
    int getMapFixed64Fixed64Count();

    /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
    boolean containsMapFixed64Fixed64(long key);

    /** Use {@link #getMapFixed64Fixed64Map()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.Long, java.lang.Long> getMapFixed64Fixed64();

    /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
    java.util.Map<java.lang.Long, java.lang.Long> getMapFixed64Fixed64Map();

    /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
    long getMapFixed64Fixed64OrDefault(long key, long defaultValue);

    /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
    long getMapFixed64Fixed64OrThrow(long key);

    /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
    int getMapSfixed32Sfixed32Count();

    /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
    boolean containsMapSfixed32Sfixed32(int key);

    /** Use {@link #getMapSfixed32Sfixed32Map()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.Integer, java.lang.Integer> getMapSfixed32Sfixed32();

    /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
    java.util.Map<java.lang.Integer, java.lang.Integer> getMapSfixed32Sfixed32Map();

    /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
    int getMapSfixed32Sfixed32OrDefault(int key, int defaultValue);

    /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
    int getMapSfixed32Sfixed32OrThrow(int key);

    /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
    int getMapSfixed64Sfixed64Count();

    /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
    boolean containsMapSfixed64Sfixed64(long key);

    /** Use {@link #getMapSfixed64Sfixed64Map()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.Long, java.lang.Long> getMapSfixed64Sfixed64();

    /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
    java.util.Map<java.lang.Long, java.lang.Long> getMapSfixed64Sfixed64Map();

    /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
    long getMapSfixed64Sfixed64OrDefault(long key, long defaultValue);

    /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
    long getMapSfixed64Sfixed64OrThrow(long key);

    /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
    int getMapInt32FloatCount();

    /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
    boolean containsMapInt32Float(int key);

    /** Use {@link #getMapInt32FloatMap()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.Integer, java.lang.Float> getMapInt32Float();

    /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
    java.util.Map<java.lang.Integer, java.lang.Float> getMapInt32FloatMap();

    /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
    float getMapInt32FloatOrDefault(int key, float defaultValue);

    /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
    float getMapInt32FloatOrThrow(int key);

    /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
    int getMapInt32DoubleCount();

    /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
    boolean containsMapInt32Double(int key);

    /** Use {@link #getMapInt32DoubleMap()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.Integer, java.lang.Double> getMapInt32Double();

    /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
    java.util.Map<java.lang.Integer, java.lang.Double> getMapInt32DoubleMap();

    /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
    double getMapInt32DoubleOrDefault(int key, double defaultValue);

    /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
    double getMapInt32DoubleOrThrow(int key);

    /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
    int getMapBoolBoolCount();

    /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
    boolean containsMapBoolBool(boolean key);

    /** Use {@link #getMapBoolBoolMap()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.Boolean, java.lang.Boolean> getMapBoolBool();

    /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
    java.util.Map<java.lang.Boolean, java.lang.Boolean> getMapBoolBoolMap();

    /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
    boolean getMapBoolBoolOrDefault(boolean key, boolean defaultValue);

    /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
    boolean getMapBoolBoolOrThrow(boolean key);

    /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
    int getMapStringStringCount();

    /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
    boolean containsMapStringString(java.lang.String key);

    /** Use {@link #getMapStringStringMap()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String> getMapStringString();

    /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
    java.util.Map<java.lang.String, java.lang.String> getMapStringStringMap();

    /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
    /* nullable */
    java.lang.String getMapStringStringOrDefault(
        java.lang.String key,
        /* nullable */
        java.lang.String defaultValue);

    /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
    java.lang.String getMapStringStringOrThrow(java.lang.String key);

    /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
    int getMapStringBytesCount();

    /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
    boolean containsMapStringBytes(java.lang.String key);

    /** Use {@link #getMapStringBytesMap()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, com.google.protobuf.ByteString> getMapStringBytes();

    /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
    java.util.Map<java.lang.String, com.google.protobuf.ByteString> getMapStringBytesMap();

    /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
    /* nullable */
    com.google.protobuf.ByteString getMapStringBytesOrDefault(
        java.lang.String key,
        /* nullable */
        com.google.protobuf.ByteString defaultValue);

    /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
    com.google.protobuf.ByteString getMapStringBytesOrThrow(java.lang.String key);

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
     * </code>
     */
    int getMapStringNestedMessageCount();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
     * </code>
     */
    boolean containsMapStringNestedMessage(java.lang.String key);

    /** Use {@link #getMapStringNestedMessageMap()} instead. */
    @java.lang.Deprecated
    java.util.Map<
            java.lang.String,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
        getMapStringNestedMessage();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
     * </code>
     */
    java.util.Map<
            java.lang.String,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
        getMapStringNestedMessageMap();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
     * </code>
     */
    /* nullable */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
        getMapStringNestedMessageOrDefault(
            java.lang.String key,
            /* nullable */
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                defaultValue);

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
     * </code>
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
        getMapStringNestedMessageOrThrow(java.lang.String key);

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
     * </code>
     */
    int getMapStringForeignMessageCount();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
     * </code>
     */
    boolean containsMapStringForeignMessage(java.lang.String key);

    /** Use {@link #getMapStringForeignMessageMap()} instead. */
    @java.lang.Deprecated
    java.util.Map<
            java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
        getMapStringForeignMessage();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
     * </code>
     */
    java.util.Map<
            java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
        getMapStringForeignMessageMap();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
     * </code>
     */
    /* nullable */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
        getMapStringForeignMessageOrDefault(
            java.lang.String key,
            /* nullable */
            legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage defaultValue);

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
     * </code>
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
        getMapStringForeignMessageOrThrow(java.lang.String key);

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    int getMapStringNestedEnumCount();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    boolean containsMapStringNestedEnum(java.lang.String key);

    /** Use {@link #getMapStringNestedEnumMap()} instead. */
    @java.lang.Deprecated
    java.util.Map<
            java.lang.String,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        getMapStringNestedEnum();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    java.util.Map<
            java.lang.String,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        getMapStringNestedEnumMap();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    /* nullable */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
        getMapStringNestedEnumOrDefault(
            java.lang.String key,
            /* nullable */
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                defaultValue);

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
        getMapStringNestedEnumOrThrow(java.lang.String key);

    /** Use {@link #getMapStringNestedEnumValueMap()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.Integer> getMapStringNestedEnumValue();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    java.util.Map<java.lang.String, java.lang.Integer> getMapStringNestedEnumValueMap();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    int getMapStringNestedEnumValueOrDefault(java.lang.String key, int defaultValue);

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    int getMapStringNestedEnumValueOrThrow(java.lang.String key);

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    int getMapStringForeignEnumCount();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    boolean containsMapStringForeignEnum(java.lang.String key);

    /** Use {@link #getMapStringForeignEnumMap()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
        getMapStringForeignEnum();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    java.util.Map<java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
        getMapStringForeignEnumMap();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    /* nullable */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum getMapStringForeignEnumOrDefault(
        java.lang.String key,
        /* nullable */
        legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum defaultValue);

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum getMapStringForeignEnumOrThrow(
        java.lang.String key);

    /** Use {@link #getMapStringForeignEnumValueMap()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.Integer> getMapStringForeignEnumValue();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    java.util.Map<java.lang.String, java.lang.Integer> getMapStringForeignEnumValueMap();

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    int getMapStringForeignEnumValueOrDefault(java.lang.String key, int defaultValue);

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    int getMapStringForeignEnumValueOrThrow(java.lang.String key);

    /**
     * <code>uint32 oneof_uint32 = 111;</code>
     *
     * @return Whether the oneofUint32 field is set.
     */
    boolean hasOneofUint32();

    /**
     * <code>uint32 oneof_uint32 = 111;</code>
     *
     * @return The oneofUint32.
     */
    int getOneofUint32();

    /**
     * <code>
     * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
     * </code>
     *
     * @return Whether the oneofNestedMessage field is set.
     */
    boolean hasOneofNestedMessage();

    /**
     * <code>
     * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
     * </code>
     *
     * @return The oneofNestedMessage.
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
        getOneofNestedMessage();

    /**
     * <code>
     * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
     * </code>
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessageOrBuilder
        getOneofNestedMessageOrBuilder();

    /**
     * <code>string oneof_string = 113;</code>
     *
     * @return Whether the oneofString field is set.
     */
    boolean hasOneofString();

    /**
     * <code>string oneof_string = 113;</code>
     *
     * @return The oneofString.
     */
    java.lang.String getOneofString();

    /**
     * <code>string oneof_string = 113;</code>
     *
     * @return The bytes for oneofString.
     */
    com.google.protobuf.ByteString getOneofStringBytes();

    /**
     * <code>bytes oneof_bytes = 114;</code>
     *
     * @return Whether the oneofBytes field is set.
     */
    boolean hasOneofBytes();

    /**
     * <code>bytes oneof_bytes = 114;</code>
     *
     * @return The oneofBytes.
     */
    com.google.protobuf.ByteString getOneofBytes();

    /**
     * <code>bool oneof_bool = 115;</code>
     *
     * @return Whether the oneofBool field is set.
     */
    boolean hasOneofBool();

    /**
     * <code>bool oneof_bool = 115;</code>
     *
     * @return The oneofBool.
     */
    boolean getOneofBool();

    /**
     * <code>uint64 oneof_uint64 = 116;</code>
     *
     * @return Whether the oneofUint64 field is set.
     */
    boolean hasOneofUint64();

    /**
     * <code>uint64 oneof_uint64 = 116;</code>
     *
     * @return The oneofUint64.
     */
    long getOneofUint64();

    /**
     * <code>float oneof_float = 117;</code>
     *
     * @return Whether the oneofFloat field is set.
     */
    boolean hasOneofFloat();

    /**
     * <code>float oneof_float = 117;</code>
     *
     * @return The oneofFloat.
     */
    float getOneofFloat();

    /**
     * <code>double oneof_double = 118;</code>
     *
     * @return Whether the oneofDouble field is set.
     */
    boolean hasOneofDouble();

    /**
     * <code>double oneof_double = 118;</code>
     *
     * @return The oneofDouble.
     */
    double getOneofDouble();

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum oneof_enum = 119;</code>
     *
     * @return Whether the oneofEnum field is set.
     */
    boolean hasOneofEnum();

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum oneof_enum = 119;</code>
     *
     * @return The enum numeric value on the wire for oneofEnum.
     */
    int getOneofEnumValue();

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum oneof_enum = 119;</code>
     *
     * @return The oneofEnum.
     */
    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum getOneofEnum();

    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.OneofFieldCase
        getOneofFieldCase();
  }

  /**
   *
   *
   * <pre>
   * This is a slightly trimmed-down version of TestAllTypesProto3 from
   * google/protobuf/test_messages_proto3.proto but without imports/ctypes.
   * </pre>
   *
   * Protobuf type {@code legacy_gencode_test.proto3.TestMostTypesProto3}
   */
  public static final class TestMostTypesProto3 extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:legacy_gencode_test.proto3.TestMostTypesProto3)
      TestMostTypesProto3OrBuilder {
    private static final long serialVersionUID = 0L;

    // Use TestMostTypesProto3.newBuilder() to construct.
    private TestMostTypesProto3(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private TestMostTypesProto3() {
      optionalString_ = "";
      optionalBytes_ = com.google.protobuf.ByteString.EMPTY;
      optionalNestedEnum_ = 0;
      optionalForeignEnum_ = 0;
      optionalAliasedEnum_ = 0;
      repeatedInt32_ = emptyIntList();
      repeatedInt64_ = emptyLongList();
      repeatedUint32_ = emptyIntList();
      repeatedUint64_ = emptyLongList();
      repeatedSint32_ = emptyIntList();
      repeatedSint64_ = emptyLongList();
      repeatedFixed32_ = emptyIntList();
      repeatedFixed64_ = emptyLongList();
      repeatedSfixed32_ = emptyIntList();
      repeatedSfixed64_ = emptyLongList();
      repeatedFloat_ = emptyFloatList();
      repeatedDouble_ = emptyDoubleList();
      repeatedBool_ = emptyBooleanList();
      repeatedString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      repeatedBytes_ = java.util.Collections.emptyList();
      repeatedNestedMessage_ = java.util.Collections.emptyList();
      repeatedForeignMessage_ = java.util.Collections.emptyList();
      repeatedNestedEnum_ = java.util.Collections.emptyList();
      repeatedForeignEnum_ = java.util.Collections.emptyList();
      packedInt32_ = emptyIntList();
      packedInt64_ = emptyLongList();
      packedUint32_ = emptyIntList();
      packedUint64_ = emptyLongList();
      packedSint32_ = emptyIntList();
      packedSint64_ = emptyLongList();
      packedFixed32_ = emptyIntList();
      packedFixed64_ = emptyLongList();
      packedSfixed32_ = emptyIntList();
      packedSfixed64_ = emptyLongList();
      packedFloat_ = emptyFloatList();
      packedDouble_ = emptyDoubleList();
      packedBool_ = emptyBooleanList();
      packedNestedEnum_ = java.util.Collections.emptyList();
      unpackedInt32_ = emptyIntList();
      unpackedInt64_ = emptyLongList();
      unpackedUint32_ = emptyIntList();
      unpackedUint64_ = emptyLongList();
      unpackedSint32_ = emptyIntList();
      unpackedSint64_ = emptyLongList();
      unpackedFixed32_ = emptyIntList();
      unpackedFixed64_ = emptyLongList();
      unpackedSfixed32_ = emptyIntList();
      unpackedSfixed64_ = emptyLongList();
      unpackedFloat_ = emptyFloatList();
      unpackedDouble_ = emptyDoubleList();
      unpackedBool_ = emptyBooleanList();
      unpackedNestedEnum_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return legacy_gencode_test.proto3.Proto3GencodeTestProto
          .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(int number) {
      switch (number) {
        case 56:
          return internalGetMapInt32Int32();
        case 57:
          return internalGetMapInt64Int64();
        case 58:
          return internalGetMapUint32Uint32();
        case 59:
          return internalGetMapUint64Uint64();
        case 60:
          return internalGetMapSint32Sint32();
        case 61:
          return internalGetMapSint64Sint64();
        case 62:
          return internalGetMapFixed32Fixed32();
        case 63:
          return internalGetMapFixed64Fixed64();
        case 64:
          return internalGetMapSfixed32Sfixed32();
        case 65:
          return internalGetMapSfixed64Sfixed64();
        case 66:
          return internalGetMapInt32Float();
        case 67:
          return internalGetMapInt32Double();
        case 68:
          return internalGetMapBoolBool();
        case 69:
          return internalGetMapStringString();
        case 70:
          return internalGetMapStringBytes();
        case 71:
          return internalGetMapStringNestedMessage();
        case 72:
          return internalGetMapStringForeignMessage();
        case 73:
          return internalGetMapStringNestedEnum();
        case 74:
          return internalGetMapStringForeignEnum();
        default:
          throw new RuntimeException("Invalid map field number: " + number);
      }
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return legacy_gencode_test.proto3.Proto3GencodeTestProto
          .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.class,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.Builder.class);
    }

    /** Protobuf enum {@code legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum} */
    public enum NestedEnum implements com.google.protobuf.ProtocolMessageEnum {
      /** <code>FOO = 0;</code> */
      FOO(0),
      /** <code>BAR = 1;</code> */
      BAR(1),
      /** <code>BAZ = 2;</code> */
      BAZ(2),
      /**
       *
       *
       * <pre>
       * Intentionally negative.
       * </pre>
       *
       * <code>NEG = -1;</code>
       */
      NEG(-1),
      UNRECOGNIZED(-1),
      ;

      /** <code>FOO = 0;</code> */
      public static final int FOO_VALUE = 0;

      /** <code>BAR = 1;</code> */
      public static final int BAR_VALUE = 1;

      /** <code>BAZ = 2;</code> */
      public static final int BAZ_VALUE = 2;

      /**
       *
       *
       * <pre>
       * Intentionally negative.
       * </pre>
       *
       * <code>NEG = -1;</code>
       */
      public static final int NEG_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 NestedEnum 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 NestedEnum forNumber(int value) {
        switch (value) {
          case 0:
            return FOO;
          case 1:
            return BAR;
          case 2:
            return BAZ;
          case -1:
            return NEG;
          default:
            return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<NestedEnum> internalGetValueMap() {
        return internalValueMap;
      }

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

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

      public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
        return getDescriptor();
      }

      public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.getDescriptor()
            .getEnumTypes()
            .get(0);
      }

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

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

      // @@protoc_insertion_point(enum_scope:legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum)
    }

    /** Protobuf enum {@code legacy_gencode_test.proto3.TestMostTypesProto3.AliasedEnum} */
    public enum AliasedEnum implements com.google.protobuf.ProtocolMessageEnum {
      /** <code>ALIAS_FOO = 0;</code> */
      ALIAS_FOO(0),
      /** <code>ALIAS_BAR = 1;</code> */
      ALIAS_BAR(1),
      /** <code>ALIAS_BAZ = 2;</code> */
      ALIAS_BAZ(2),
      UNRECOGNIZED(-1),
      ;

      /** <code>MOO = 2;</code> */
      public static final AliasedEnum MOO = ALIAS_BAZ;

      /** <code>moo = 2;</code> */
      public static final AliasedEnum moo = ALIAS_BAZ;

      /** <code>bAz = 2;</code> */
      public static final AliasedEnum bAz = ALIAS_BAZ;

      /** <code>ALIAS_FOO = 0;</code> */
      public static final int ALIAS_FOO_VALUE = 0;

      /** <code>ALIAS_BAR = 1;</code> */
      public static final int ALIAS_BAR_VALUE = 1;

      /** <code>ALIAS_BAZ = 2;</code> */
      public static final int ALIAS_BAZ_VALUE = 2;

      /** <code>MOO = 2;</code> */
      public static final int MOO_VALUE = 2;

      /** <code>moo = 2;</code> */
      public static final int moo_VALUE = 2;

      /** <code>bAz = 2;</code> */
      public static final int bAz_VALUE = 2;

      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 AliasedEnum 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 AliasedEnum forNumber(int value) {
        switch (value) {
          case 0:
            return ALIAS_FOO;
          case 1:
            return ALIAS_BAR;
          case 2:
            return ALIAS_BAZ;
          default:
            return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<AliasedEnum> internalGetValueMap() {
        return internalValueMap;
      }

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

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

      public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
        return getDescriptor();
      }

      public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.getDescriptor()
            .getEnumTypes()
            .get(1);
      }

      private static final AliasedEnum[] VALUES = getStaticValuesArray();

      private static AliasedEnum[] getStaticValuesArray() {
        return new AliasedEnum[] {
          ALIAS_FOO, ALIAS_BAR, ALIAS_BAZ, MOO, moo, bAz,
        };
      }

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

      // @@protoc_insertion_point(enum_scope:legacy_gencode_test.proto3.TestMostTypesProto3.AliasedEnum)
    }

    public interface NestedMessageOrBuilder
        extends
        // @@protoc_insertion_point(interface_extends:legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>int32 a = 1;</code>
       *
       * @return The a.
       */
      int getA();

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code>
       *
       * @return Whether the corecursive field is set.
       */
      boolean hasCorecursive();

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code>
       *
       * @return The corecursive.
       */
      legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 getCorecursive();

      /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code> */
      legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3OrBuilder
          getCorecursiveOrBuilder();
    }

    /** Protobuf type {@code legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage} */
    public static final class NestedMessage extends com.google.protobuf.GeneratedMessageV3
        implements
        // @@protoc_insertion_point(message_implements:legacy_gencode_test.proto3.TestMostTypesProto3.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() {}

      @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;
      }

      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_NestedMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_NestedMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                    .class,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                    .Builder.class);
      }

      public static final int A_FIELD_NUMBER = 1;
      private int a_ = 0;

      /**
       * <code>int32 a = 1;</code>
       *
       * @return The a.
       */
      @java.lang.Override
      public int getA() {
        return a_;
      }

      public static final int CORECURSIVE_FIELD_NUMBER = 2;
      private legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 corecursive_;

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code>
       *
       * @return Whether the corecursive field is set.
       */
      @java.lang.Override
      public boolean hasCorecursive() {
        return corecursive_ != null;
      }

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code>
       *
       * @return The corecursive.
       */
      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
          getCorecursive() {
        return corecursive_ == null
            ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                .getDefaultInstance()
            : corecursive_;
      }

      /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code> */
      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3OrBuilder
          getCorecursiveOrBuilder() {
        return corecursive_ == null
            ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                .getDefaultInstance()
            : corecursive_;
      }

      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 (a_ != 0) {
          output.writeInt32(1, a_);
        }
        if (corecursive_ != null) {
          output.writeMessage(2, getCorecursive());
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (a_ != 0) {
          size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, a_);
        }
        if (corecursive_ != null) {
          size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getCorecursive());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
          return true;
        }
        if (!(obj
            instanceof
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage)) {
          return super.equals(obj);
        }
        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage other =
            (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage)
                obj;

        if (getA() != other.getA()) return false;
        if (hasCorecursive() != other.hasCorecursive()) return false;
        if (hasCorecursive()) {
          if (!getCorecursive().equals(other.getCorecursive())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + A_FIELD_NUMBER;
        hash = (53 * hash) + getA();
        if (hasCorecursive()) {
          hash = (37 * hash) + CORECURSIVE_FIELD_NUMBER;
          hash = (53 * hash) + getCorecursive().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessage
          parseFrom(java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessage
          parseFrom(
              java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessage
          parseFrom(com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessage
          parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessage
          parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessage
          parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessage
          parseFrom(java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .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 legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessage
          parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
      }

      public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .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 legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessage
          parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .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(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.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;
      }

      /** Protobuf type {@code legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage} */
      public static final class Builder
          extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
          implements
          // @@protoc_insertion_point(builder_implements:legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage)
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessageOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return legacy_gencode_test.proto3.Proto3GencodeTestProto
              .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_NestedMessage_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return legacy_gencode_test.proto3.Proto3GencodeTestProto
              .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_NestedMessage_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessage.class,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessage.Builder.class);
        }

        // Construct using
        // legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage.newBuilder()
        private Builder() {}

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

        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          a_ = 0;
          corecursive_ = null;
          if (corecursiveBuilder_ != null) {
            corecursiveBuilder_.dispose();
            corecursiveBuilder_ = null;
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
          return legacy_gencode_test.proto3.Proto3GencodeTestProto
              .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_NestedMessage_descriptor;
        }

        @java.lang.Override
        public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
            getDefaultInstanceForType() {
          return legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              .getDefaultInstance();
        }

        @java.lang.Override
        public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
            build() {
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
            buildPartial() {
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              result =
                  new legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessage(this);
          if (bitField0_ != 0) {
            buildPartial0(result);
          }
          onBuilt();
          return result;
        }

        private void buildPartial0(
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.a_ = a_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.corecursive_ =
                corecursiveBuilder_ == null ? corecursive_ : corecursiveBuilder_.build();
          }
        }

        @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
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage) {
            return mergeFrom(
                (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                        .NestedMessage)
                    other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                other) {
          if (other
              == legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .getDefaultInstance()) return this;
          if (other.getA() != 0) {
            setA(other.getA());
          }
          if (other.hasCorecursive()) {
            mergeCorecursive(other.getCorecursive());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8:
                  {
                    a_ = input.readInt32();
                    bitField0_ |= 0x00000001;
                    break;
                  } // case 8
                case 18:
                  {
                    input.readMessage(getCorecursiveFieldBuilder().getBuilder(), extensionRegistry);
                    bitField0_ |= 0x00000002;
                    break;
                  } // case 18
                default:
                  {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }

        private int bitField0_;

        private int a_;

        /**
         * <code>int32 a = 1;</code>
         *
         * @return The a.
         */
        @java.lang.Override
        public int getA() {
          return a_;
        }

        /**
         * <code>int32 a = 1;</code>
         *
         * @param value The a to set.
         * @return This builder for chaining.
         */
        public Builder setA(int value) {

          a_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        /**
         * <code>int32 a = 1;</code>
         *
         * @return This builder for chaining.
         */
        public Builder clearA() {
          bitField0_ = (bitField0_ & ~0x00000001);
          a_ = 0;
          onChanged();
          return this;
        }

        private legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 corecursive_;
        private com.google.protobuf.SingleFieldBuilderV3<
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.Builder,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3OrBuilder>
            corecursiveBuilder_;

        /**
         * <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code>
         *
         * @return Whether the corecursive field is set.
         */
        public boolean hasCorecursive() {
          return ((bitField0_ & 0x00000002) != 0);
        }

        /**
         * <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code>
         *
         * @return The corecursive.
         */
        public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
            getCorecursive() {
          if (corecursiveBuilder_ == null) {
            return corecursive_ == null
                ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                    .getDefaultInstance()
                : corecursive_;
          } else {
            return corecursiveBuilder_.getMessage();
          }
        }

        /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code> */
        public Builder setCorecursive(
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 value) {
          if (corecursiveBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            corecursive_ = value;
          } else {
            corecursiveBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }

        /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code> */
        public Builder setCorecursive(
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.Builder
                builderForValue) {
          if (corecursiveBuilder_ == null) {
            corecursive_ = builderForValue.build();
          } else {
            corecursiveBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }

        /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code> */
        public Builder mergeCorecursive(
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 value) {
          if (corecursiveBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0)
                && corecursive_ != null
                && corecursive_
                    != legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                        .getDefaultInstance()) {
              getCorecursiveBuilder().mergeFrom(value);
            } else {
              corecursive_ = value;
            }
          } else {
            corecursiveBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }

        /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code> */
        public Builder clearCorecursive() {
          bitField0_ = (bitField0_ & ~0x00000002);
          corecursive_ = null;
          if (corecursiveBuilder_ != null) {
            corecursiveBuilder_.dispose();
            corecursiveBuilder_ = null;
          }
          onChanged();
          return this;
        }

        /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code> */
        public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.Builder
            getCorecursiveBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getCorecursiveFieldBuilder().getBuilder();
        }

        /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code> */
        public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3OrBuilder
            getCorecursiveOrBuilder() {
          if (corecursiveBuilder_ != null) {
            return corecursiveBuilder_.getMessageOrBuilder();
          } else {
            return corecursive_ == null
                ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                    .getDefaultInstance()
                : corecursive_;
          }
        }

        /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 corecursive = 2;</code> */
        private com.google.protobuf.SingleFieldBuilderV3<
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.Builder,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3OrBuilder>
            getCorecursiveFieldBuilder() {
          if (corecursiveBuilder_ == null) {
            corecursiveBuilder_ =
                new com.google.protobuf.SingleFieldBuilderV3<
                    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3,
                    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.Builder,
                    legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3OrBuilder>(
                    getCorecursive(), getParentForChildren(), isClean());
            corecursive_ = null;
          }
          return corecursiveBuilder_;
        }

        @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:legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage)
      }

      // @@protoc_insertion_point(class_scope:legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage)
      private static final legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessage
          DEFAULT_INSTANCE;

      static {
        DEFAULT_INSTANCE =
            new legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                .NestedMessage();
      }

      public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .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 {
              Builder builder = newBuilder();
              try {
                builder.mergeFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(builder.buildPartial());
              } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException()
                    .setUnfinishedMessage(builder.buildPartial());
              } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(e)
                    .setUnfinishedMessage(builder.buildPartial());
              }
              return builder.buildPartial();
            }
          };

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

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

      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
          getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }

    private int oneofFieldCase_ = 0;
    private java.lang.Object oneofField_;

    public enum OneofFieldCase
        implements
            com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      ONEOF_UINT32(111),
      ONEOF_NESTED_MESSAGE(112),
      ONEOF_STRING(113),
      ONEOF_BYTES(114),
      ONEOF_BOOL(115),
      ONEOF_UINT64(116),
      ONEOF_FLOAT(117),
      ONEOF_DOUBLE(118),
      ONEOF_ENUM(119),
      ONEOFFIELD_NOT_SET(0);
      private final int value;

      private OneofFieldCase(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 OneofFieldCase valueOf(int value) {
        return forNumber(value);
      }

      public static OneofFieldCase forNumber(int value) {
        switch (value) {
          case 111:
            return ONEOF_UINT32;
          case 112:
            return ONEOF_NESTED_MESSAGE;
          case 113:
            return ONEOF_STRING;
          case 114:
            return ONEOF_BYTES;
          case 115:
            return ONEOF_BOOL;
          case 116:
            return ONEOF_UINT64;
          case 117:
            return ONEOF_FLOAT;
          case 118:
            return ONEOF_DOUBLE;
          case 119:
            return ONEOF_ENUM;
          case 0:
            return ONEOFFIELD_NOT_SET;
          default:
            return null;
        }
      }

      public int getNumber() {
        return this.value;
      }
    };

    public OneofFieldCase getOneofFieldCase() {
      return OneofFieldCase.forNumber(oneofFieldCase_);
    }

    public static final int OPTIONAL_INT32_FIELD_NUMBER = 1;
    private int optionalInt32_ = 0;

    /**
     * <code>int32 optional_int32 = 1;</code>
     *
     * @return The optionalInt32.
     */
    @java.lang.Override
    public int getOptionalInt32() {
      return optionalInt32_;
    }

    public static final int OPTIONAL_INT64_FIELD_NUMBER = 2;
    private long optionalInt64_ = 0L;

    /**
     * <code>int64 optional_int64 = 2;</code>
     *
     * @return The optionalInt64.
     */
    @java.lang.Override
    public long getOptionalInt64() {
      return optionalInt64_;
    }

    public static final int OPTIONAL_UINT32_FIELD_NUMBER = 3;
    private int optionalUint32_ = 0;

    /**
     * <code>uint32 optional_uint32 = 3;</code>
     *
     * @return The optionalUint32.
     */
    @java.lang.Override
    public int getOptionalUint32() {
      return optionalUint32_;
    }

    public static final int OPTIONAL_UINT64_FIELD_NUMBER = 4;
    private long optionalUint64_ = 0L;

    /**
     * <code>uint64 optional_uint64 = 4;</code>
     *
     * @return The optionalUint64.
     */
    @java.lang.Override
    public long getOptionalUint64() {
      return optionalUint64_;
    }

    public static final int OPTIONAL_SINT32_FIELD_NUMBER = 5;
    private int optionalSint32_ = 0;

    /**
     * <code>sint32 optional_sint32 = 5;</code>
     *
     * @return The optionalSint32.
     */
    @java.lang.Override
    public int getOptionalSint32() {
      return optionalSint32_;
    }

    public static final int OPTIONAL_SINT64_FIELD_NUMBER = 6;
    private long optionalSint64_ = 0L;

    /**
     * <code>sint64 optional_sint64 = 6;</code>
     *
     * @return The optionalSint64.
     */
    @java.lang.Override
    public long getOptionalSint64() {
      return optionalSint64_;
    }

    public static final int OPTIONAL_FIXED32_FIELD_NUMBER = 7;
    private int optionalFixed32_ = 0;

    /**
     * <code>fixed32 optional_fixed32 = 7;</code>
     *
     * @return The optionalFixed32.
     */
    @java.lang.Override
    public int getOptionalFixed32() {
      return optionalFixed32_;
    }

    public static final int OPTIONAL_FIXED64_FIELD_NUMBER = 8;
    private long optionalFixed64_ = 0L;

    /**
     * <code>fixed64 optional_fixed64 = 8;</code>
     *
     * @return The optionalFixed64.
     */
    @java.lang.Override
    public long getOptionalFixed64() {
      return optionalFixed64_;
    }

    public static final int OPTIONAL_SFIXED32_FIELD_NUMBER = 9;
    private int optionalSfixed32_ = 0;

    /**
     * <code>sfixed32 optional_sfixed32 = 9;</code>
     *
     * @return The optionalSfixed32.
     */
    @java.lang.Override
    public int getOptionalSfixed32() {
      return optionalSfixed32_;
    }

    public static final int OPTIONAL_SFIXED64_FIELD_NUMBER = 10;
    private long optionalSfixed64_ = 0L;

    /**
     * <code>sfixed64 optional_sfixed64 = 10;</code>
     *
     * @return The optionalSfixed64.
     */
    @java.lang.Override
    public long getOptionalSfixed64() {
      return optionalSfixed64_;
    }

    public static final int OPTIONAL_FLOAT_FIELD_NUMBER = 11;
    private float optionalFloat_ = 0F;

    /**
     * <code>float optional_float = 11;</code>
     *
     * @return The optionalFloat.
     */
    @java.lang.Override
    public float getOptionalFloat() {
      return optionalFloat_;
    }

    public static final int OPTIONAL_DOUBLE_FIELD_NUMBER = 12;
    private double optionalDouble_ = 0D;

    /**
     * <code>double optional_double = 12;</code>
     *
     * @return The optionalDouble.
     */
    @java.lang.Override
    public double getOptionalDouble() {
      return optionalDouble_;
    }

    public static final int OPTIONAL_BOOL_FIELD_NUMBER = 13;
    private boolean optionalBool_ = false;

    /**
     * <code>bool optional_bool = 13;</code>
     *
     * @return The optionalBool.
     */
    @java.lang.Override
    public boolean getOptionalBool() {
      return optionalBool_;
    }

    public static final int OPTIONAL_STRING_FIELD_NUMBER = 14;

    @SuppressWarnings("serial")
    private volatile java.lang.Object optionalString_ = "";

    /**
     * <code>string optional_string = 14;</code>
     *
     * @return The optionalString.
     */
    @java.lang.Override
    public java.lang.String getOptionalString() {
      java.lang.Object ref = optionalString_;
      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();
        optionalString_ = s;
        return s;
      }
    }

    /**
     * <code>string optional_string = 14;</code>
     *
     * @return The bytes for optionalString.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getOptionalStringBytes() {
      java.lang.Object ref = optionalString_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        optionalString_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPTIONAL_BYTES_FIELD_NUMBER = 15;
    private com.google.protobuf.ByteString optionalBytes_ = com.google.protobuf.ByteString.EMPTY;

    /**
     * <code>bytes optional_bytes = 15;</code>
     *
     * @return The optionalBytes.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getOptionalBytes() {
      return optionalBytes_;
    }

    public static final int OPTIONAL_NESTED_MESSAGE_FIELD_NUMBER = 18;
    private legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
        optionalNestedMessage_;

    /**
     * <code>
     * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
     * </code>
     *
     * @return Whether the optionalNestedMessage field is set.
     */
    @java.lang.Override
    public boolean hasOptionalNestedMessage() {
      return optionalNestedMessage_ != null;
    }

    /**
     * <code>
     * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
     * </code>
     *
     * @return The optionalNestedMessage.
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
        getOptionalNestedMessage() {
      return optionalNestedMessage_ == null
          ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              .getDefaultInstance()
          : optionalNestedMessage_;
    }

    /**
     * <code>
     * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
     * </code>
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
            .NestedMessageOrBuilder
        getOptionalNestedMessageOrBuilder() {
      return optionalNestedMessage_ == null
          ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              .getDefaultInstance()
          : optionalNestedMessage_;
    }

    public static final int OPTIONAL_FOREIGN_MESSAGE_FIELD_NUMBER = 19;
    private legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
        optionalForeignMessage_;

    /**
     * <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code>
     *
     * @return Whether the optionalForeignMessage field is set.
     */
    @java.lang.Override
    public boolean hasOptionalForeignMessage() {
      return optionalForeignMessage_ != null;
    }

    /**
     * <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code>
     *
     * @return The optionalForeignMessage.
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
        getOptionalForeignMessage() {
      return optionalForeignMessage_ == null
          ? legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.getDefaultInstance()
          : optionalForeignMessage_;
    }

    /** <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code> */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder
        getOptionalForeignMessageOrBuilder() {
      return optionalForeignMessage_ == null
          ? legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.getDefaultInstance()
          : optionalForeignMessage_;
    }

    public static final int OPTIONAL_NESTED_ENUM_FIELD_NUMBER = 21;
    private int optionalNestedEnum_ = 0;

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum optional_nested_enum = 21;
     * </code>
     *
     * @return The enum numeric value on the wire for optionalNestedEnum.
     */
    @java.lang.Override
    public int getOptionalNestedEnumValue() {
      return optionalNestedEnum_;
    }

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum optional_nested_enum = 21;
     * </code>
     *
     * @return The optionalNestedEnum.
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
        getOptionalNestedEnum() {
      legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum result =
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
              .forNumber(optionalNestedEnum_);
      return result == null
          ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
              .UNRECOGNIZED
          : result;
    }

    public static final int OPTIONAL_FOREIGN_ENUM_FIELD_NUMBER = 22;
    private int optionalForeignEnum_ = 0;

    /**
     * <code>.legacy_gencode_test.proto3.ForeignEnum optional_foreign_enum = 22;</code>
     *
     * @return The enum numeric value on the wire for optionalForeignEnum.
     */
    @java.lang.Override
    public int getOptionalForeignEnumValue() {
      return optionalForeignEnum_;
    }

    /**
     * <code>.legacy_gencode_test.proto3.ForeignEnum optional_foreign_enum = 22;</code>
     *
     * @return The optionalForeignEnum.
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum getOptionalForeignEnum() {
      legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum result =
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum.forNumber(
              optionalForeignEnum_);
      return result == null
          ? legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum.UNRECOGNIZED
          : result;
    }

    public static final int OPTIONAL_ALIASED_ENUM_FIELD_NUMBER = 23;
    private int optionalAliasedEnum_ = 0;

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.AliasedEnum optional_aliased_enum = 23;
     * </code>
     *
     * @return The enum numeric value on the wire for optionalAliasedEnum.
     */
    @java.lang.Override
    public int getOptionalAliasedEnumValue() {
      return optionalAliasedEnum_;
    }

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.AliasedEnum optional_aliased_enum = 23;
     * </code>
     *
     * @return The optionalAliasedEnum.
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.AliasedEnum
        getOptionalAliasedEnum() {
      legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.AliasedEnum result =
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.AliasedEnum
              .forNumber(optionalAliasedEnum_);
      return result == null
          ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.AliasedEnum
              .UNRECOGNIZED
          : result;
    }

    public static final int RECURSIVE_MESSAGE_FIELD_NUMBER = 27;
    private legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 recursiveMessage_;

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code>
     *
     * @return Whether the recursiveMessage field is set.
     */
    @java.lang.Override
    public boolean hasRecursiveMessage() {
      return recursiveMessage_ != null;
    }

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code>
     *
     * @return The recursiveMessage.
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
        getRecursiveMessage() {
      return recursiveMessage_ == null
          ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .getDefaultInstance()
          : recursiveMessage_;
    }

    /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code> */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3OrBuilder
        getRecursiveMessageOrBuilder() {
      return recursiveMessage_ == null
          ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .getDefaultInstance()
          : recursiveMessage_;
    }

    public static final int REPEATED_INT32_FIELD_NUMBER = 31;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList repeatedInt32_;

    /**
     *
     *
     * <pre>
     * Repeated
     * </pre>
     *
     * <code>repeated int32 repeated_int32 = 31;</code>
     *
     * @return A list containing the repeatedInt32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getRepeatedInt32List() {
      return repeatedInt32_;
    }

    /**
     *
     *
     * <pre>
     * Repeated
     * </pre>
     *
     * <code>repeated int32 repeated_int32 = 31;</code>
     *
     * @return The count of repeatedInt32.
     */
    public int getRepeatedInt32Count() {
      return repeatedInt32_.size();
    }

    /**
     *
     *
     * <pre>
     * Repeated
     * </pre>
     *
     * <code>repeated int32 repeated_int32 = 31;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedInt32 at the given index.
     */
    public int getRepeatedInt32(int index) {
      return repeatedInt32_.getInt(index);
    }

    private int repeatedInt32MemoizedSerializedSize = -1;

    public static final int REPEATED_INT64_FIELD_NUMBER = 32;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList repeatedInt64_;

    /**
     * <code>repeated int64 repeated_int64 = 32;</code>
     *
     * @return A list containing the repeatedInt64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getRepeatedInt64List() {
      return repeatedInt64_;
    }

    /**
     * <code>repeated int64 repeated_int64 = 32;</code>
     *
     * @return The count of repeatedInt64.
     */
    public int getRepeatedInt64Count() {
      return repeatedInt64_.size();
    }

    /**
     * <code>repeated int64 repeated_int64 = 32;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedInt64 at the given index.
     */
    public long getRepeatedInt64(int index) {
      return repeatedInt64_.getLong(index);
    }

    private int repeatedInt64MemoizedSerializedSize = -1;

    public static final int REPEATED_UINT32_FIELD_NUMBER = 33;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList repeatedUint32_;

    /**
     * <code>repeated uint32 repeated_uint32 = 33;</code>
     *
     * @return A list containing the repeatedUint32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getRepeatedUint32List() {
      return repeatedUint32_;
    }

    /**
     * <code>repeated uint32 repeated_uint32 = 33;</code>
     *
     * @return The count of repeatedUint32.
     */
    public int getRepeatedUint32Count() {
      return repeatedUint32_.size();
    }

    /**
     * <code>repeated uint32 repeated_uint32 = 33;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedUint32 at the given index.
     */
    public int getRepeatedUint32(int index) {
      return repeatedUint32_.getInt(index);
    }

    private int repeatedUint32MemoizedSerializedSize = -1;

    public static final int REPEATED_UINT64_FIELD_NUMBER = 34;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList repeatedUint64_;

    /**
     * <code>repeated uint64 repeated_uint64 = 34;</code>
     *
     * @return A list containing the repeatedUint64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getRepeatedUint64List() {
      return repeatedUint64_;
    }

    /**
     * <code>repeated uint64 repeated_uint64 = 34;</code>
     *
     * @return The count of repeatedUint64.
     */
    public int getRepeatedUint64Count() {
      return repeatedUint64_.size();
    }

    /**
     * <code>repeated uint64 repeated_uint64 = 34;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedUint64 at the given index.
     */
    public long getRepeatedUint64(int index) {
      return repeatedUint64_.getLong(index);
    }

    private int repeatedUint64MemoizedSerializedSize = -1;

    public static final int REPEATED_SINT32_FIELD_NUMBER = 35;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList repeatedSint32_;

    /**
     * <code>repeated sint32 repeated_sint32 = 35;</code>
     *
     * @return A list containing the repeatedSint32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getRepeatedSint32List() {
      return repeatedSint32_;
    }

    /**
     * <code>repeated sint32 repeated_sint32 = 35;</code>
     *
     * @return The count of repeatedSint32.
     */
    public int getRepeatedSint32Count() {
      return repeatedSint32_.size();
    }

    /**
     * <code>repeated sint32 repeated_sint32 = 35;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedSint32 at the given index.
     */
    public int getRepeatedSint32(int index) {
      return repeatedSint32_.getInt(index);
    }

    private int repeatedSint32MemoizedSerializedSize = -1;

    public static final int REPEATED_SINT64_FIELD_NUMBER = 36;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList repeatedSint64_;

    /**
     * <code>repeated sint64 repeated_sint64 = 36;</code>
     *
     * @return A list containing the repeatedSint64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getRepeatedSint64List() {
      return repeatedSint64_;
    }

    /**
     * <code>repeated sint64 repeated_sint64 = 36;</code>
     *
     * @return The count of repeatedSint64.
     */
    public int getRepeatedSint64Count() {
      return repeatedSint64_.size();
    }

    /**
     * <code>repeated sint64 repeated_sint64 = 36;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedSint64 at the given index.
     */
    public long getRepeatedSint64(int index) {
      return repeatedSint64_.getLong(index);
    }

    private int repeatedSint64MemoizedSerializedSize = -1;

    public static final int REPEATED_FIXED32_FIELD_NUMBER = 37;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList repeatedFixed32_;

    /**
     * <code>repeated fixed32 repeated_fixed32 = 37;</code>
     *
     * @return A list containing the repeatedFixed32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getRepeatedFixed32List() {
      return repeatedFixed32_;
    }

    /**
     * <code>repeated fixed32 repeated_fixed32 = 37;</code>
     *
     * @return The count of repeatedFixed32.
     */
    public int getRepeatedFixed32Count() {
      return repeatedFixed32_.size();
    }

    /**
     * <code>repeated fixed32 repeated_fixed32 = 37;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedFixed32 at the given index.
     */
    public int getRepeatedFixed32(int index) {
      return repeatedFixed32_.getInt(index);
    }

    private int repeatedFixed32MemoizedSerializedSize = -1;

    public static final int REPEATED_FIXED64_FIELD_NUMBER = 38;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList repeatedFixed64_;

    /**
     * <code>repeated fixed64 repeated_fixed64 = 38;</code>
     *
     * @return A list containing the repeatedFixed64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getRepeatedFixed64List() {
      return repeatedFixed64_;
    }

    /**
     * <code>repeated fixed64 repeated_fixed64 = 38;</code>
     *
     * @return The count of repeatedFixed64.
     */
    public int getRepeatedFixed64Count() {
      return repeatedFixed64_.size();
    }

    /**
     * <code>repeated fixed64 repeated_fixed64 = 38;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedFixed64 at the given index.
     */
    public long getRepeatedFixed64(int index) {
      return repeatedFixed64_.getLong(index);
    }

    private int repeatedFixed64MemoizedSerializedSize = -1;

    public static final int REPEATED_SFIXED32_FIELD_NUMBER = 39;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList repeatedSfixed32_;

    /**
     * <code>repeated sfixed32 repeated_sfixed32 = 39;</code>
     *
     * @return A list containing the repeatedSfixed32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getRepeatedSfixed32List() {
      return repeatedSfixed32_;
    }

    /**
     * <code>repeated sfixed32 repeated_sfixed32 = 39;</code>
     *
     * @return The count of repeatedSfixed32.
     */
    public int getRepeatedSfixed32Count() {
      return repeatedSfixed32_.size();
    }

    /**
     * <code>repeated sfixed32 repeated_sfixed32 = 39;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedSfixed32 at the given index.
     */
    public int getRepeatedSfixed32(int index) {
      return repeatedSfixed32_.getInt(index);
    }

    private int repeatedSfixed32MemoizedSerializedSize = -1;

    public static final int REPEATED_SFIXED64_FIELD_NUMBER = 40;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList repeatedSfixed64_;

    /**
     * <code>repeated sfixed64 repeated_sfixed64 = 40;</code>
     *
     * @return A list containing the repeatedSfixed64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getRepeatedSfixed64List() {
      return repeatedSfixed64_;
    }

    /**
     * <code>repeated sfixed64 repeated_sfixed64 = 40;</code>
     *
     * @return The count of repeatedSfixed64.
     */
    public int getRepeatedSfixed64Count() {
      return repeatedSfixed64_.size();
    }

    /**
     * <code>repeated sfixed64 repeated_sfixed64 = 40;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedSfixed64 at the given index.
     */
    public long getRepeatedSfixed64(int index) {
      return repeatedSfixed64_.getLong(index);
    }

    private int repeatedSfixed64MemoizedSerializedSize = -1;

    public static final int REPEATED_FLOAT_FIELD_NUMBER = 41;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.FloatList repeatedFloat_;

    /**
     * <code>repeated float repeated_float = 41;</code>
     *
     * @return A list containing the repeatedFloat.
     */
    @java.lang.Override
    public java.util.List<java.lang.Float> getRepeatedFloatList() {
      return repeatedFloat_;
    }

    /**
     * <code>repeated float repeated_float = 41;</code>
     *
     * @return The count of repeatedFloat.
     */
    public int getRepeatedFloatCount() {
      return repeatedFloat_.size();
    }

    /**
     * <code>repeated float repeated_float = 41;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedFloat at the given index.
     */
    public float getRepeatedFloat(int index) {
      return repeatedFloat_.getFloat(index);
    }

    private int repeatedFloatMemoizedSerializedSize = -1;

    public static final int REPEATED_DOUBLE_FIELD_NUMBER = 42;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.DoubleList repeatedDouble_;

    /**
     * <code>repeated double repeated_double = 42;</code>
     *
     * @return A list containing the repeatedDouble.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double> getRepeatedDoubleList() {
      return repeatedDouble_;
    }

    /**
     * <code>repeated double repeated_double = 42;</code>
     *
     * @return The count of repeatedDouble.
     */
    public int getRepeatedDoubleCount() {
      return repeatedDouble_.size();
    }

    /**
     * <code>repeated double repeated_double = 42;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedDouble at the given index.
     */
    public double getRepeatedDouble(int index) {
      return repeatedDouble_.getDouble(index);
    }

    private int repeatedDoubleMemoizedSerializedSize = -1;

    public static final int REPEATED_BOOL_FIELD_NUMBER = 43;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.BooleanList repeatedBool_;

    /**
     * <code>repeated bool repeated_bool = 43;</code>
     *
     * @return A list containing the repeatedBool.
     */
    @java.lang.Override
    public java.util.List<java.lang.Boolean> getRepeatedBoolList() {
      return repeatedBool_;
    }

    /**
     * <code>repeated bool repeated_bool = 43;</code>
     *
     * @return The count of repeatedBool.
     */
    public int getRepeatedBoolCount() {
      return repeatedBool_.size();
    }

    /**
     * <code>repeated bool repeated_bool = 43;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedBool at the given index.
     */
    public boolean getRepeatedBool(int index) {
      return repeatedBool_.getBoolean(index);
    }

    private int repeatedBoolMemoizedSerializedSize = -1;

    public static final int REPEATED_STRING_FIELD_NUMBER = 44;

    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList repeatedString_;

    /**
     * <code>repeated string repeated_string = 44;</code>
     *
     * @return A list containing the repeatedString.
     */
    public com.google.protobuf.ProtocolStringList getRepeatedStringList() {
      return repeatedString_;
    }

    /**
     * <code>repeated string repeated_string = 44;</code>
     *
     * @return The count of repeatedString.
     */
    public int getRepeatedStringCount() {
      return repeatedString_.size();
    }

    /**
     * <code>repeated string repeated_string = 44;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedString at the given index.
     */
    public java.lang.String getRepeatedString(int index) {
      return repeatedString_.get(index);
    }

    /**
     * <code>repeated string repeated_string = 44;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the repeatedString at the given index.
     */
    public com.google.protobuf.ByteString getRepeatedStringBytes(int index) {
      return repeatedString_.getByteString(index);
    }

    public static final int REPEATED_BYTES_FIELD_NUMBER = 45;

    @SuppressWarnings("serial")
    private java.util.List<com.google.protobuf.ByteString> repeatedBytes_;

    /**
     * <code>repeated bytes repeated_bytes = 45;</code>
     *
     * @return A list containing the repeatedBytes.
     */
    @java.lang.Override
    public java.util.List<com.google.protobuf.ByteString> getRepeatedBytesList() {
      return repeatedBytes_;
    }

    /**
     * <code>repeated bytes repeated_bytes = 45;</code>
     *
     * @return The count of repeatedBytes.
     */
    public int getRepeatedBytesCount() {
      return repeatedBytes_.size();
    }

    /**
     * <code>repeated bytes repeated_bytes = 45;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedBytes at the given index.
     */
    public com.google.protobuf.ByteString getRepeatedBytes(int index) {
      return repeatedBytes_.get(index);
    }

    public static final int REPEATED_NESTED_MESSAGE_FIELD_NUMBER = 48;

    @SuppressWarnings("serial")
    private java.util.List<
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
        repeatedNestedMessage_;

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
     * </code>
     */
    @java.lang.Override
    public java.util.List<
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
        getRepeatedNestedMessageList() {
      return repeatedNestedMessage_;
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
     * </code>
     */
    @java.lang.Override
    public java.util.List<
            ? extends
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                    .NestedMessageOrBuilder>
        getRepeatedNestedMessageOrBuilderList() {
      return repeatedNestedMessage_;
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
     * </code>
     */
    @java.lang.Override
    public int getRepeatedNestedMessageCount() {
      return repeatedNestedMessage_.size();
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
     * </code>
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
        getRepeatedNestedMessage(int index) {
      return repeatedNestedMessage_.get(index);
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
     * </code>
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
            .NestedMessageOrBuilder
        getRepeatedNestedMessageOrBuilder(int index) {
      return repeatedNestedMessage_.get(index);
    }

    public static final int REPEATED_FOREIGN_MESSAGE_FIELD_NUMBER = 49;

    @SuppressWarnings("serial")
    private java.util.List<legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
        repeatedForeignMessage_;

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
     * </code>
     */
    @java.lang.Override
    public java.util.List<legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
        getRepeatedForeignMessageList() {
      return repeatedForeignMessage_;
    }

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
     * </code>
     */
    @java.lang.Override
    public java.util.List<
            ? extends legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder>
        getRepeatedForeignMessageOrBuilderList() {
      return repeatedForeignMessage_;
    }

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
     * </code>
     */
    @java.lang.Override
    public int getRepeatedForeignMessageCount() {
      return repeatedForeignMessage_.size();
    }

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
     * </code>
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
        getRepeatedForeignMessage(int index) {
      return repeatedForeignMessage_.get(index);
    }

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
     * </code>
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder
        getRepeatedForeignMessageOrBuilder(int index) {
      return repeatedForeignMessage_.get(index);
    }

    public static final int REPEATED_NESTED_ENUM_FIELD_NUMBER = 51;

    @SuppressWarnings("serial")
    private java.util.List<java.lang.Integer> repeatedNestedEnum_;

    private static final com.google.protobuf.Internal.ListAdapter.Converter<
            java.lang.Integer,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        repeatedNestedEnum_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                    .NestedEnum>() {
              public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedEnum
                  convert(java.lang.Integer from) {
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                    result =
                        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                            .NestedEnum.forNumber(from);
                return result == null
                    ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                        .NestedEnum.UNRECOGNIZED
                    : result;
              }
            };

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
     * </code>
     *
     * @return A list containing the repeatedNestedEnum.
     */
    @java.lang.Override
    public java.util.List<
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        getRepeatedNestedEnumList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>(
          repeatedNestedEnum_, repeatedNestedEnum_converter_);
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
     * </code>
     *
     * @return The count of repeatedNestedEnum.
     */
    @java.lang.Override
    public int getRepeatedNestedEnumCount() {
      return repeatedNestedEnum_.size();
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
     * </code>
     *
     * @param index The index of the element to return.
     * @return The repeatedNestedEnum at the given index.
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
        getRepeatedNestedEnum(int index) {
      return repeatedNestedEnum_converter_.convert(repeatedNestedEnum_.get(index));
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
     * </code>
     *
     * @return A list containing the enum numeric values on the wire for repeatedNestedEnum.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getRepeatedNestedEnumValueList() {
      return repeatedNestedEnum_;
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
     * </code>
     *
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of repeatedNestedEnum at the given index.
     */
    @java.lang.Override
    public int getRepeatedNestedEnumValue(int index) {
      return repeatedNestedEnum_.get(index);
    }

    private int repeatedNestedEnumMemoizedSerializedSize;

    public static final int REPEATED_FOREIGN_ENUM_FIELD_NUMBER = 52;

    @SuppressWarnings("serial")
    private java.util.List<java.lang.Integer> repeatedForeignEnum_;

    private static final com.google.protobuf.Internal.ListAdapter.Converter<
            java.lang.Integer, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
        repeatedForeignEnum_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>() {
              public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum convert(
                  java.lang.Integer from) {
                legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum result =
                    legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum.forNumber(from);
                return result == null
                    ? legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum.UNRECOGNIZED
                    : result;
              }
            };

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
     *
     * @return A list containing the repeatedForeignEnum.
     */
    @java.lang.Override
    public java.util.List<legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
        getRepeatedForeignEnumList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>(
          repeatedForeignEnum_, repeatedForeignEnum_converter_);
    }

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
     *
     * @return The count of repeatedForeignEnum.
     */
    @java.lang.Override
    public int getRepeatedForeignEnumCount() {
      return repeatedForeignEnum_.size();
    }

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
     *
     * @param index The index of the element to return.
     * @return The repeatedForeignEnum at the given index.
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum getRepeatedForeignEnum(
        int index) {
      return repeatedForeignEnum_converter_.convert(repeatedForeignEnum_.get(index));
    }

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
     *
     * @return A list containing the enum numeric values on the wire for repeatedForeignEnum.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getRepeatedForeignEnumValueList() {
      return repeatedForeignEnum_;
    }

    /**
     * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
     *
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of repeatedForeignEnum at the given index.
     */
    @java.lang.Override
    public int getRepeatedForeignEnumValue(int index) {
      return repeatedForeignEnum_.get(index);
    }

    private int repeatedForeignEnumMemoizedSerializedSize;

    public static final int PACKED_INT32_FIELD_NUMBER = 75;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList packedInt32_;

    /**
     *
     *
     * <pre>
     * Packed
     * </pre>
     *
     * <code>repeated int32 packed_int32 = 75 [packed = true];</code>
     *
     * @return A list containing the packedInt32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getPackedInt32List() {
      return packedInt32_;
    }

    /**
     *
     *
     * <pre>
     * Packed
     * </pre>
     *
     * <code>repeated int32 packed_int32 = 75 [packed = true];</code>
     *
     * @return The count of packedInt32.
     */
    public int getPackedInt32Count() {
      return packedInt32_.size();
    }

    /**
     *
     *
     * <pre>
     * Packed
     * </pre>
     *
     * <code>repeated int32 packed_int32 = 75 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedInt32 at the given index.
     */
    public int getPackedInt32(int index) {
      return packedInt32_.getInt(index);
    }

    private int packedInt32MemoizedSerializedSize = -1;

    public static final int PACKED_INT64_FIELD_NUMBER = 76;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList packedInt64_;

    /**
     * <code>repeated int64 packed_int64 = 76 [packed = true];</code>
     *
     * @return A list containing the packedInt64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getPackedInt64List() {
      return packedInt64_;
    }

    /**
     * <code>repeated int64 packed_int64 = 76 [packed = true];</code>
     *
     * @return The count of packedInt64.
     */
    public int getPackedInt64Count() {
      return packedInt64_.size();
    }

    /**
     * <code>repeated int64 packed_int64 = 76 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedInt64 at the given index.
     */
    public long getPackedInt64(int index) {
      return packedInt64_.getLong(index);
    }

    private int packedInt64MemoizedSerializedSize = -1;

    public static final int PACKED_UINT32_FIELD_NUMBER = 77;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList packedUint32_;

    /**
     * <code>repeated uint32 packed_uint32 = 77 [packed = true];</code>
     *
     * @return A list containing the packedUint32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getPackedUint32List() {
      return packedUint32_;
    }

    /**
     * <code>repeated uint32 packed_uint32 = 77 [packed = true];</code>
     *
     * @return The count of packedUint32.
     */
    public int getPackedUint32Count() {
      return packedUint32_.size();
    }

    /**
     * <code>repeated uint32 packed_uint32 = 77 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedUint32 at the given index.
     */
    public int getPackedUint32(int index) {
      return packedUint32_.getInt(index);
    }

    private int packedUint32MemoizedSerializedSize = -1;

    public static final int PACKED_UINT64_FIELD_NUMBER = 78;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList packedUint64_;

    /**
     * <code>repeated uint64 packed_uint64 = 78 [packed = true];</code>
     *
     * @return A list containing the packedUint64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getPackedUint64List() {
      return packedUint64_;
    }

    /**
     * <code>repeated uint64 packed_uint64 = 78 [packed = true];</code>
     *
     * @return The count of packedUint64.
     */
    public int getPackedUint64Count() {
      return packedUint64_.size();
    }

    /**
     * <code>repeated uint64 packed_uint64 = 78 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedUint64 at the given index.
     */
    public long getPackedUint64(int index) {
      return packedUint64_.getLong(index);
    }

    private int packedUint64MemoizedSerializedSize = -1;

    public static final int PACKED_SINT32_FIELD_NUMBER = 79;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList packedSint32_;

    /**
     * <code>repeated sint32 packed_sint32 = 79 [packed = true];</code>
     *
     * @return A list containing the packedSint32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getPackedSint32List() {
      return packedSint32_;
    }

    /**
     * <code>repeated sint32 packed_sint32 = 79 [packed = true];</code>
     *
     * @return The count of packedSint32.
     */
    public int getPackedSint32Count() {
      return packedSint32_.size();
    }

    /**
     * <code>repeated sint32 packed_sint32 = 79 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedSint32 at the given index.
     */
    public int getPackedSint32(int index) {
      return packedSint32_.getInt(index);
    }

    private int packedSint32MemoizedSerializedSize = -1;

    public static final int PACKED_SINT64_FIELD_NUMBER = 80;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList packedSint64_;

    /**
     * <code>repeated sint64 packed_sint64 = 80 [packed = true];</code>
     *
     * @return A list containing the packedSint64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getPackedSint64List() {
      return packedSint64_;
    }

    /**
     * <code>repeated sint64 packed_sint64 = 80 [packed = true];</code>
     *
     * @return The count of packedSint64.
     */
    public int getPackedSint64Count() {
      return packedSint64_.size();
    }

    /**
     * <code>repeated sint64 packed_sint64 = 80 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedSint64 at the given index.
     */
    public long getPackedSint64(int index) {
      return packedSint64_.getLong(index);
    }

    private int packedSint64MemoizedSerializedSize = -1;

    public static final int PACKED_FIXED32_FIELD_NUMBER = 81;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList packedFixed32_;

    /**
     * <code>repeated fixed32 packed_fixed32 = 81 [packed = true];</code>
     *
     * @return A list containing the packedFixed32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getPackedFixed32List() {
      return packedFixed32_;
    }

    /**
     * <code>repeated fixed32 packed_fixed32 = 81 [packed = true];</code>
     *
     * @return The count of packedFixed32.
     */
    public int getPackedFixed32Count() {
      return packedFixed32_.size();
    }

    /**
     * <code>repeated fixed32 packed_fixed32 = 81 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedFixed32 at the given index.
     */
    public int getPackedFixed32(int index) {
      return packedFixed32_.getInt(index);
    }

    private int packedFixed32MemoizedSerializedSize = -1;

    public static final int PACKED_FIXED64_FIELD_NUMBER = 82;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList packedFixed64_;

    /**
     * <code>repeated fixed64 packed_fixed64 = 82 [packed = true];</code>
     *
     * @return A list containing the packedFixed64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getPackedFixed64List() {
      return packedFixed64_;
    }

    /**
     * <code>repeated fixed64 packed_fixed64 = 82 [packed = true];</code>
     *
     * @return The count of packedFixed64.
     */
    public int getPackedFixed64Count() {
      return packedFixed64_.size();
    }

    /**
     * <code>repeated fixed64 packed_fixed64 = 82 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedFixed64 at the given index.
     */
    public long getPackedFixed64(int index) {
      return packedFixed64_.getLong(index);
    }

    private int packedFixed64MemoizedSerializedSize = -1;

    public static final int PACKED_SFIXED32_FIELD_NUMBER = 83;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList packedSfixed32_;

    /**
     * <code>repeated sfixed32 packed_sfixed32 = 83 [packed = true];</code>
     *
     * @return A list containing the packedSfixed32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getPackedSfixed32List() {
      return packedSfixed32_;
    }

    /**
     * <code>repeated sfixed32 packed_sfixed32 = 83 [packed = true];</code>
     *
     * @return The count of packedSfixed32.
     */
    public int getPackedSfixed32Count() {
      return packedSfixed32_.size();
    }

    /**
     * <code>repeated sfixed32 packed_sfixed32 = 83 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedSfixed32 at the given index.
     */
    public int getPackedSfixed32(int index) {
      return packedSfixed32_.getInt(index);
    }

    private int packedSfixed32MemoizedSerializedSize = -1;

    public static final int PACKED_SFIXED64_FIELD_NUMBER = 84;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList packedSfixed64_;

    /**
     * <code>repeated sfixed64 packed_sfixed64 = 84 [packed = true];</code>
     *
     * @return A list containing the packedSfixed64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getPackedSfixed64List() {
      return packedSfixed64_;
    }

    /**
     * <code>repeated sfixed64 packed_sfixed64 = 84 [packed = true];</code>
     *
     * @return The count of packedSfixed64.
     */
    public int getPackedSfixed64Count() {
      return packedSfixed64_.size();
    }

    /**
     * <code>repeated sfixed64 packed_sfixed64 = 84 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedSfixed64 at the given index.
     */
    public long getPackedSfixed64(int index) {
      return packedSfixed64_.getLong(index);
    }

    private int packedSfixed64MemoizedSerializedSize = -1;

    public static final int PACKED_FLOAT_FIELD_NUMBER = 85;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.FloatList packedFloat_;

    /**
     * <code>repeated float packed_float = 85 [packed = true];</code>
     *
     * @return A list containing the packedFloat.
     */
    @java.lang.Override
    public java.util.List<java.lang.Float> getPackedFloatList() {
      return packedFloat_;
    }

    /**
     * <code>repeated float packed_float = 85 [packed = true];</code>
     *
     * @return The count of packedFloat.
     */
    public int getPackedFloatCount() {
      return packedFloat_.size();
    }

    /**
     * <code>repeated float packed_float = 85 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedFloat at the given index.
     */
    public float getPackedFloat(int index) {
      return packedFloat_.getFloat(index);
    }

    private int packedFloatMemoizedSerializedSize = -1;

    public static final int PACKED_DOUBLE_FIELD_NUMBER = 86;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.DoubleList packedDouble_;

    /**
     * <code>repeated double packed_double = 86 [packed = true];</code>
     *
     * @return A list containing the packedDouble.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double> getPackedDoubleList() {
      return packedDouble_;
    }

    /**
     * <code>repeated double packed_double = 86 [packed = true];</code>
     *
     * @return The count of packedDouble.
     */
    public int getPackedDoubleCount() {
      return packedDouble_.size();
    }

    /**
     * <code>repeated double packed_double = 86 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedDouble at the given index.
     */
    public double getPackedDouble(int index) {
      return packedDouble_.getDouble(index);
    }

    private int packedDoubleMemoizedSerializedSize = -1;

    public static final int PACKED_BOOL_FIELD_NUMBER = 87;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.BooleanList packedBool_;

    /**
     * <code>repeated bool packed_bool = 87 [packed = true];</code>
     *
     * @return A list containing the packedBool.
     */
    @java.lang.Override
    public java.util.List<java.lang.Boolean> getPackedBoolList() {
      return packedBool_;
    }

    /**
     * <code>repeated bool packed_bool = 87 [packed = true];</code>
     *
     * @return The count of packedBool.
     */
    public int getPackedBoolCount() {
      return packedBool_.size();
    }

    /**
     * <code>repeated bool packed_bool = 87 [packed = true];</code>
     *
     * @param index The index of the element to return.
     * @return The packedBool at the given index.
     */
    public boolean getPackedBool(int index) {
      return packedBool_.getBoolean(index);
    }

    private int packedBoolMemoizedSerializedSize = -1;

    public static final int PACKED_NESTED_ENUM_FIELD_NUMBER = 88;

    @SuppressWarnings("serial")
    private java.util.List<java.lang.Integer> packedNestedEnum_;

    private static final com.google.protobuf.Internal.ListAdapter.Converter<
            java.lang.Integer,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        packedNestedEnum_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                    .NestedEnum>() {
              public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedEnum
                  convert(java.lang.Integer from) {
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                    result =
                        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                            .NestedEnum.forNumber(from);
                return result == null
                    ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                        .NestedEnum.UNRECOGNIZED
                    : result;
              }
            };

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
     * </code>
     *
     * @return A list containing the packedNestedEnum.
     */
    @java.lang.Override
    public java.util.List<
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        getPackedNestedEnumList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>(
          packedNestedEnum_, packedNestedEnum_converter_);
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
     * </code>
     *
     * @return The count of packedNestedEnum.
     */
    @java.lang.Override
    public int getPackedNestedEnumCount() {
      return packedNestedEnum_.size();
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
     * </code>
     *
     * @param index The index of the element to return.
     * @return The packedNestedEnum at the given index.
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
        getPackedNestedEnum(int index) {
      return packedNestedEnum_converter_.convert(packedNestedEnum_.get(index));
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
     * </code>
     *
     * @return A list containing the enum numeric values on the wire for packedNestedEnum.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getPackedNestedEnumValueList() {
      return packedNestedEnum_;
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
     * </code>
     *
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of packedNestedEnum at the given index.
     */
    @java.lang.Override
    public int getPackedNestedEnumValue(int index) {
      return packedNestedEnum_.get(index);
    }

    private int packedNestedEnumMemoizedSerializedSize;

    public static final int UNPACKED_INT32_FIELD_NUMBER = 89;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList unpackedInt32_;

    /**
     *
     *
     * <pre>
     * Unpacked
     * </pre>
     *
     * <code>repeated int32 unpacked_int32 = 89 [packed = false];</code>
     *
     * @return A list containing the unpackedInt32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getUnpackedInt32List() {
      return unpackedInt32_;
    }

    /**
     *
     *
     * <pre>
     * Unpacked
     * </pre>
     *
     * <code>repeated int32 unpacked_int32 = 89 [packed = false];</code>
     *
     * @return The count of unpackedInt32.
     */
    public int getUnpackedInt32Count() {
      return unpackedInt32_.size();
    }

    /**
     *
     *
     * <pre>
     * Unpacked
     * </pre>
     *
     * <code>repeated int32 unpacked_int32 = 89 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedInt32 at the given index.
     */
    public int getUnpackedInt32(int index) {
      return unpackedInt32_.getInt(index);
    }

    public static final int UNPACKED_INT64_FIELD_NUMBER = 90;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList unpackedInt64_;

    /**
     * <code>repeated int64 unpacked_int64 = 90 [packed = false];</code>
     *
     * @return A list containing the unpackedInt64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getUnpackedInt64List() {
      return unpackedInt64_;
    }

    /**
     * <code>repeated int64 unpacked_int64 = 90 [packed = false];</code>
     *
     * @return The count of unpackedInt64.
     */
    public int getUnpackedInt64Count() {
      return unpackedInt64_.size();
    }

    /**
     * <code>repeated int64 unpacked_int64 = 90 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedInt64 at the given index.
     */
    public long getUnpackedInt64(int index) {
      return unpackedInt64_.getLong(index);
    }

    public static final int UNPACKED_UINT32_FIELD_NUMBER = 91;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList unpackedUint32_;

    /**
     * <code>repeated uint32 unpacked_uint32 = 91 [packed = false];</code>
     *
     * @return A list containing the unpackedUint32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getUnpackedUint32List() {
      return unpackedUint32_;
    }

    /**
     * <code>repeated uint32 unpacked_uint32 = 91 [packed = false];</code>
     *
     * @return The count of unpackedUint32.
     */
    public int getUnpackedUint32Count() {
      return unpackedUint32_.size();
    }

    /**
     * <code>repeated uint32 unpacked_uint32 = 91 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedUint32 at the given index.
     */
    public int getUnpackedUint32(int index) {
      return unpackedUint32_.getInt(index);
    }

    public static final int UNPACKED_UINT64_FIELD_NUMBER = 92;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList unpackedUint64_;

    /**
     * <code>repeated uint64 unpacked_uint64 = 92 [packed = false];</code>
     *
     * @return A list containing the unpackedUint64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getUnpackedUint64List() {
      return unpackedUint64_;
    }

    /**
     * <code>repeated uint64 unpacked_uint64 = 92 [packed = false];</code>
     *
     * @return The count of unpackedUint64.
     */
    public int getUnpackedUint64Count() {
      return unpackedUint64_.size();
    }

    /**
     * <code>repeated uint64 unpacked_uint64 = 92 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedUint64 at the given index.
     */
    public long getUnpackedUint64(int index) {
      return unpackedUint64_.getLong(index);
    }

    public static final int UNPACKED_SINT32_FIELD_NUMBER = 93;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList unpackedSint32_;

    /**
     * <code>repeated sint32 unpacked_sint32 = 93 [packed = false];</code>
     *
     * @return A list containing the unpackedSint32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getUnpackedSint32List() {
      return unpackedSint32_;
    }

    /**
     * <code>repeated sint32 unpacked_sint32 = 93 [packed = false];</code>
     *
     * @return The count of unpackedSint32.
     */
    public int getUnpackedSint32Count() {
      return unpackedSint32_.size();
    }

    /**
     * <code>repeated sint32 unpacked_sint32 = 93 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedSint32 at the given index.
     */
    public int getUnpackedSint32(int index) {
      return unpackedSint32_.getInt(index);
    }

    public static final int UNPACKED_SINT64_FIELD_NUMBER = 94;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList unpackedSint64_;

    /**
     * <code>repeated sint64 unpacked_sint64 = 94 [packed = false];</code>
     *
     * @return A list containing the unpackedSint64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getUnpackedSint64List() {
      return unpackedSint64_;
    }

    /**
     * <code>repeated sint64 unpacked_sint64 = 94 [packed = false];</code>
     *
     * @return The count of unpackedSint64.
     */
    public int getUnpackedSint64Count() {
      return unpackedSint64_.size();
    }

    /**
     * <code>repeated sint64 unpacked_sint64 = 94 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedSint64 at the given index.
     */
    public long getUnpackedSint64(int index) {
      return unpackedSint64_.getLong(index);
    }

    public static final int UNPACKED_FIXED32_FIELD_NUMBER = 95;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList unpackedFixed32_;

    /**
     * <code>repeated fixed32 unpacked_fixed32 = 95 [packed = false];</code>
     *
     * @return A list containing the unpackedFixed32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getUnpackedFixed32List() {
      return unpackedFixed32_;
    }

    /**
     * <code>repeated fixed32 unpacked_fixed32 = 95 [packed = false];</code>
     *
     * @return The count of unpackedFixed32.
     */
    public int getUnpackedFixed32Count() {
      return unpackedFixed32_.size();
    }

    /**
     * <code>repeated fixed32 unpacked_fixed32 = 95 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedFixed32 at the given index.
     */
    public int getUnpackedFixed32(int index) {
      return unpackedFixed32_.getInt(index);
    }

    public static final int UNPACKED_FIXED64_FIELD_NUMBER = 96;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList unpackedFixed64_;

    /**
     * <code>repeated fixed64 unpacked_fixed64 = 96 [packed = false];</code>
     *
     * @return A list containing the unpackedFixed64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getUnpackedFixed64List() {
      return unpackedFixed64_;
    }

    /**
     * <code>repeated fixed64 unpacked_fixed64 = 96 [packed = false];</code>
     *
     * @return The count of unpackedFixed64.
     */
    public int getUnpackedFixed64Count() {
      return unpackedFixed64_.size();
    }

    /**
     * <code>repeated fixed64 unpacked_fixed64 = 96 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedFixed64 at the given index.
     */
    public long getUnpackedFixed64(int index) {
      return unpackedFixed64_.getLong(index);
    }

    public static final int UNPACKED_SFIXED32_FIELD_NUMBER = 97;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList unpackedSfixed32_;

    /**
     * <code>repeated sfixed32 unpacked_sfixed32 = 97 [packed = false];</code>
     *
     * @return A list containing the unpackedSfixed32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getUnpackedSfixed32List() {
      return unpackedSfixed32_;
    }

    /**
     * <code>repeated sfixed32 unpacked_sfixed32 = 97 [packed = false];</code>
     *
     * @return The count of unpackedSfixed32.
     */
    public int getUnpackedSfixed32Count() {
      return unpackedSfixed32_.size();
    }

    /**
     * <code>repeated sfixed32 unpacked_sfixed32 = 97 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedSfixed32 at the given index.
     */
    public int getUnpackedSfixed32(int index) {
      return unpackedSfixed32_.getInt(index);
    }

    public static final int UNPACKED_SFIXED64_FIELD_NUMBER = 98;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList unpackedSfixed64_;

    /**
     * <code>repeated sfixed64 unpacked_sfixed64 = 98 [packed = false];</code>
     *
     * @return A list containing the unpackedSfixed64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long> getUnpackedSfixed64List() {
      return unpackedSfixed64_;
    }

    /**
     * <code>repeated sfixed64 unpacked_sfixed64 = 98 [packed = false];</code>
     *
     * @return The count of unpackedSfixed64.
     */
    public int getUnpackedSfixed64Count() {
      return unpackedSfixed64_.size();
    }

    /**
     * <code>repeated sfixed64 unpacked_sfixed64 = 98 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedSfixed64 at the given index.
     */
    public long getUnpackedSfixed64(int index) {
      return unpackedSfixed64_.getLong(index);
    }

    public static final int UNPACKED_FLOAT_FIELD_NUMBER = 99;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.FloatList unpackedFloat_;

    /**
     * <code>repeated float unpacked_float = 99 [packed = false];</code>
     *
     * @return A list containing the unpackedFloat.
     */
    @java.lang.Override
    public java.util.List<java.lang.Float> getUnpackedFloatList() {
      return unpackedFloat_;
    }

    /**
     * <code>repeated float unpacked_float = 99 [packed = false];</code>
     *
     * @return The count of unpackedFloat.
     */
    public int getUnpackedFloatCount() {
      return unpackedFloat_.size();
    }

    /**
     * <code>repeated float unpacked_float = 99 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedFloat at the given index.
     */
    public float getUnpackedFloat(int index) {
      return unpackedFloat_.getFloat(index);
    }

    public static final int UNPACKED_DOUBLE_FIELD_NUMBER = 100;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.DoubleList unpackedDouble_;

    /**
     * <code>repeated double unpacked_double = 100 [packed = false];</code>
     *
     * @return A list containing the unpackedDouble.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double> getUnpackedDoubleList() {
      return unpackedDouble_;
    }

    /**
     * <code>repeated double unpacked_double = 100 [packed = false];</code>
     *
     * @return The count of unpackedDouble.
     */
    public int getUnpackedDoubleCount() {
      return unpackedDouble_.size();
    }

    /**
     * <code>repeated double unpacked_double = 100 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedDouble at the given index.
     */
    public double getUnpackedDouble(int index) {
      return unpackedDouble_.getDouble(index);
    }

    public static final int UNPACKED_BOOL_FIELD_NUMBER = 101;

    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.BooleanList unpackedBool_;

    /**
     * <code>repeated bool unpacked_bool = 101 [packed = false];</code>
     *
     * @return A list containing the unpackedBool.
     */
    @java.lang.Override
    public java.util.List<java.lang.Boolean> getUnpackedBoolList() {
      return unpackedBool_;
    }

    /**
     * <code>repeated bool unpacked_bool = 101 [packed = false];</code>
     *
     * @return The count of unpackedBool.
     */
    public int getUnpackedBoolCount() {
      return unpackedBool_.size();
    }

    /**
     * <code>repeated bool unpacked_bool = 101 [packed = false];</code>
     *
     * @param index The index of the element to return.
     * @return The unpackedBool at the given index.
     */
    public boolean getUnpackedBool(int index) {
      return unpackedBool_.getBoolean(index);
    }

    public static final int UNPACKED_NESTED_ENUM_FIELD_NUMBER = 102;

    @SuppressWarnings("serial")
    private java.util.List<java.lang.Integer> unpackedNestedEnum_;

    private static final com.google.protobuf.Internal.ListAdapter.Converter<
            java.lang.Integer,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        unpackedNestedEnum_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                    .NestedEnum>() {
              public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedEnum
                  convert(java.lang.Integer from) {
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                    result =
                        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                            .NestedEnum.forNumber(from);
                return result == null
                    ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                        .NestedEnum.UNRECOGNIZED
                    : result;
              }
            };

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
     * </code>
     *
     * @return A list containing the unpackedNestedEnum.
     */
    @java.lang.Override
    public java.util.List<
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        getUnpackedNestedEnumList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>(
          unpackedNestedEnum_, unpackedNestedEnum_converter_);
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
     * </code>
     *
     * @return The count of unpackedNestedEnum.
     */
    @java.lang.Override
    public int getUnpackedNestedEnumCount() {
      return unpackedNestedEnum_.size();
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
     * </code>
     *
     * @param index The index of the element to return.
     * @return The unpackedNestedEnum at the given index.
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
        getUnpackedNestedEnum(int index) {
      return unpackedNestedEnum_converter_.convert(unpackedNestedEnum_.get(index));
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
     * </code>
     *
     * @return A list containing the enum numeric values on the wire for unpackedNestedEnum.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer> getUnpackedNestedEnumValueList() {
      return unpackedNestedEnum_;
    }

    /**
     * <code>
     * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
     * </code>
     *
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of unpackedNestedEnum at the given index.
     */
    @java.lang.Override
    public int getUnpackedNestedEnumValue(int index) {
      return unpackedNestedEnum_.get(index);
    }

    public static final int MAP_INT32_INT32_FIELD_NUMBER = 56;

    private static final class MapInt32Int32DefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.Integer, java.lang.Integer>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32Int32Entry_descriptor,
              com.google.protobuf.WireFormat.FieldType.INT32,
              0,
              com.google.protobuf.WireFormat.FieldType.INT32,
              0);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer> mapInt32Int32_;

    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
        internalGetMapInt32Int32() {
      if (mapInt32Int32_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapInt32Int32DefaultEntryHolder.defaultEntry);
      }
      return mapInt32Int32_;
    }

    public int getMapInt32Int32Count() {
      return internalGetMapInt32Int32().getMap().size();
    }

    /**
     *
     *
     * <pre>
     * Map
     * </pre>
     *
     * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
     */
    @java.lang.Override
    public boolean containsMapInt32Int32(int key) {

      return internalGetMapInt32Int32().getMap().containsKey(key);
    }

    /** Use {@link #getMapInt32Int32Map()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.Integer> getMapInt32Int32() {
      return getMapInt32Int32Map();
    }

    /**
     *
     *
     * <pre>
     * Map
     * </pre>
     *
     * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.Integer, java.lang.Integer> getMapInt32Int32Map() {
      return internalGetMapInt32Int32().getMap();
    }

    /**
     *
     *
     * <pre>
     * Map
     * </pre>
     *
     * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
     */
    @java.lang.Override
    public int getMapInt32Int32OrDefault(int key, int defaultValue) {

      java.util.Map<java.lang.Integer, java.lang.Integer> map = internalGetMapInt32Int32().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /**
     *
     *
     * <pre>
     * Map
     * </pre>
     *
     * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
     */
    @java.lang.Override
    public int getMapInt32Int32OrThrow(int key) {

      java.util.Map<java.lang.Integer, java.lang.Integer> map = internalGetMapInt32Int32().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_INT64_INT64_FIELD_NUMBER = 57;

    private static final class MapInt64Int64DefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.Long, java.lang.Long>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt64Int64Entry_descriptor,
              com.google.protobuf.WireFormat.FieldType.INT64,
              0L,
              com.google.protobuf.WireFormat.FieldType.INT64,
              0L);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.Long, java.lang.Long> mapInt64Int64_;

    private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
        internalGetMapInt64Int64() {
      if (mapInt64Int64_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapInt64Int64DefaultEntryHolder.defaultEntry);
      }
      return mapInt64Int64_;
    }

    public int getMapInt64Int64Count() {
      return internalGetMapInt64Int64().getMap().size();
    }

    /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
    @java.lang.Override
    public boolean containsMapInt64Int64(long key) {

      return internalGetMapInt64Int64().getMap().containsKey(key);
    }

    /** Use {@link #getMapInt64Int64Map()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Long, java.lang.Long> getMapInt64Int64() {
      return getMapInt64Int64Map();
    }

    /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.Long, java.lang.Long> getMapInt64Int64Map() {
      return internalGetMapInt64Int64().getMap();
    }

    /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
    @java.lang.Override
    public long getMapInt64Int64OrDefault(long key, long defaultValue) {

      java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapInt64Int64().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
    @java.lang.Override
    public long getMapInt64Int64OrThrow(long key) {

      java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapInt64Int64().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_UINT32_UINT32_FIELD_NUMBER = 58;

    private static final class MapUint32Uint32DefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.Integer, java.lang.Integer>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapUint32Uint32Entry_descriptor,
              com.google.protobuf.WireFormat.FieldType.UINT32,
              0,
              com.google.protobuf.WireFormat.FieldType.UINT32,
              0);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer> mapUint32Uint32_;

    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
        internalGetMapUint32Uint32() {
      if (mapUint32Uint32_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapUint32Uint32DefaultEntryHolder.defaultEntry);
      }
      return mapUint32Uint32_;
    }

    public int getMapUint32Uint32Count() {
      return internalGetMapUint32Uint32().getMap().size();
    }

    /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
    @java.lang.Override
    public boolean containsMapUint32Uint32(int key) {

      return internalGetMapUint32Uint32().getMap().containsKey(key);
    }

    /** Use {@link #getMapUint32Uint32Map()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.Integer> getMapUint32Uint32() {
      return getMapUint32Uint32Map();
    }

    /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.Integer, java.lang.Integer> getMapUint32Uint32Map() {
      return internalGetMapUint32Uint32().getMap();
    }

    /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
    @java.lang.Override
    public int getMapUint32Uint32OrDefault(int key, int defaultValue) {

      java.util.Map<java.lang.Integer, java.lang.Integer> map =
          internalGetMapUint32Uint32().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
    @java.lang.Override
    public int getMapUint32Uint32OrThrow(int key) {

      java.util.Map<java.lang.Integer, java.lang.Integer> map =
          internalGetMapUint32Uint32().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_UINT64_UINT64_FIELD_NUMBER = 59;

    private static final class MapUint64Uint64DefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.Long, java.lang.Long>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapUint64Uint64Entry_descriptor,
              com.google.protobuf.WireFormat.FieldType.UINT64,
              0L,
              com.google.protobuf.WireFormat.FieldType.UINT64,
              0L);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.Long, java.lang.Long> mapUint64Uint64_;

    private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
        internalGetMapUint64Uint64() {
      if (mapUint64Uint64_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapUint64Uint64DefaultEntryHolder.defaultEntry);
      }
      return mapUint64Uint64_;
    }

    public int getMapUint64Uint64Count() {
      return internalGetMapUint64Uint64().getMap().size();
    }

    /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
    @java.lang.Override
    public boolean containsMapUint64Uint64(long key) {

      return internalGetMapUint64Uint64().getMap().containsKey(key);
    }

    /** Use {@link #getMapUint64Uint64Map()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Long, java.lang.Long> getMapUint64Uint64() {
      return getMapUint64Uint64Map();
    }

    /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.Long, java.lang.Long> getMapUint64Uint64Map() {
      return internalGetMapUint64Uint64().getMap();
    }

    /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
    @java.lang.Override
    public long getMapUint64Uint64OrDefault(long key, long defaultValue) {

      java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapUint64Uint64().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
    @java.lang.Override
    public long getMapUint64Uint64OrThrow(long key) {

      java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapUint64Uint64().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_SINT32_SINT32_FIELD_NUMBER = 60;

    private static final class MapSint32Sint32DefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.Integer, java.lang.Integer>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSint32Sint32Entry_descriptor,
              com.google.protobuf.WireFormat.FieldType.SINT32,
              0,
              com.google.protobuf.WireFormat.FieldType.SINT32,
              0);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer> mapSint32Sint32_;

    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
        internalGetMapSint32Sint32() {
      if (mapSint32Sint32_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapSint32Sint32DefaultEntryHolder.defaultEntry);
      }
      return mapSint32Sint32_;
    }

    public int getMapSint32Sint32Count() {
      return internalGetMapSint32Sint32().getMap().size();
    }

    /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
    @java.lang.Override
    public boolean containsMapSint32Sint32(int key) {

      return internalGetMapSint32Sint32().getMap().containsKey(key);
    }

    /** Use {@link #getMapSint32Sint32Map()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.Integer> getMapSint32Sint32() {
      return getMapSint32Sint32Map();
    }

    /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.Integer, java.lang.Integer> getMapSint32Sint32Map() {
      return internalGetMapSint32Sint32().getMap();
    }

    /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
    @java.lang.Override
    public int getMapSint32Sint32OrDefault(int key, int defaultValue) {

      java.util.Map<java.lang.Integer, java.lang.Integer> map =
          internalGetMapSint32Sint32().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
    @java.lang.Override
    public int getMapSint32Sint32OrThrow(int key) {

      java.util.Map<java.lang.Integer, java.lang.Integer> map =
          internalGetMapSint32Sint32().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_SINT64_SINT64_FIELD_NUMBER = 61;

    private static final class MapSint64Sint64DefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.Long, java.lang.Long>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSint64Sint64Entry_descriptor,
              com.google.protobuf.WireFormat.FieldType.SINT64,
              0L,
              com.google.protobuf.WireFormat.FieldType.SINT64,
              0L);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.Long, java.lang.Long> mapSint64Sint64_;

    private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
        internalGetMapSint64Sint64() {
      if (mapSint64Sint64_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapSint64Sint64DefaultEntryHolder.defaultEntry);
      }
      return mapSint64Sint64_;
    }

    public int getMapSint64Sint64Count() {
      return internalGetMapSint64Sint64().getMap().size();
    }

    /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
    @java.lang.Override
    public boolean containsMapSint64Sint64(long key) {

      return internalGetMapSint64Sint64().getMap().containsKey(key);
    }

    /** Use {@link #getMapSint64Sint64Map()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Long, java.lang.Long> getMapSint64Sint64() {
      return getMapSint64Sint64Map();
    }

    /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.Long, java.lang.Long> getMapSint64Sint64Map() {
      return internalGetMapSint64Sint64().getMap();
    }

    /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
    @java.lang.Override
    public long getMapSint64Sint64OrDefault(long key, long defaultValue) {

      java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapSint64Sint64().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
    @java.lang.Override
    public long getMapSint64Sint64OrThrow(long key) {

      java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapSint64Sint64().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_FIXED32_FIXED32_FIELD_NUMBER = 62;

    private static final class MapFixed32Fixed32DefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.Integer, java.lang.Integer>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapFixed32Fixed32Entry_descriptor,
              com.google.protobuf.WireFormat.FieldType.FIXED32,
              0,
              com.google.protobuf.WireFormat.FieldType.FIXED32,
              0);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer> mapFixed32Fixed32_;

    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
        internalGetMapFixed32Fixed32() {
      if (mapFixed32Fixed32_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapFixed32Fixed32DefaultEntryHolder.defaultEntry);
      }
      return mapFixed32Fixed32_;
    }

    public int getMapFixed32Fixed32Count() {
      return internalGetMapFixed32Fixed32().getMap().size();
    }

    /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
    @java.lang.Override
    public boolean containsMapFixed32Fixed32(int key) {

      return internalGetMapFixed32Fixed32().getMap().containsKey(key);
    }

    /** Use {@link #getMapFixed32Fixed32Map()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.Integer> getMapFixed32Fixed32() {
      return getMapFixed32Fixed32Map();
    }

    /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.Integer, java.lang.Integer> getMapFixed32Fixed32Map() {
      return internalGetMapFixed32Fixed32().getMap();
    }

    /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
    @java.lang.Override
    public int getMapFixed32Fixed32OrDefault(int key, int defaultValue) {

      java.util.Map<java.lang.Integer, java.lang.Integer> map =
          internalGetMapFixed32Fixed32().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
    @java.lang.Override
    public int getMapFixed32Fixed32OrThrow(int key) {

      java.util.Map<java.lang.Integer, java.lang.Integer> map =
          internalGetMapFixed32Fixed32().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_FIXED64_FIXED64_FIELD_NUMBER = 63;

    private static final class MapFixed64Fixed64DefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.Long, java.lang.Long>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapFixed64Fixed64Entry_descriptor,
              com.google.protobuf.WireFormat.FieldType.FIXED64,
              0L,
              com.google.protobuf.WireFormat.FieldType.FIXED64,
              0L);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.Long, java.lang.Long> mapFixed64Fixed64_;

    private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
        internalGetMapFixed64Fixed64() {
      if (mapFixed64Fixed64_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapFixed64Fixed64DefaultEntryHolder.defaultEntry);
      }
      return mapFixed64Fixed64_;
    }

    public int getMapFixed64Fixed64Count() {
      return internalGetMapFixed64Fixed64().getMap().size();
    }

    /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
    @java.lang.Override
    public boolean containsMapFixed64Fixed64(long key) {

      return internalGetMapFixed64Fixed64().getMap().containsKey(key);
    }

    /** Use {@link #getMapFixed64Fixed64Map()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Long, java.lang.Long> getMapFixed64Fixed64() {
      return getMapFixed64Fixed64Map();
    }

    /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.Long, java.lang.Long> getMapFixed64Fixed64Map() {
      return internalGetMapFixed64Fixed64().getMap();
    }

    /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
    @java.lang.Override
    public long getMapFixed64Fixed64OrDefault(long key, long defaultValue) {

      java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapFixed64Fixed64().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
    @java.lang.Override
    public long getMapFixed64Fixed64OrThrow(long key) {

      java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapFixed64Fixed64().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_SFIXED32_SFIXED32_FIELD_NUMBER = 64;

    private static final class MapSfixed32Sfixed32DefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.Integer, java.lang.Integer>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSfixed32Sfixed32Entry_descriptor,
              com.google.protobuf.WireFormat.FieldType.SFIXED32,
              0,
              com.google.protobuf.WireFormat.FieldType.SFIXED32,
              0);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer> mapSfixed32Sfixed32_;

    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
        internalGetMapSfixed32Sfixed32() {
      if (mapSfixed32Sfixed32_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapSfixed32Sfixed32DefaultEntryHolder.defaultEntry);
      }
      return mapSfixed32Sfixed32_;
    }

    public int getMapSfixed32Sfixed32Count() {
      return internalGetMapSfixed32Sfixed32().getMap().size();
    }

    /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
    @java.lang.Override
    public boolean containsMapSfixed32Sfixed32(int key) {

      return internalGetMapSfixed32Sfixed32().getMap().containsKey(key);
    }

    /** Use {@link #getMapSfixed32Sfixed32Map()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.Integer> getMapSfixed32Sfixed32() {
      return getMapSfixed32Sfixed32Map();
    }

    /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.Integer, java.lang.Integer> getMapSfixed32Sfixed32Map() {
      return internalGetMapSfixed32Sfixed32().getMap();
    }

    /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
    @java.lang.Override
    public int getMapSfixed32Sfixed32OrDefault(int key, int defaultValue) {

      java.util.Map<java.lang.Integer, java.lang.Integer> map =
          internalGetMapSfixed32Sfixed32().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
    @java.lang.Override
    public int getMapSfixed32Sfixed32OrThrow(int key) {

      java.util.Map<java.lang.Integer, java.lang.Integer> map =
          internalGetMapSfixed32Sfixed32().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_SFIXED64_SFIXED64_FIELD_NUMBER = 65;

    private static final class MapSfixed64Sfixed64DefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.Long, java.lang.Long>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSfixed64Sfixed64Entry_descriptor,
              com.google.protobuf.WireFormat.FieldType.SFIXED64,
              0L,
              com.google.protobuf.WireFormat.FieldType.SFIXED64,
              0L);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.Long, java.lang.Long> mapSfixed64Sfixed64_;

    private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
        internalGetMapSfixed64Sfixed64() {
      if (mapSfixed64Sfixed64_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapSfixed64Sfixed64DefaultEntryHolder.defaultEntry);
      }
      return mapSfixed64Sfixed64_;
    }

    public int getMapSfixed64Sfixed64Count() {
      return internalGetMapSfixed64Sfixed64().getMap().size();
    }

    /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
    @java.lang.Override
    public boolean containsMapSfixed64Sfixed64(long key) {

      return internalGetMapSfixed64Sfixed64().getMap().containsKey(key);
    }

    /** Use {@link #getMapSfixed64Sfixed64Map()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Long, java.lang.Long> getMapSfixed64Sfixed64() {
      return getMapSfixed64Sfixed64Map();
    }

    /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.Long, java.lang.Long> getMapSfixed64Sfixed64Map() {
      return internalGetMapSfixed64Sfixed64().getMap();
    }

    /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
    @java.lang.Override
    public long getMapSfixed64Sfixed64OrDefault(long key, long defaultValue) {

      java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapSfixed64Sfixed64().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
    @java.lang.Override
    public long getMapSfixed64Sfixed64OrThrow(long key) {

      java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapSfixed64Sfixed64().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_INT32_FLOAT_FIELD_NUMBER = 66;

    private static final class MapInt32FloatDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Float> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.Integer, java.lang.Float>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32FloatEntry_descriptor,
              com.google.protobuf.WireFormat.FieldType.INT32,
              0,
              com.google.protobuf.WireFormat.FieldType.FLOAT,
              0F);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Float> mapInt32Float_;

    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Float>
        internalGetMapInt32Float() {
      if (mapInt32Float_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapInt32FloatDefaultEntryHolder.defaultEntry);
      }
      return mapInt32Float_;
    }

    public int getMapInt32FloatCount() {
      return internalGetMapInt32Float().getMap().size();
    }

    /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
    @java.lang.Override
    public boolean containsMapInt32Float(int key) {

      return internalGetMapInt32Float().getMap().containsKey(key);
    }

    /** Use {@link #getMapInt32FloatMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.Float> getMapInt32Float() {
      return getMapInt32FloatMap();
    }

    /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.Integer, java.lang.Float> getMapInt32FloatMap() {
      return internalGetMapInt32Float().getMap();
    }

    /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
    @java.lang.Override
    public float getMapInt32FloatOrDefault(int key, float defaultValue) {

      java.util.Map<java.lang.Integer, java.lang.Float> map = internalGetMapInt32Float().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
    @java.lang.Override
    public float getMapInt32FloatOrThrow(int key) {

      java.util.Map<java.lang.Integer, java.lang.Float> map = internalGetMapInt32Float().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_INT32_DOUBLE_FIELD_NUMBER = 67;

    private static final class MapInt32DoubleDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Double> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.Integer, java.lang.Double>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32DoubleEntry_descriptor,
              com.google.protobuf.WireFormat.FieldType.INT32,
              0,
              com.google.protobuf.WireFormat.FieldType.DOUBLE,
              0D);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Double> mapInt32Double_;

    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Double>
        internalGetMapInt32Double() {
      if (mapInt32Double_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapInt32DoubleDefaultEntryHolder.defaultEntry);
      }
      return mapInt32Double_;
    }

    public int getMapInt32DoubleCount() {
      return internalGetMapInt32Double().getMap().size();
    }

    /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
    @java.lang.Override
    public boolean containsMapInt32Double(int key) {

      return internalGetMapInt32Double().getMap().containsKey(key);
    }

    /** Use {@link #getMapInt32DoubleMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.Double> getMapInt32Double() {
      return getMapInt32DoubleMap();
    }

    /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.Integer, java.lang.Double> getMapInt32DoubleMap() {
      return internalGetMapInt32Double().getMap();
    }

    /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
    @java.lang.Override
    public double getMapInt32DoubleOrDefault(int key, double defaultValue) {

      java.util.Map<java.lang.Integer, java.lang.Double> map = internalGetMapInt32Double().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
    @java.lang.Override
    public double getMapInt32DoubleOrThrow(int key) {

      java.util.Map<java.lang.Integer, java.lang.Double> map = internalGetMapInt32Double().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_BOOL_BOOL_FIELD_NUMBER = 68;

    private static final class MapBoolBoolDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.Boolean, java.lang.Boolean> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.Boolean, java.lang.Boolean>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapBoolBoolEntry_descriptor,
              com.google.protobuf.WireFormat.FieldType.BOOL,
              false,
              com.google.protobuf.WireFormat.FieldType.BOOL,
              false);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.Boolean, java.lang.Boolean> mapBoolBool_;

    private com.google.protobuf.MapField<java.lang.Boolean, java.lang.Boolean>
        internalGetMapBoolBool() {
      if (mapBoolBool_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapBoolBoolDefaultEntryHolder.defaultEntry);
      }
      return mapBoolBool_;
    }

    public int getMapBoolBoolCount() {
      return internalGetMapBoolBool().getMap().size();
    }

    /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
    @java.lang.Override
    public boolean containsMapBoolBool(boolean key) {

      return internalGetMapBoolBool().getMap().containsKey(key);
    }

    /** Use {@link #getMapBoolBoolMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Boolean, java.lang.Boolean> getMapBoolBool() {
      return getMapBoolBoolMap();
    }

    /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.Boolean, java.lang.Boolean> getMapBoolBoolMap() {
      return internalGetMapBoolBool().getMap();
    }

    /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
    @java.lang.Override
    public boolean getMapBoolBoolOrDefault(boolean key, boolean defaultValue) {

      java.util.Map<java.lang.Boolean, java.lang.Boolean> map = internalGetMapBoolBool().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
    @java.lang.Override
    public boolean getMapBoolBoolOrThrow(boolean key) {

      java.util.Map<java.lang.Boolean, java.lang.Boolean> map = internalGetMapBoolBool().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_STRING_STRING_FIELD_NUMBER = 69;

    private static final class MapStringStringDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.String, java.lang.String> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.String, java.lang.String>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringStringEntry_descriptor,
              com.google.protobuf.WireFormat.FieldType.STRING,
              "",
              com.google.protobuf.WireFormat.FieldType.STRING,
              "");
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.String, java.lang.String> mapStringString_;

    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
        internalGetMapStringString() {
      if (mapStringString_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapStringStringDefaultEntryHolder.defaultEntry);
      }
      return mapStringString_;
    }

    public int getMapStringStringCount() {
      return internalGetMapStringString().getMap().size();
    }

    /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
    @java.lang.Override
    public boolean containsMapStringString(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      return internalGetMapStringString().getMap().containsKey(key);
    }

    /** Use {@link #getMapStringStringMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getMapStringString() {
      return getMapStringStringMap();
    }

    /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getMapStringStringMap() {
      return internalGetMapStringString().getMap();
    }

    /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
    @java.lang.Override
    public /* nullable */ java.lang.String getMapStringStringOrDefault(
        java.lang.String key,
        /* nullable */
        java.lang.String defaultValue) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.String> map = internalGetMapStringString().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
    @java.lang.Override
    public java.lang.String getMapStringStringOrThrow(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.String> map = internalGetMapStringString().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_STRING_BYTES_FIELD_NUMBER = 70;

    private static final class MapStringBytesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.ByteString>
          defaultEntry =
              com.google.protobuf.MapEntry
                  .<java.lang.String, com.google.protobuf.ByteString>newDefaultInstance(
                      legacy_gencode_test.proto3.Proto3GencodeTestProto
                          .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringBytesEntry_descriptor,
                      com.google.protobuf.WireFormat.FieldType.STRING,
                      "",
                      com.google.protobuf.WireFormat.FieldType.BYTES,
                      com.google.protobuf.ByteString.EMPTY);
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
        mapStringBytes_;

    private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
        internalGetMapStringBytes() {
      if (mapStringBytes_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapStringBytesDefaultEntryHolder.defaultEntry);
      }
      return mapStringBytes_;
    }

    public int getMapStringBytesCount() {
      return internalGetMapStringBytes().getMap().size();
    }

    /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
    @java.lang.Override
    public boolean containsMapStringBytes(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      return internalGetMapStringBytes().getMap().containsKey(key);
    }

    /** Use {@link #getMapStringBytesMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getMapStringBytes() {
      return getMapStringBytesMap();
    }

    /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
    @java.lang.Override
    public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getMapStringBytesMap() {
      return internalGetMapStringBytes().getMap();
    }

    /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
    @java.lang.Override
    public /* nullable */ com.google.protobuf.ByteString getMapStringBytesOrDefault(
        java.lang.String key,
        /* nullable */
        com.google.protobuf.ByteString defaultValue) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
          internalGetMapStringBytes().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
    @java.lang.Override
    public com.google.protobuf.ByteString getMapStringBytesOrThrow(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
          internalGetMapStringBytes().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_STRING_NESTED_MESSAGE_FIELD_NUMBER = 71;

    private static final class MapStringNestedMessageDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
              java.lang.String,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
          defaultEntry =
              com.google.protobuf.MapEntry
                  .<java.lang.String,
                      legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                          .NestedMessage>
                      newDefaultInstance(
                          legacy_gencode_test.proto3.Proto3GencodeTestProto
                              .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringNestedMessageEntry_descriptor,
                          com.google.protobuf.WireFormat.FieldType.STRING,
                          "",
                          com.google.protobuf.WireFormat.FieldType.MESSAGE,
                          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                              .NestedMessage.getDefaultInstance());
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
            java.lang.String,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
        mapStringNestedMessage_;

    private com.google.protobuf.MapField<
            java.lang.String,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
        internalGetMapStringNestedMessage() {
      if (mapStringNestedMessage_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapStringNestedMessageDefaultEntryHolder.defaultEntry);
      }
      return mapStringNestedMessage_;
    }

    public int getMapStringNestedMessageCount() {
      return internalGetMapStringNestedMessage().getMap().size();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
     * </code>
     */
    @java.lang.Override
    public boolean containsMapStringNestedMessage(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      return internalGetMapStringNestedMessage().getMap().containsKey(key);
    }

    /** Use {@link #getMapStringNestedMessageMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<
            java.lang.String,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
        getMapStringNestedMessage() {
      return getMapStringNestedMessageMap();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
     * </code>
     */
    @java.lang.Override
    public java.util.Map<
            java.lang.String,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
        getMapStringNestedMessageMap() {
      return internalGetMapStringNestedMessage().getMap();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
     * </code>
     */
    @java.lang.Override
    public /* nullable */ legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
            .NestedMessage
        getMapStringNestedMessageOrDefault(
            java.lang.String key,
            /* nullable */
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                defaultValue) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<
              java.lang.String,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
          map = internalGetMapStringNestedMessage().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
     * </code>
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
        getMapStringNestedMessageOrThrow(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<
              java.lang.String,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
          map = internalGetMapStringNestedMessage().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_STRING_FOREIGN_MESSAGE_FIELD_NUMBER = 72;

    private static final class MapStringForeignMessageDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
              java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
          defaultEntry =
              com.google.protobuf.MapEntry
                  .<java.lang.String,
                      legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
                      newDefaultInstance(
                          legacy_gencode_test.proto3.Proto3GencodeTestProto
                              .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringForeignMessageEntry_descriptor,
                          com.google.protobuf.WireFormat.FieldType.STRING,
                          "",
                          com.google.protobuf.WireFormat.FieldType.MESSAGE,
                          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
                              .getDefaultInstance());
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
            java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
        mapStringForeignMessage_;

    private com.google.protobuf.MapField<
            java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
        internalGetMapStringForeignMessage() {
      if (mapStringForeignMessage_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapStringForeignMessageDefaultEntryHolder.defaultEntry);
      }
      return mapStringForeignMessage_;
    }

    public int getMapStringForeignMessageCount() {
      return internalGetMapStringForeignMessage().getMap().size();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
     * </code>
     */
    @java.lang.Override
    public boolean containsMapStringForeignMessage(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      return internalGetMapStringForeignMessage().getMap().containsKey(key);
    }

    /** Use {@link #getMapStringForeignMessageMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<
            java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
        getMapStringForeignMessage() {
      return getMapStringForeignMessageMap();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
     * </code>
     */
    @java.lang.Override
    public java.util.Map<
            java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
        getMapStringForeignMessageMap() {
      return internalGetMapStringForeignMessage().getMap();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
     * </code>
     */
    @java.lang.Override
    public /* nullable */ legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
        getMapStringForeignMessageOrDefault(
            java.lang.String key,
            /* nullable */
            legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage defaultValue) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<
              java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
          map = internalGetMapStringForeignMessage().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
     * </code>
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
        getMapStringForeignMessageOrThrow(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<
              java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
          map = internalGetMapStringForeignMessage().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_STRING_NESTED_ENUM_FIELD_NUMBER = 73;

    private static final class MapStringNestedEnumDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.String, java.lang.Integer>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringNestedEnumEntry_descriptor,
              com.google.protobuf.WireFormat.FieldType.STRING,
              "",
              com.google.protobuf.WireFormat.FieldType.ENUM,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum.FOO
                  .getNumber());
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> mapStringNestedEnum_;

    private com.google.protobuf.MapField<java.lang.String, java.lang.Integer>
        internalGetMapStringNestedEnum() {
      if (mapStringNestedEnum_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapStringNestedEnumDefaultEntryHolder.defaultEntry);
      }
      return mapStringNestedEnum_;
    }

    private static final com.google.protobuf.Internal.MapAdapter.Converter<
            java.lang.Integer,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        mapStringNestedEnumValueConverter =
            com.google.protobuf.Internal.MapAdapter.newEnumConverter(
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                    .internalGetValueMap(),
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                    .UNRECOGNIZED);

    private static final java.util.Map<
            java.lang.String,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        internalGetAdaptedMapStringNestedEnumMap(
            java.util.Map<java.lang.String, java.lang.Integer> map) {
      return new com.google.protobuf.Internal.MapAdapter<
          java.lang.String,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum,
          java.lang.Integer>(map, mapStringNestedEnumValueConverter);
    }

    public int getMapStringNestedEnumCount() {
      return internalGetMapStringNestedEnum().getMap().size();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    @java.lang.Override
    public boolean containsMapStringNestedEnum(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      return internalGetMapStringNestedEnum().getMap().containsKey(key);
    }

    /** Use {@link #getMapStringNestedEnumMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<
            java.lang.String,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        getMapStringNestedEnum() {
      return getMapStringNestedEnumMap();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    @java.lang.Override
    public java.util.Map<
            java.lang.String,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
        getMapStringNestedEnumMap() {
      return internalGetAdaptedMapStringNestedEnumMap(internalGetMapStringNestedEnum().getMap());
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    @java.lang.Override
    public /* nullable */ legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
            .NestedEnum
        getMapStringNestedEnumOrDefault(
            java.lang.String key,
            /* nullable */
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                defaultValue) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.Integer> map =
          internalGetMapStringNestedEnum().getMap();
      return map.containsKey(key)
          ? mapStringNestedEnumValueConverter.doForward(map.get(key))
          : defaultValue;
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
        getMapStringNestedEnumOrThrow(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.Integer> map =
          internalGetMapStringNestedEnum().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return mapStringNestedEnumValueConverter.doForward(map.get(key));
    }

    /** Use {@link #getMapStringNestedEnumValueMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.Integer> getMapStringNestedEnumValue() {
      return getMapStringNestedEnumValueMap();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.Integer> getMapStringNestedEnumValueMap() {
      return internalGetMapStringNestedEnum().getMap();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    @java.lang.Override
    public int getMapStringNestedEnumValueOrDefault(java.lang.String key, int defaultValue) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.Integer> map =
          internalGetMapStringNestedEnum().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
     * </code>
     */
    @java.lang.Override
    public int getMapStringNestedEnumValueOrThrow(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.Integer> map =
          internalGetMapStringNestedEnum().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAP_STRING_FOREIGN_ENUM_FIELD_NUMBER = 74;

    private static final class MapStringForeignEnumDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.String, java.lang.Integer>newDefaultInstance(
              legacy_gencode_test.proto3.Proto3GencodeTestProto
                  .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringForeignEnumEntry_descriptor,
              com.google.protobuf.WireFormat.FieldType.STRING,
              "",
              com.google.protobuf.WireFormat.FieldType.ENUM,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum.FOREIGN_FOO
                  .getNumber());
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> mapStringForeignEnum_;

    private com.google.protobuf.MapField<java.lang.String, java.lang.Integer>
        internalGetMapStringForeignEnum() {
      if (mapStringForeignEnum_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapStringForeignEnumDefaultEntryHolder.defaultEntry);
      }
      return mapStringForeignEnum_;
    }

    private static final com.google.protobuf.Internal.MapAdapter.Converter<
            java.lang.Integer, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
        mapStringForeignEnumValueConverter =
            com.google.protobuf.Internal.MapAdapter.newEnumConverter(
                legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum.internalGetValueMap(),
                legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum.UNRECOGNIZED);

    private static final java.util.Map<
            java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
        internalGetAdaptedMapStringForeignEnumMap(
            java.util.Map<java.lang.String, java.lang.Integer> map) {
      return new com.google.protobuf.Internal.MapAdapter<
          java.lang.String,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum,
          java.lang.Integer>(map, mapStringForeignEnumValueConverter);
    }

    public int getMapStringForeignEnumCount() {
      return internalGetMapStringForeignEnum().getMap().size();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    @java.lang.Override
    public boolean containsMapStringForeignEnum(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      return internalGetMapStringForeignEnum().getMap().containsKey(key);
    }

    /** Use {@link #getMapStringForeignEnumMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<
            java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
        getMapStringForeignEnum() {
      return getMapStringForeignEnumMap();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    @java.lang.Override
    public java.util.Map<
            java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
        getMapStringForeignEnumMap() {
      return internalGetAdaptedMapStringForeignEnumMap(internalGetMapStringForeignEnum().getMap());
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    @java.lang.Override
    public /* nullable */ legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum
        getMapStringForeignEnumOrDefault(
            java.lang.String key,
            /* nullable */
            legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum defaultValue) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.Integer> map =
          internalGetMapStringForeignEnum().getMap();
      return map.containsKey(key)
          ? mapStringForeignEnumValueConverter.doForward(map.get(key))
          : defaultValue;
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum
        getMapStringForeignEnumOrThrow(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.Integer> map =
          internalGetMapStringForeignEnum().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return mapStringForeignEnumValueConverter.doForward(map.get(key));
    }

    /** Use {@link #getMapStringForeignEnumValueMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.Integer> getMapStringForeignEnumValue() {
      return getMapStringForeignEnumValueMap();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.Integer> getMapStringForeignEnumValueMap() {
      return internalGetMapStringForeignEnum().getMap();
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    @java.lang.Override
    public int getMapStringForeignEnumValueOrDefault(java.lang.String key, int defaultValue) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.Integer> map =
          internalGetMapStringForeignEnum().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }

    /**
     * <code>
     * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
     * </code>
     */
    @java.lang.Override
    public int getMapStringForeignEnumValueOrThrow(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.Integer> map =
          internalGetMapStringForeignEnum().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int ONEOF_UINT32_FIELD_NUMBER = 111;

    /**
     * <code>uint32 oneof_uint32 = 111;</code>
     *
     * @return Whether the oneofUint32 field is set.
     */
    @java.lang.Override
    public boolean hasOneofUint32() {
      return oneofFieldCase_ == 111;
    }

    /**
     * <code>uint32 oneof_uint32 = 111;</code>
     *
     * @return The oneofUint32.
     */
    @java.lang.Override
    public int getOneofUint32() {
      if (oneofFieldCase_ == 111) {
        return (java.lang.Integer) oneofField_;
      }
      return 0;
    }

    public static final int ONEOF_NESTED_MESSAGE_FIELD_NUMBER = 112;

    /**
     * <code>
     * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
     * </code>
     *
     * @return Whether the oneofNestedMessage field is set.
     */
    @java.lang.Override
    public boolean hasOneofNestedMessage() {
      return oneofFieldCase_ == 112;
    }

    /**
     * <code>
     * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
     * </code>
     *
     * @return The oneofNestedMessage.
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
        getOneofNestedMessage() {
      if (oneofFieldCase_ == 112) {
        return (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage)
            oneofField_;
      }
      return legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
          .getDefaultInstance();
    }

    /**
     * <code>
     * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
     * </code>
     */
    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
            .NestedMessageOrBuilder
        getOneofNestedMessageOrBuilder() {
      if (oneofFieldCase_ == 112) {
        return (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage)
            oneofField_;
      }
      return legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
          .getDefaultInstance();
    }

    public static final int ONEOF_STRING_FIELD_NUMBER = 113;

    /**
     * <code>string oneof_string = 113;</code>
     *
     * @return Whether the oneofString field is set.
     */
    public boolean hasOneofString() {
      return oneofFieldCase_ == 113;
    }

    /**
     * <code>string oneof_string = 113;</code>
     *
     * @return The oneofString.
     */
    public java.lang.String getOneofString() {
      java.lang.Object ref = "";
      if (oneofFieldCase_ == 113) {
        ref = oneofField_;
      }
      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 (oneofFieldCase_ == 113) {
          oneofField_ = s;
        }
        return s;
      }
    }

    /**
     * <code>string oneof_string = 113;</code>
     *
     * @return The bytes for oneofString.
     */
    public com.google.protobuf.ByteString getOneofStringBytes() {
      java.lang.Object ref = "";
      if (oneofFieldCase_ == 113) {
        ref = oneofField_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        if (oneofFieldCase_ == 113) {
          oneofField_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ONEOF_BYTES_FIELD_NUMBER = 114;

    /**
     * <code>bytes oneof_bytes = 114;</code>
     *
     * @return Whether the oneofBytes field is set.
     */
    @java.lang.Override
    public boolean hasOneofBytes() {
      return oneofFieldCase_ == 114;
    }

    /**
     * <code>bytes oneof_bytes = 114;</code>
     *
     * @return The oneofBytes.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getOneofBytes() {
      if (oneofFieldCase_ == 114) {
        return (com.google.protobuf.ByteString) oneofField_;
      }
      return com.google.protobuf.ByteString.EMPTY;
    }

    public static final int ONEOF_BOOL_FIELD_NUMBER = 115;

    /**
     * <code>bool oneof_bool = 115;</code>
     *
     * @return Whether the oneofBool field is set.
     */
    @java.lang.Override
    public boolean hasOneofBool() {
      return oneofFieldCase_ == 115;
    }

    /**
     * <code>bool oneof_bool = 115;</code>
     *
     * @return The oneofBool.
     */
    @java.lang.Override
    public boolean getOneofBool() {
      if (oneofFieldCase_ == 115) {
        return (java.lang.Boolean) oneofField_;
      }
      return false;
    }

    public static final int ONEOF_UINT64_FIELD_NUMBER = 116;

    /**
     * <code>uint64 oneof_uint64 = 116;</code>
     *
     * @return Whether the oneofUint64 field is set.
     */
    @java.lang.Override
    public boolean hasOneofUint64() {
      return oneofFieldCase_ == 116;
    }

    /**
     * <code>uint64 oneof_uint64 = 116;</code>
     *
     * @return The oneofUint64.
     */
    @java.lang.Override
    public long getOneofUint64() {
      if (oneofFieldCase_ == 116) {
        return (java.lang.Long) oneofField_;
      }
      return 0L;
    }

    public static final int ONEOF_FLOAT_FIELD_NUMBER = 117;

    /**
     * <code>float oneof_float = 117;</code>
     *
     * @return Whether the oneofFloat field is set.
     */
    @java.lang.Override
    public boolean hasOneofFloat() {
      return oneofFieldCase_ == 117;
    }

    /**
     * <code>float oneof_float = 117;</code>
     *
     * @return The oneofFloat.
     */
    @java.lang.Override
    public float getOneofFloat() {
      if (oneofFieldCase_ == 117) {
        return (java.lang.Float) oneofField_;
      }
      return 0F;
    }

    public static final int ONEOF_DOUBLE_FIELD_NUMBER = 118;

    /**
     * <code>double oneof_double = 118;</code>
     *
     * @return Whether the oneofDouble field is set.
     */
    @java.lang.Override
    public boolean hasOneofDouble() {
      return oneofFieldCase_ == 118;
    }

    /**
     * <code>double oneof_double = 118;</code>
     *
     * @return The oneofDouble.
     */
    @java.lang.Override
    public double getOneofDouble() {
      if (oneofFieldCase_ == 118) {
        return (java.lang.Double) oneofField_;
      }
      return 0D;
    }

    public static final int ONEOF_ENUM_FIELD_NUMBER = 119;

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum oneof_enum = 119;</code>
     *
     * @return Whether the oneofEnum field is set.
     */
    public boolean hasOneofEnum() {
      return oneofFieldCase_ == 119;
    }

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum oneof_enum = 119;</code>
     *
     * @return The enum numeric value on the wire for oneofEnum.
     */
    public int getOneofEnumValue() {
      if (oneofFieldCase_ == 119) {
        return (java.lang.Integer) oneofField_;
      }
      return 0;
    }

    /**
     * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum oneof_enum = 119;</code>
     *
     * @return The oneofEnum.
     */
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
        getOneofEnum() {
      if (oneofFieldCase_ == 119) {
        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum result =
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                .forNumber((java.lang.Integer) oneofField_);
        return result == null
            ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                .UNRECOGNIZED
            : result;
      }
      return legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum.FOO;
    }

    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 (optionalInt32_ != 0) {
        output.writeInt32(1, optionalInt32_);
      }
      if (optionalInt64_ != 0L) {
        output.writeInt64(2, optionalInt64_);
      }
      if (optionalUint32_ != 0) {
        output.writeUInt32(3, optionalUint32_);
      }
      if (optionalUint64_ != 0L) {
        output.writeUInt64(4, optionalUint64_);
      }
      if (optionalSint32_ != 0) {
        output.writeSInt32(5, optionalSint32_);
      }
      if (optionalSint64_ != 0L) {
        output.writeSInt64(6, optionalSint64_);
      }
      if (optionalFixed32_ != 0) {
        output.writeFixed32(7, optionalFixed32_);
      }
      if (optionalFixed64_ != 0L) {
        output.writeFixed64(8, optionalFixed64_);
      }
      if (optionalSfixed32_ != 0) {
        output.writeSFixed32(9, optionalSfixed32_);
      }
      if (optionalSfixed64_ != 0L) {
        output.writeSFixed64(10, optionalSfixed64_);
      }
      if (java.lang.Float.floatToRawIntBits(optionalFloat_) != 0) {
        output.writeFloat(11, optionalFloat_);
      }
      if (java.lang.Double.doubleToRawLongBits(optionalDouble_) != 0) {
        output.writeDouble(12, optionalDouble_);
      }
      if (optionalBool_ != false) {
        output.writeBool(13, optionalBool_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(optionalString_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 14, optionalString_);
      }
      if (!optionalBytes_.isEmpty()) {
        output.writeBytes(15, optionalBytes_);
      }
      if (optionalNestedMessage_ != null) {
        output.writeMessage(18, getOptionalNestedMessage());
      }
      if (optionalForeignMessage_ != null) {
        output.writeMessage(19, getOptionalForeignMessage());
      }
      if (optionalNestedEnum_
          != legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum.FOO
              .getNumber()) {
        output.writeEnum(21, optionalNestedEnum_);
      }
      if (optionalForeignEnum_
          != legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum.FOREIGN_FOO
              .getNumber()) {
        output.writeEnum(22, optionalForeignEnum_);
      }
      if (optionalAliasedEnum_
          != legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.AliasedEnum
              .ALIAS_FOO
              .getNumber()) {
        output.writeEnum(23, optionalAliasedEnum_);
      }
      if (recursiveMessage_ != null) {
        output.writeMessage(27, getRecursiveMessage());
      }
      if (getRepeatedInt32List().size() > 0) {
        output.writeUInt32NoTag(250);
        output.writeUInt32NoTag(repeatedInt32MemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedInt32_.size(); i++) {
        output.writeInt32NoTag(repeatedInt32_.getInt(i));
      }
      if (getRepeatedInt64List().size() > 0) {
        output.writeUInt32NoTag(258);
        output.writeUInt32NoTag(repeatedInt64MemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedInt64_.size(); i++) {
        output.writeInt64NoTag(repeatedInt64_.getLong(i));
      }
      if (getRepeatedUint32List().size() > 0) {
        output.writeUInt32NoTag(266);
        output.writeUInt32NoTag(repeatedUint32MemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedUint32_.size(); i++) {
        output.writeUInt32NoTag(repeatedUint32_.getInt(i));
      }
      if (getRepeatedUint64List().size() > 0) {
        output.writeUInt32NoTag(274);
        output.writeUInt32NoTag(repeatedUint64MemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedUint64_.size(); i++) {
        output.writeUInt64NoTag(repeatedUint64_.getLong(i));
      }
      if (getRepeatedSint32List().size() > 0) {
        output.writeUInt32NoTag(282);
        output.writeUInt32NoTag(repeatedSint32MemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedSint32_.size(); i++) {
        output.writeSInt32NoTag(repeatedSint32_.getInt(i));
      }
      if (getRepeatedSint64List().size() > 0) {
        output.writeUInt32NoTag(290);
        output.writeUInt32NoTag(repeatedSint64MemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedSint64_.size(); i++) {
        output.writeSInt64NoTag(repeatedSint64_.getLong(i));
      }
      if (getRepeatedFixed32List().size() > 0) {
        output.writeUInt32NoTag(298);
        output.writeUInt32NoTag(repeatedFixed32MemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedFixed32_.size(); i++) {
        output.writeFixed32NoTag(repeatedFixed32_.getInt(i));
      }
      if (getRepeatedFixed64List().size() > 0) {
        output.writeUInt32NoTag(306);
        output.writeUInt32NoTag(repeatedFixed64MemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedFixed64_.size(); i++) {
        output.writeFixed64NoTag(repeatedFixed64_.getLong(i));
      }
      if (getRepeatedSfixed32List().size() > 0) {
        output.writeUInt32NoTag(314);
        output.writeUInt32NoTag(repeatedSfixed32MemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedSfixed32_.size(); i++) {
        output.writeSFixed32NoTag(repeatedSfixed32_.getInt(i));
      }
      if (getRepeatedSfixed64List().size() > 0) {
        output.writeUInt32NoTag(322);
        output.writeUInt32NoTag(repeatedSfixed64MemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedSfixed64_.size(); i++) {
        output.writeSFixed64NoTag(repeatedSfixed64_.getLong(i));
      }
      if (getRepeatedFloatList().size() > 0) {
        output.writeUInt32NoTag(330);
        output.writeUInt32NoTag(repeatedFloatMemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedFloat_.size(); i++) {
        output.writeFloatNoTag(repeatedFloat_.getFloat(i));
      }
      if (getRepeatedDoubleList().size() > 0) {
        output.writeUInt32NoTag(338);
        output.writeUInt32NoTag(repeatedDoubleMemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedDouble_.size(); i++) {
        output.writeDoubleNoTag(repeatedDouble_.getDouble(i));
      }
      if (getRepeatedBoolList().size() > 0) {
        output.writeUInt32NoTag(346);
        output.writeUInt32NoTag(repeatedBoolMemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedBool_.size(); i++) {
        output.writeBoolNoTag(repeatedBool_.getBoolean(i));
      }
      for (int i = 0; i < repeatedString_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 44, repeatedString_.getRaw(i));
      }
      for (int i = 0; i < repeatedBytes_.size(); i++) {
        output.writeBytes(45, repeatedBytes_.get(i));
      }
      for (int i = 0; i < repeatedNestedMessage_.size(); i++) {
        output.writeMessage(48, repeatedNestedMessage_.get(i));
      }
      for (int i = 0; i < repeatedForeignMessage_.size(); i++) {
        output.writeMessage(49, repeatedForeignMessage_.get(i));
      }
      if (getRepeatedNestedEnumList().size() > 0) {
        output.writeUInt32NoTag(410);
        output.writeUInt32NoTag(repeatedNestedEnumMemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedNestedEnum_.size(); i++) {
        output.writeEnumNoTag(repeatedNestedEnum_.get(i));
      }
      if (getRepeatedForeignEnumList().size() > 0) {
        output.writeUInt32NoTag(418);
        output.writeUInt32NoTag(repeatedForeignEnumMemoizedSerializedSize);
      }
      for (int i = 0; i < repeatedForeignEnum_.size(); i++) {
        output.writeEnumNoTag(repeatedForeignEnum_.get(i));
      }
      com.google.protobuf.GeneratedMessageV3.serializeIntegerMapTo(
          output, internalGetMapInt32Int32(), MapInt32Int32DefaultEntryHolder.defaultEntry, 56);
      com.google.protobuf.GeneratedMessageV3.serializeLongMapTo(
          output, internalGetMapInt64Int64(), MapInt64Int64DefaultEntryHolder.defaultEntry, 57);
      com.google.protobuf.GeneratedMessageV3.serializeIntegerMapTo(
          output, internalGetMapUint32Uint32(), MapUint32Uint32DefaultEntryHolder.defaultEntry, 58);
      com.google.protobuf.GeneratedMessageV3.serializeLongMapTo(
          output, internalGetMapUint64Uint64(), MapUint64Uint64DefaultEntryHolder.defaultEntry, 59);
      com.google.protobuf.GeneratedMessageV3.serializeIntegerMapTo(
          output, internalGetMapSint32Sint32(), MapSint32Sint32DefaultEntryHolder.defaultEntry, 60);
      com.google.protobuf.GeneratedMessageV3.serializeLongMapTo(
          output, internalGetMapSint64Sint64(), MapSint64Sint64DefaultEntryHolder.defaultEntry, 61);
      com.google.protobuf.GeneratedMessageV3.serializeIntegerMapTo(
          output,
          internalGetMapFixed32Fixed32(),
          MapFixed32Fixed32DefaultEntryHolder.defaultEntry,
          62);
      com.google.protobuf.GeneratedMessageV3.serializeLongMapTo(
          output,
          internalGetMapFixed64Fixed64(),
          MapFixed64Fixed64DefaultEntryHolder.defaultEntry,
          63);
      com.google.protobuf.GeneratedMessageV3.serializeIntegerMapTo(
          output,
          internalGetMapSfixed32Sfixed32(),
          MapSfixed32Sfixed32DefaultEntryHolder.defaultEntry,
          64);
      com.google.protobuf.GeneratedMessageV3.serializeLongMapTo(
          output,
          internalGetMapSfixed64Sfixed64(),
          MapSfixed64Sfixed64DefaultEntryHolder.defaultEntry,
          65);
      com.google.protobuf.GeneratedMessageV3.serializeIntegerMapTo(
          output, internalGetMapInt32Float(), MapInt32FloatDefaultEntryHolder.defaultEntry, 66);
      com.google.protobuf.GeneratedMessageV3.serializeIntegerMapTo(
          output, internalGetMapInt32Double(), MapInt32DoubleDefaultEntryHolder.defaultEntry, 67);
      com.google.protobuf.GeneratedMessageV3.serializeBooleanMapTo(
          output, internalGetMapBoolBool(), MapBoolBoolDefaultEntryHolder.defaultEntry, 68);
      com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
          output, internalGetMapStringString(), MapStringStringDefaultEntryHolder.defaultEntry, 69);
      com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
          output, internalGetMapStringBytes(), MapStringBytesDefaultEntryHolder.defaultEntry, 70);
      com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
          output,
          internalGetMapStringNestedMessage(),
          MapStringNestedMessageDefaultEntryHolder.defaultEntry,
          71);
      com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
          output,
          internalGetMapStringForeignMessage(),
          MapStringForeignMessageDefaultEntryHolder.defaultEntry,
          72);
      com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
          output,
          internalGetMapStringNestedEnum(),
          MapStringNestedEnumDefaultEntryHolder.defaultEntry,
          73);
      com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
          output,
          internalGetMapStringForeignEnum(),
          MapStringForeignEnumDefaultEntryHolder.defaultEntry,
          74);
      if (getPackedInt32List().size() > 0) {
        output.writeUInt32NoTag(602);
        output.writeUInt32NoTag(packedInt32MemoizedSerializedSize);
      }
      for (int i = 0; i < packedInt32_.size(); i++) {
        output.writeInt32NoTag(packedInt32_.getInt(i));
      }
      if (getPackedInt64List().size() > 0) {
        output.writeUInt32NoTag(610);
        output.writeUInt32NoTag(packedInt64MemoizedSerializedSize);
      }
      for (int i = 0; i < packedInt64_.size(); i++) {
        output.writeInt64NoTag(packedInt64_.getLong(i));
      }
      if (getPackedUint32List().size() > 0) {
        output.writeUInt32NoTag(618);
        output.writeUInt32NoTag(packedUint32MemoizedSerializedSize);
      }
      for (int i = 0; i < packedUint32_.size(); i++) {
        output.writeUInt32NoTag(packedUint32_.getInt(i));
      }
      if (getPackedUint64List().size() > 0) {
        output.writeUInt32NoTag(626);
        output.writeUInt32NoTag(packedUint64MemoizedSerializedSize);
      }
      for (int i = 0; i < packedUint64_.size(); i++) {
        output.writeUInt64NoTag(packedUint64_.getLong(i));
      }
      if (getPackedSint32List().size() > 0) {
        output.writeUInt32NoTag(634);
        output.writeUInt32NoTag(packedSint32MemoizedSerializedSize);
      }
      for (int i = 0; i < packedSint32_.size(); i++) {
        output.writeSInt32NoTag(packedSint32_.getInt(i));
      }
      if (getPackedSint64List().size() > 0) {
        output.writeUInt32NoTag(642);
        output.writeUInt32NoTag(packedSint64MemoizedSerializedSize);
      }
      for (int i = 0; i < packedSint64_.size(); i++) {
        output.writeSInt64NoTag(packedSint64_.getLong(i));
      }
      if (getPackedFixed32List().size() > 0) {
        output.writeUInt32NoTag(650);
        output.writeUInt32NoTag(packedFixed32MemoizedSerializedSize);
      }
      for (int i = 0; i < packedFixed32_.size(); i++) {
        output.writeFixed32NoTag(packedFixed32_.getInt(i));
      }
      if (getPackedFixed64List().size() > 0) {
        output.writeUInt32NoTag(658);
        output.writeUInt32NoTag(packedFixed64MemoizedSerializedSize);
      }
      for (int i = 0; i < packedFixed64_.size(); i++) {
        output.writeFixed64NoTag(packedFixed64_.getLong(i));
      }
      if (getPackedSfixed32List().size() > 0) {
        output.writeUInt32NoTag(666);
        output.writeUInt32NoTag(packedSfixed32MemoizedSerializedSize);
      }
      for (int i = 0; i < packedSfixed32_.size(); i++) {
        output.writeSFixed32NoTag(packedSfixed32_.getInt(i));
      }
      if (getPackedSfixed64List().size() > 0) {
        output.writeUInt32NoTag(674);
        output.writeUInt32NoTag(packedSfixed64MemoizedSerializedSize);
      }
      for (int i = 0; i < packedSfixed64_.size(); i++) {
        output.writeSFixed64NoTag(packedSfixed64_.getLong(i));
      }
      if (getPackedFloatList().size() > 0) {
        output.writeUInt32NoTag(682);
        output.writeUInt32NoTag(packedFloatMemoizedSerializedSize);
      }
      for (int i = 0; i < packedFloat_.size(); i++) {
        output.writeFloatNoTag(packedFloat_.getFloat(i));
      }
      if (getPackedDoubleList().size() > 0) {
        output.writeUInt32NoTag(690);
        output.writeUInt32NoTag(packedDoubleMemoizedSerializedSize);
      }
      for (int i = 0; i < packedDouble_.size(); i++) {
        output.writeDoubleNoTag(packedDouble_.getDouble(i));
      }
      if (getPackedBoolList().size() > 0) {
        output.writeUInt32NoTag(698);
        output.writeUInt32NoTag(packedBoolMemoizedSerializedSize);
      }
      for (int i = 0; i < packedBool_.size(); i++) {
        output.writeBoolNoTag(packedBool_.getBoolean(i));
      }
      if (getPackedNestedEnumList().size() > 0) {
        output.writeUInt32NoTag(706);
        output.writeUInt32NoTag(packedNestedEnumMemoizedSerializedSize);
      }
      for (int i = 0; i < packedNestedEnum_.size(); i++) {
        output.writeEnumNoTag(packedNestedEnum_.get(i));
      }
      for (int i = 0; i < unpackedInt32_.size(); i++) {
        output.writeInt32(89, unpackedInt32_.getInt(i));
      }
      for (int i = 0; i < unpackedInt64_.size(); i++) {
        output.writeInt64(90, unpackedInt64_.getLong(i));
      }
      for (int i = 0; i < unpackedUint32_.size(); i++) {
        output.writeUInt32(91, unpackedUint32_.getInt(i));
      }
      for (int i = 0; i < unpackedUint64_.size(); i++) {
        output.writeUInt64(92, unpackedUint64_.getLong(i));
      }
      for (int i = 0; i < unpackedSint32_.size(); i++) {
        output.writeSInt32(93, unpackedSint32_.getInt(i));
      }
      for (int i = 0; i < unpackedSint64_.size(); i++) {
        output.writeSInt64(94, unpackedSint64_.getLong(i));
      }
      for (int i = 0; i < unpackedFixed32_.size(); i++) {
        output.writeFixed32(95, unpackedFixed32_.getInt(i));
      }
      for (int i = 0; i < unpackedFixed64_.size(); i++) {
        output.writeFixed64(96, unpackedFixed64_.getLong(i));
      }
      for (int i = 0; i < unpackedSfixed32_.size(); i++) {
        output.writeSFixed32(97, unpackedSfixed32_.getInt(i));
      }
      for (int i = 0; i < unpackedSfixed64_.size(); i++) {
        output.writeSFixed64(98, unpackedSfixed64_.getLong(i));
      }
      for (int i = 0; i < unpackedFloat_.size(); i++) {
        output.writeFloat(99, unpackedFloat_.getFloat(i));
      }
      for (int i = 0; i < unpackedDouble_.size(); i++) {
        output.writeDouble(100, unpackedDouble_.getDouble(i));
      }
      for (int i = 0; i < unpackedBool_.size(); i++) {
        output.writeBool(101, unpackedBool_.getBoolean(i));
      }
      for (int i = 0; i < unpackedNestedEnum_.size(); i++) {
        output.writeEnum(102, unpackedNestedEnum_.get(i));
      }
      if (oneofFieldCase_ == 111) {
        output.writeUInt32(111, (int) ((java.lang.Integer) oneofField_));
      }
      if (oneofFieldCase_ == 112) {
        output.writeMessage(
            112,
            (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage)
                oneofField_);
      }
      if (oneofFieldCase_ == 113) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 113, oneofField_);
      }
      if (oneofFieldCase_ == 114) {
        output.writeBytes(114, (com.google.protobuf.ByteString) oneofField_);
      }
      if (oneofFieldCase_ == 115) {
        output.writeBool(115, (boolean) ((java.lang.Boolean) oneofField_));
      }
      if (oneofFieldCase_ == 116) {
        output.writeUInt64(116, (long) ((java.lang.Long) oneofField_));
      }
      if (oneofFieldCase_ == 117) {
        output.writeFloat(117, (float) ((java.lang.Float) oneofField_));
      }
      if (oneofFieldCase_ == 118) {
        output.writeDouble(118, (double) ((java.lang.Double) oneofField_));
      }
      if (oneofFieldCase_ == 119) {
        output.writeEnum(119, ((java.lang.Integer) oneofField_));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (optionalInt32_ != 0) {
        size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, optionalInt32_);
      }
      if (optionalInt64_ != 0L) {
        size += com.google.protobuf.CodedOutputStream.computeInt64Size(2, optionalInt64_);
      }
      if (optionalUint32_ != 0) {
        size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, optionalUint32_);
      }
      if (optionalUint64_ != 0L) {
        size += com.google.protobuf.CodedOutputStream.computeUInt64Size(4, optionalUint64_);
      }
      if (optionalSint32_ != 0) {
        size += com.google.protobuf.CodedOutputStream.computeSInt32Size(5, optionalSint32_);
      }
      if (optionalSint64_ != 0L) {
        size += com.google.protobuf.CodedOutputStream.computeSInt64Size(6, optionalSint64_);
      }
      if (optionalFixed32_ != 0) {
        size += com.google.protobuf.CodedOutputStream.computeFixed32Size(7, optionalFixed32_);
      }
      if (optionalFixed64_ != 0L) {
        size += com.google.protobuf.CodedOutputStream.computeFixed64Size(8, optionalFixed64_);
      }
      if (optionalSfixed32_ != 0) {
        size += com.google.protobuf.CodedOutputStream.computeSFixed32Size(9, optionalSfixed32_);
      }
      if (optionalSfixed64_ != 0L) {
        size += com.google.protobuf.CodedOutputStream.computeSFixed64Size(10, optionalSfixed64_);
      }
      if (java.lang.Float.floatToRawIntBits(optionalFloat_) != 0) {
        size += com.google.protobuf.CodedOutputStream.computeFloatSize(11, optionalFloat_);
      }
      if (java.lang.Double.doubleToRawLongBits(optionalDouble_) != 0) {
        size += com.google.protobuf.CodedOutputStream.computeDoubleSize(12, optionalDouble_);
      }
      if (optionalBool_ != false) {
        size += com.google.protobuf.CodedOutputStream.computeBoolSize(13, optionalBool_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(optionalString_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, optionalString_);
      }
      if (!optionalBytes_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream.computeBytesSize(15, optionalBytes_);
      }
      if (optionalNestedMessage_ != null) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(
                18, getOptionalNestedMessage());
      }
      if (optionalForeignMessage_ != null) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(
                19, getOptionalForeignMessage());
      }
      if (optionalNestedEnum_
          != legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum.FOO
              .getNumber()) {
        size += com.google.protobuf.CodedOutputStream.computeEnumSize(21, optionalNestedEnum_);
      }
      if (optionalForeignEnum_
          != legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum.FOREIGN_FOO
              .getNumber()) {
        size += com.google.protobuf.CodedOutputStream.computeEnumSize(22, optionalForeignEnum_);
      }
      if (optionalAliasedEnum_
          != legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.AliasedEnum
              .ALIAS_FOO
              .getNumber()) {
        size += com.google.protobuf.CodedOutputStream.computeEnumSize(23, optionalAliasedEnum_);
      }
      if (recursiveMessage_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(27, getRecursiveMessage());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeatedInt32_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(repeatedInt32_.getInt(i));
        }
        size += dataSize;
        if (!getRepeatedInt32List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        repeatedInt32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeatedInt64_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeInt64SizeNoTag(
                  repeatedInt64_.getLong(i));
        }
        size += dataSize;
        if (!getRepeatedInt64List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        repeatedInt64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeatedUint32_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(
                  repeatedUint32_.getInt(i));
        }
        size += dataSize;
        if (!getRepeatedUint32List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        repeatedUint32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeatedUint64_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeUInt64SizeNoTag(
                  repeatedUint64_.getLong(i));
        }
        size += dataSize;
        if (!getRepeatedUint64List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        repeatedUint64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeatedSint32_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeSInt32SizeNoTag(
                  repeatedSint32_.getInt(i));
        }
        size += dataSize;
        if (!getRepeatedSint32List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        repeatedSint32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeatedSint64_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeSInt64SizeNoTag(
                  repeatedSint64_.getLong(i));
        }
        size += dataSize;
        if (!getRepeatedSint64List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        repeatedSint64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getRepeatedFixed32List().size();
        size += dataSize;
        if (!getRepeatedFixed32List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        repeatedFixed32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getRepeatedFixed64List().size();
        size += dataSize;
        if (!getRepeatedFixed64List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        repeatedFixed64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getRepeatedSfixed32List().size();
        size += dataSize;
        if (!getRepeatedSfixed32List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        repeatedSfixed32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getRepeatedSfixed64List().size();
        size += dataSize;
        if (!getRepeatedSfixed64List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        repeatedSfixed64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getRepeatedFloatList().size();
        size += dataSize;
        if (!getRepeatedFloatList().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        repeatedFloatMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getRepeatedDoubleList().size();
        size += dataSize;
        if (!getRepeatedDoubleList().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        repeatedDoubleMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 1 * getRepeatedBoolList().size();
        size += dataSize;
        if (!getRepeatedBoolList().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        repeatedBoolMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeatedString_.size(); i++) {
          dataSize += computeStringSizeNoTag(repeatedString_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getRepeatedStringList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeatedBytes_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeBytesSizeNoTag(repeatedBytes_.get(i));
        }
        size += dataSize;
        size += 2 * getRepeatedBytesList().size();
      }
      for (int i = 0; i < repeatedNestedMessage_.size(); i++) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(
                48, repeatedNestedMessage_.get(i));
      }
      for (int i = 0; i < repeatedForeignMessage_.size(); i++) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(
                49, repeatedForeignMessage_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeatedNestedEnum_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeEnumSizeNoTag(
                  repeatedNestedEnum_.get(i));
        }
        size += dataSize;
        if (!getRepeatedNestedEnumList().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(dataSize);
        }
        repeatedNestedEnumMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeatedForeignEnum_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeEnumSizeNoTag(
                  repeatedForeignEnum_.get(i));
        }
        size += dataSize;
        if (!getRepeatedForeignEnumList().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(dataSize);
        }
        repeatedForeignEnumMemoizedSerializedSize = dataSize;
      }
      for (java.util.Map.Entry<java.lang.Integer, java.lang.Integer> entry :
          internalGetMapInt32Int32().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer> mapInt32Int32__ =
            MapInt32Int32DefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(56, mapInt32Int32__);
      }
      for (java.util.Map.Entry<java.lang.Long, java.lang.Long> entry :
          internalGetMapInt64Int64().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> mapInt64Int64__ =
            MapInt64Int64DefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(57, mapInt64Int64__);
      }
      for (java.util.Map.Entry<java.lang.Integer, java.lang.Integer> entry :
          internalGetMapUint32Uint32().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer> mapUint32Uint32__ =
            MapUint32Uint32DefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(58, mapUint32Uint32__);
      }
      for (java.util.Map.Entry<java.lang.Long, java.lang.Long> entry :
          internalGetMapUint64Uint64().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> mapUint64Uint64__ =
            MapUint64Uint64DefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(59, mapUint64Uint64__);
      }
      for (java.util.Map.Entry<java.lang.Integer, java.lang.Integer> entry :
          internalGetMapSint32Sint32().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer> mapSint32Sint32__ =
            MapSint32Sint32DefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(60, mapSint32Sint32__);
      }
      for (java.util.Map.Entry<java.lang.Long, java.lang.Long> entry :
          internalGetMapSint64Sint64().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> mapSint64Sint64__ =
            MapSint64Sint64DefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(61, mapSint64Sint64__);
      }
      for (java.util.Map.Entry<java.lang.Integer, java.lang.Integer> entry :
          internalGetMapFixed32Fixed32().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer> mapFixed32Fixed32__ =
            MapFixed32Fixed32DefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(62, mapFixed32Fixed32__);
      }
      for (java.util.Map.Entry<java.lang.Long, java.lang.Long> entry :
          internalGetMapFixed64Fixed64().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> mapFixed64Fixed64__ =
            MapFixed64Fixed64DefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(63, mapFixed64Fixed64__);
      }
      for (java.util.Map.Entry<java.lang.Integer, java.lang.Integer> entry :
          internalGetMapSfixed32Sfixed32().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer> mapSfixed32Sfixed32__ =
            MapSfixed32Sfixed32DefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(64, mapSfixed32Sfixed32__);
      }
      for (java.util.Map.Entry<java.lang.Long, java.lang.Long> entry :
          internalGetMapSfixed64Sfixed64().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> mapSfixed64Sfixed64__ =
            MapSfixed64Sfixed64DefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(65, mapSfixed64Sfixed64__);
      }
      for (java.util.Map.Entry<java.lang.Integer, java.lang.Float> entry :
          internalGetMapInt32Float().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Float> mapInt32Float__ =
            MapInt32FloatDefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(66, mapInt32Float__);
      }
      for (java.util.Map.Entry<java.lang.Integer, java.lang.Double> entry :
          internalGetMapInt32Double().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Double> mapInt32Double__ =
            MapInt32DoubleDefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(67, mapInt32Double__);
      }
      for (java.util.Map.Entry<java.lang.Boolean, java.lang.Boolean> entry :
          internalGetMapBoolBool().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Boolean, java.lang.Boolean> mapBoolBool__ =
            MapBoolBoolDefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(68, mapBoolBool__);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry :
          internalGetMapStringString().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String> mapStringString__ =
            MapStringStringDefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(69, mapStringString__);
      }
      for (java.util.Map.Entry<java.lang.String, com.google.protobuf.ByteString> entry :
          internalGetMapStringBytes().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.ByteString>
            mapStringBytes__ =
                MapStringBytesDefaultEntryHolder.defaultEntry
                    .newBuilderForType()
                    .setKey(entry.getKey())
                    .setValue(entry.getValue())
                    .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(70, mapStringBytes__);
      }
      for (java.util.Map.Entry<
              java.lang.String,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
          entry : internalGetMapStringNestedMessage().getMap().entrySet()) {
        com.google.protobuf.MapEntry<
                java.lang.String,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
            mapStringNestedMessage__ =
                MapStringNestedMessageDefaultEntryHolder.defaultEntry
                    .newBuilderForType()
                    .setKey(entry.getKey())
                    .setValue(entry.getValue())
                    .build();
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(71, mapStringNestedMessage__);
      }
      for (java.util.Map.Entry<
              java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
          entry : internalGetMapStringForeignMessage().getMap().entrySet()) {
        com.google.protobuf.MapEntry<
                java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
            mapStringForeignMessage__ =
                MapStringForeignMessageDefaultEntryHolder.defaultEntry
                    .newBuilderForType()
                    .setKey(entry.getKey())
                    .setValue(entry.getValue())
                    .build();
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(72, mapStringForeignMessage__);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.Integer> entry :
          internalGetMapStringNestedEnum().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer> mapStringNestedEnum__ =
            MapStringNestedEnumDefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(73, mapStringNestedEnum__);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.Integer> entry :
          internalGetMapStringForeignEnum().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer> mapStringForeignEnum__ =
            MapStringForeignEnumDefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(74, mapStringForeignEnum__);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < packedInt32_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(packedInt32_.getInt(i));
        }
        size += dataSize;
        if (!getPackedInt32List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        packedInt32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < packedInt64_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeInt64SizeNoTag(packedInt64_.getLong(i));
        }
        size += dataSize;
        if (!getPackedInt64List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        packedInt64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < packedUint32_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(packedUint32_.getInt(i));
        }
        size += dataSize;
        if (!getPackedUint32List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        packedUint32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < packedUint64_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeUInt64SizeNoTag(
                  packedUint64_.getLong(i));
        }
        size += dataSize;
        if (!getPackedUint64List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        packedUint64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < packedSint32_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeSInt32SizeNoTag(packedSint32_.getInt(i));
        }
        size += dataSize;
        if (!getPackedSint32List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        packedSint32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < packedSint64_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeSInt64SizeNoTag(
                  packedSint64_.getLong(i));
        }
        size += dataSize;
        if (!getPackedSint64List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        packedSint64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getPackedFixed32List().size();
        size += dataSize;
        if (!getPackedFixed32List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        packedFixed32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getPackedFixed64List().size();
        size += dataSize;
        if (!getPackedFixed64List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        packedFixed64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getPackedSfixed32List().size();
        size += dataSize;
        if (!getPackedSfixed32List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        packedSfixed32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getPackedSfixed64List().size();
        size += dataSize;
        if (!getPackedSfixed64List().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        packedSfixed64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getPackedFloatList().size();
        size += dataSize;
        if (!getPackedFloatList().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        packedFloatMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getPackedDoubleList().size();
        size += dataSize;
        if (!getPackedDoubleList().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        packedDoubleMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 1 * getPackedBoolList().size();
        size += dataSize;
        if (!getPackedBoolList().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
        }
        packedBoolMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < packedNestedEnum_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeEnumSizeNoTag(packedNestedEnum_.get(i));
        }
        size += dataSize;
        if (!getPackedNestedEnumList().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(dataSize);
        }
        packedNestedEnumMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < unpackedInt32_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(unpackedInt32_.getInt(i));
        }
        size += dataSize;
        size += 2 * getUnpackedInt32List().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < unpackedInt64_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeInt64SizeNoTag(
                  unpackedInt64_.getLong(i));
        }
        size += dataSize;
        size += 2 * getUnpackedInt64List().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < unpackedUint32_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(
                  unpackedUint32_.getInt(i));
        }
        size += dataSize;
        size += 2 * getUnpackedUint32List().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < unpackedUint64_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeUInt64SizeNoTag(
                  unpackedUint64_.getLong(i));
        }
        size += dataSize;
        size += 2 * getUnpackedUint64List().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < unpackedSint32_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeSInt32SizeNoTag(
                  unpackedSint32_.getInt(i));
        }
        size += dataSize;
        size += 2 * getUnpackedSint32List().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < unpackedSint64_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeSInt64SizeNoTag(
                  unpackedSint64_.getLong(i));
        }
        size += dataSize;
        size += 2 * getUnpackedSint64List().size();
      }
      {
        int dataSize = 0;
        dataSize = 4 * getUnpackedFixed32List().size();
        size += dataSize;
        size += 2 * getUnpackedFixed32List().size();
      }
      {
        int dataSize = 0;
        dataSize = 8 * getUnpackedFixed64List().size();
        size += dataSize;
        size += 2 * getUnpackedFixed64List().size();
      }
      {
        int dataSize = 0;
        dataSize = 4 * getUnpackedSfixed32List().size();
        size += dataSize;
        size += 2 * getUnpackedSfixed32List().size();
      }
      {
        int dataSize = 0;
        dataSize = 8 * getUnpackedSfixed64List().size();
        size += dataSize;
        size += 2 * getUnpackedSfixed64List().size();
      }
      {
        int dataSize = 0;
        dataSize = 4 * getUnpackedFloatList().size();
        size += dataSize;
        size += 2 * getUnpackedFloatList().size();
      }
      {
        int dataSize = 0;
        dataSize = 8 * getUnpackedDoubleList().size();
        size += dataSize;
        size += 2 * getUnpackedDoubleList().size();
      }
      {
        int dataSize = 0;
        dataSize = 1 * getUnpackedBoolList().size();
        size += dataSize;
        size += 2 * getUnpackedBoolList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < unpackedNestedEnum_.size(); i++) {
          dataSize +=
              com.google.protobuf.CodedOutputStream.computeEnumSizeNoTag(
                  unpackedNestedEnum_.get(i));
        }
        size += dataSize;
        size += 2 * unpackedNestedEnum_.size();
      }
      if (oneofFieldCase_ == 111) {
        size +=
            com.google.protobuf.CodedOutputStream.computeUInt32Size(
                111, (int) ((java.lang.Integer) oneofField_));
      }
      if (oneofFieldCase_ == 112) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(
                112,
                (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                        .NestedMessage)
                    oneofField_);
      }
      if (oneofFieldCase_ == 113) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(113, oneofField_);
      }
      if (oneofFieldCase_ == 114) {
        size +=
            com.google.protobuf.CodedOutputStream.computeBytesSize(
                114, (com.google.protobuf.ByteString) oneofField_);
      }
      if (oneofFieldCase_ == 115) {
        size +=
            com.google.protobuf.CodedOutputStream.computeBoolSize(
                115, (boolean) ((java.lang.Boolean) oneofField_));
      }
      if (oneofFieldCase_ == 116) {
        size +=
            com.google.protobuf.CodedOutputStream.computeUInt64Size(
                116, (long) ((java.lang.Long) oneofField_));
      }
      if (oneofFieldCase_ == 117) {
        size +=
            com.google.protobuf.CodedOutputStream.computeFloatSize(
                117, (float) ((java.lang.Float) oneofField_));
      }
      if (oneofFieldCase_ == 118) {
        size +=
            com.google.protobuf.CodedOutputStream.computeDoubleSize(
                118, (double) ((java.lang.Double) oneofField_));
      }
      if (oneofFieldCase_ == 119) {
        size +=
            com.google.protobuf.CodedOutputStream.computeEnumSize(
                119, ((java.lang.Integer) oneofField_));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3)) {
        return super.equals(obj);
      }
      legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 other =
          (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3) obj;

      if (getOptionalInt32() != other.getOptionalInt32()) return false;
      if (getOptionalInt64() != other.getOptionalInt64()) return false;
      if (getOptionalUint32() != other.getOptionalUint32()) return false;
      if (getOptionalUint64() != other.getOptionalUint64()) return false;
      if (getOptionalSint32() != other.getOptionalSint32()) return false;
      if (getOptionalSint64() != other.getOptionalSint64()) return false;
      if (getOptionalFixed32() != other.getOptionalFixed32()) return false;
      if (getOptionalFixed64() != other.getOptionalFixed64()) return false;
      if (getOptionalSfixed32() != other.getOptionalSfixed32()) return false;
      if (getOptionalSfixed64() != other.getOptionalSfixed64()) return false;
      if (java.lang.Float.floatToIntBits(getOptionalFloat())
          != java.lang.Float.floatToIntBits(other.getOptionalFloat())) return false;
      if (java.lang.Double.doubleToLongBits(getOptionalDouble())
          != java.lang.Double.doubleToLongBits(other.getOptionalDouble())) return false;
      if (getOptionalBool() != other.getOptionalBool()) return false;
      if (!getOptionalString().equals(other.getOptionalString())) return false;
      if (!getOptionalBytes().equals(other.getOptionalBytes())) return false;
      if (hasOptionalNestedMessage() != other.hasOptionalNestedMessage()) return false;
      if (hasOptionalNestedMessage()) {
        if (!getOptionalNestedMessage().equals(other.getOptionalNestedMessage())) return false;
      }
      if (hasOptionalForeignMessage() != other.hasOptionalForeignMessage()) return false;
      if (hasOptionalForeignMessage()) {
        if (!getOptionalForeignMessage().equals(other.getOptionalForeignMessage())) return false;
      }
      if (optionalNestedEnum_ != other.optionalNestedEnum_) return false;
      if (optionalForeignEnum_ != other.optionalForeignEnum_) return false;
      if (optionalAliasedEnum_ != other.optionalAliasedEnum_) return false;
      if (hasRecursiveMessage() != other.hasRecursiveMessage()) return false;
      if (hasRecursiveMessage()) {
        if (!getRecursiveMessage().equals(other.getRecursiveMessage())) return false;
      }
      if (!getRepeatedInt32List().equals(other.getRepeatedInt32List())) return false;
      if (!getRepeatedInt64List().equals(other.getRepeatedInt64List())) return false;
      if (!getRepeatedUint32List().equals(other.getRepeatedUint32List())) return false;
      if (!getRepeatedUint64List().equals(other.getRepeatedUint64List())) return false;
      if (!getRepeatedSint32List().equals(other.getRepeatedSint32List())) return false;
      if (!getRepeatedSint64List().equals(other.getRepeatedSint64List())) return false;
      if (!getRepeatedFixed32List().equals(other.getRepeatedFixed32List())) return false;
      if (!getRepeatedFixed64List().equals(other.getRepeatedFixed64List())) return false;
      if (!getRepeatedSfixed32List().equals(other.getRepeatedSfixed32List())) return false;
      if (!getRepeatedSfixed64List().equals(other.getRepeatedSfixed64List())) return false;
      if (!getRepeatedFloatList().equals(other.getRepeatedFloatList())) return false;
      if (!getRepeatedDoubleList().equals(other.getRepeatedDoubleList())) return false;
      if (!getRepeatedBoolList().equals(other.getRepeatedBoolList())) return false;
      if (!getRepeatedStringList().equals(other.getRepeatedStringList())) return false;
      if (!getRepeatedBytesList().equals(other.getRepeatedBytesList())) return false;
      if (!getRepeatedNestedMessageList().equals(other.getRepeatedNestedMessageList()))
        return false;
      if (!getRepeatedForeignMessageList().equals(other.getRepeatedForeignMessageList()))
        return false;
      if (!repeatedNestedEnum_.equals(other.repeatedNestedEnum_)) return false;
      if (!repeatedForeignEnum_.equals(other.repeatedForeignEnum_)) return false;
      if (!getPackedInt32List().equals(other.getPackedInt32List())) return false;
      if (!getPackedInt64List().equals(other.getPackedInt64List())) return false;
      if (!getPackedUint32List().equals(other.getPackedUint32List())) return false;
      if (!getPackedUint64List().equals(other.getPackedUint64List())) return false;
      if (!getPackedSint32List().equals(other.getPackedSint32List())) return false;
      if (!getPackedSint64List().equals(other.getPackedSint64List())) return false;
      if (!getPackedFixed32List().equals(other.getPackedFixed32List())) return false;
      if (!getPackedFixed64List().equals(other.getPackedFixed64List())) return false;
      if (!getPackedSfixed32List().equals(other.getPackedSfixed32List())) return false;
      if (!getPackedSfixed64List().equals(other.getPackedSfixed64List())) return false;
      if (!getPackedFloatList().equals(other.getPackedFloatList())) return false;
      if (!getPackedDoubleList().equals(other.getPackedDoubleList())) return false;
      if (!getPackedBoolList().equals(other.getPackedBoolList())) return false;
      if (!packedNestedEnum_.equals(other.packedNestedEnum_)) return false;
      if (!getUnpackedInt32List().equals(other.getUnpackedInt32List())) return false;
      if (!getUnpackedInt64List().equals(other.getUnpackedInt64List())) return false;
      if (!getUnpackedUint32List().equals(other.getUnpackedUint32List())) return false;
      if (!getUnpackedUint64List().equals(other.getUnpackedUint64List())) return false;
      if (!getUnpackedSint32List().equals(other.getUnpackedSint32List())) return false;
      if (!getUnpackedSint64List().equals(other.getUnpackedSint64List())) return false;
      if (!getUnpackedFixed32List().equals(other.getUnpackedFixed32List())) return false;
      if (!getUnpackedFixed64List().equals(other.getUnpackedFixed64List())) return false;
      if (!getUnpackedSfixed32List().equals(other.getUnpackedSfixed32List())) return false;
      if (!getUnpackedSfixed64List().equals(other.getUnpackedSfixed64List())) return false;
      if (!getUnpackedFloatList().equals(other.getUnpackedFloatList())) return false;
      if (!getUnpackedDoubleList().equals(other.getUnpackedDoubleList())) return false;
      if (!getUnpackedBoolList().equals(other.getUnpackedBoolList())) return false;
      if (!unpackedNestedEnum_.equals(other.unpackedNestedEnum_)) return false;
      if (!internalGetMapInt32Int32().equals(other.internalGetMapInt32Int32())) return false;
      if (!internalGetMapInt64Int64().equals(other.internalGetMapInt64Int64())) return false;
      if (!internalGetMapUint32Uint32().equals(other.internalGetMapUint32Uint32())) return false;
      if (!internalGetMapUint64Uint64().equals(other.internalGetMapUint64Uint64())) return false;
      if (!internalGetMapSint32Sint32().equals(other.internalGetMapSint32Sint32())) return false;
      if (!internalGetMapSint64Sint64().equals(other.internalGetMapSint64Sint64())) return false;
      if (!internalGetMapFixed32Fixed32().equals(other.internalGetMapFixed32Fixed32()))
        return false;
      if (!internalGetMapFixed64Fixed64().equals(other.internalGetMapFixed64Fixed64()))
        return false;
      if (!internalGetMapSfixed32Sfixed32().equals(other.internalGetMapSfixed32Sfixed32()))
        return false;
      if (!internalGetMapSfixed64Sfixed64().equals(other.internalGetMapSfixed64Sfixed64()))
        return false;
      if (!internalGetMapInt32Float().equals(other.internalGetMapInt32Float())) return false;
      if (!internalGetMapInt32Double().equals(other.internalGetMapInt32Double())) return false;
      if (!internalGetMapBoolBool().equals(other.internalGetMapBoolBool())) return false;
      if (!internalGetMapStringString().equals(other.internalGetMapStringString())) return false;
      if (!internalGetMapStringBytes().equals(other.internalGetMapStringBytes())) return false;
      if (!internalGetMapStringNestedMessage().equals(other.internalGetMapStringNestedMessage()))
        return false;
      if (!internalGetMapStringForeignMessage().equals(other.internalGetMapStringForeignMessage()))
        return false;
      if (!internalGetMapStringNestedEnum().equals(other.internalGetMapStringNestedEnum()))
        return false;
      if (!internalGetMapStringForeignEnum().equals(other.internalGetMapStringForeignEnum()))
        return false;
      if (!getOneofFieldCase().equals(other.getOneofFieldCase())) return false;
      switch (oneofFieldCase_) {
        case 111:
          if (getOneofUint32() != other.getOneofUint32()) return false;
          break;
        case 112:
          if (!getOneofNestedMessage().equals(other.getOneofNestedMessage())) return false;
          break;
        case 113:
          if (!getOneofString().equals(other.getOneofString())) return false;
          break;
        case 114:
          if (!getOneofBytes().equals(other.getOneofBytes())) return false;
          break;
        case 115:
          if (getOneofBool() != other.getOneofBool()) return false;
          break;
        case 116:
          if (getOneofUint64() != other.getOneofUint64()) return false;
          break;
        case 117:
          if (java.lang.Float.floatToIntBits(getOneofFloat())
              != java.lang.Float.floatToIntBits(other.getOneofFloat())) return false;
          break;
        case 118:
          if (java.lang.Double.doubleToLongBits(getOneofDouble())
              != java.lang.Double.doubleToLongBits(other.getOneofDouble())) return false;
          break;
        case 119:
          if (getOneofEnumValue() != other.getOneofEnumValue()) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + OPTIONAL_INT32_FIELD_NUMBER;
      hash = (53 * hash) + getOptionalInt32();
      hash = (37 * hash) + OPTIONAL_INT64_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getOptionalInt64());
      hash = (37 * hash) + OPTIONAL_UINT32_FIELD_NUMBER;
      hash = (53 * hash) + getOptionalUint32();
      hash = (37 * hash) + OPTIONAL_UINT64_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getOptionalUint64());
      hash = (37 * hash) + OPTIONAL_SINT32_FIELD_NUMBER;
      hash = (53 * hash) + getOptionalSint32();
      hash = (37 * hash) + OPTIONAL_SINT64_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getOptionalSint64());
      hash = (37 * hash) + OPTIONAL_FIXED32_FIELD_NUMBER;
      hash = (53 * hash) + getOptionalFixed32();
      hash = (37 * hash) + OPTIONAL_FIXED64_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getOptionalFixed64());
      hash = (37 * hash) + OPTIONAL_SFIXED32_FIELD_NUMBER;
      hash = (53 * hash) + getOptionalSfixed32();
      hash = (37 * hash) + OPTIONAL_SFIXED64_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getOptionalSfixed64());
      hash = (37 * hash) + OPTIONAL_FLOAT_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(getOptionalFloat());
      hash = (37 * hash) + OPTIONAL_DOUBLE_FIELD_NUMBER;
      hash =
          (53 * hash)
              + com.google.protobuf.Internal.hashLong(
                  java.lang.Double.doubleToLongBits(getOptionalDouble()));
      hash = (37 * hash) + OPTIONAL_BOOL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getOptionalBool());
      hash = (37 * hash) + OPTIONAL_STRING_FIELD_NUMBER;
      hash = (53 * hash) + getOptionalString().hashCode();
      hash = (37 * hash) + OPTIONAL_BYTES_FIELD_NUMBER;
      hash = (53 * hash) + getOptionalBytes().hashCode();
      if (hasOptionalNestedMessage()) {
        hash = (37 * hash) + OPTIONAL_NESTED_MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getOptionalNestedMessage().hashCode();
      }
      if (hasOptionalForeignMessage()) {
        hash = (37 * hash) + OPTIONAL_FOREIGN_MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getOptionalForeignMessage().hashCode();
      }
      hash = (37 * hash) + OPTIONAL_NESTED_ENUM_FIELD_NUMBER;
      hash = (53 * hash) + optionalNestedEnum_;
      hash = (37 * hash) + OPTIONAL_FOREIGN_ENUM_FIELD_NUMBER;
      hash = (53 * hash) + optionalForeignEnum_;
      hash = (37 * hash) + OPTIONAL_ALIASED_ENUM_FIELD_NUMBER;
      hash = (53 * hash) + optionalAliasedEnum_;
      if (hasRecursiveMessage()) {
        hash = (37 * hash) + RECURSIVE_MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getRecursiveMessage().hashCode();
      }
      if (getRepeatedInt32Count() > 0) {
        hash = (37 * hash) + REPEATED_INT32_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedInt32List().hashCode();
      }
      if (getRepeatedInt64Count() > 0) {
        hash = (37 * hash) + REPEATED_INT64_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedInt64List().hashCode();
      }
      if (getRepeatedUint32Count() > 0) {
        hash = (37 * hash) + REPEATED_UINT32_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedUint32List().hashCode();
      }
      if (getRepeatedUint64Count() > 0) {
        hash = (37 * hash) + REPEATED_UINT64_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedUint64List().hashCode();
      }
      if (getRepeatedSint32Count() > 0) {
        hash = (37 * hash) + REPEATED_SINT32_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedSint32List().hashCode();
      }
      if (getRepeatedSint64Count() > 0) {
        hash = (37 * hash) + REPEATED_SINT64_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedSint64List().hashCode();
      }
      if (getRepeatedFixed32Count() > 0) {
        hash = (37 * hash) + REPEATED_FIXED32_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedFixed32List().hashCode();
      }
      if (getRepeatedFixed64Count() > 0) {
        hash = (37 * hash) + REPEATED_FIXED64_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedFixed64List().hashCode();
      }
      if (getRepeatedSfixed32Count() > 0) {
        hash = (37 * hash) + REPEATED_SFIXED32_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedSfixed32List().hashCode();
      }
      if (getRepeatedSfixed64Count() > 0) {
        hash = (37 * hash) + REPEATED_SFIXED64_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedSfixed64List().hashCode();
      }
      if (getRepeatedFloatCount() > 0) {
        hash = (37 * hash) + REPEATED_FLOAT_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedFloatList().hashCode();
      }
      if (getRepeatedDoubleCount() > 0) {
        hash = (37 * hash) + REPEATED_DOUBLE_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedDoubleList().hashCode();
      }
      if (getRepeatedBoolCount() > 0) {
        hash = (37 * hash) + REPEATED_BOOL_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedBoolList().hashCode();
      }
      if (getRepeatedStringCount() > 0) {
        hash = (37 * hash) + REPEATED_STRING_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedStringList().hashCode();
      }
      if (getRepeatedBytesCount() > 0) {
        hash = (37 * hash) + REPEATED_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedBytesList().hashCode();
      }
      if (getRepeatedNestedMessageCount() > 0) {
        hash = (37 * hash) + REPEATED_NESTED_MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedNestedMessageList().hashCode();
      }
      if (getRepeatedForeignMessageCount() > 0) {
        hash = (37 * hash) + REPEATED_FOREIGN_MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedForeignMessageList().hashCode();
      }
      if (getRepeatedNestedEnumCount() > 0) {
        hash = (37 * hash) + REPEATED_NESTED_ENUM_FIELD_NUMBER;
        hash = (53 * hash) + repeatedNestedEnum_.hashCode();
      }
      if (getRepeatedForeignEnumCount() > 0) {
        hash = (37 * hash) + REPEATED_FOREIGN_ENUM_FIELD_NUMBER;
        hash = (53 * hash) + repeatedForeignEnum_.hashCode();
      }
      if (getPackedInt32Count() > 0) {
        hash = (37 * hash) + PACKED_INT32_FIELD_NUMBER;
        hash = (53 * hash) + getPackedInt32List().hashCode();
      }
      if (getPackedInt64Count() > 0) {
        hash = (37 * hash) + PACKED_INT64_FIELD_NUMBER;
        hash = (53 * hash) + getPackedInt64List().hashCode();
      }
      if (getPackedUint32Count() > 0) {
        hash = (37 * hash) + PACKED_UINT32_FIELD_NUMBER;
        hash = (53 * hash) + getPackedUint32List().hashCode();
      }
      if (getPackedUint64Count() > 0) {
        hash = (37 * hash) + PACKED_UINT64_FIELD_NUMBER;
        hash = (53 * hash) + getPackedUint64List().hashCode();
      }
      if (getPackedSint32Count() > 0) {
        hash = (37 * hash) + PACKED_SINT32_FIELD_NUMBER;
        hash = (53 * hash) + getPackedSint32List().hashCode();
      }
      if (getPackedSint64Count() > 0) {
        hash = (37 * hash) + PACKED_SINT64_FIELD_NUMBER;
        hash = (53 * hash) + getPackedSint64List().hashCode();
      }
      if (getPackedFixed32Count() > 0) {
        hash = (37 * hash) + PACKED_FIXED32_FIELD_NUMBER;
        hash = (53 * hash) + getPackedFixed32List().hashCode();
      }
      if (getPackedFixed64Count() > 0) {
        hash = (37 * hash) + PACKED_FIXED64_FIELD_NUMBER;
        hash = (53 * hash) + getPackedFixed64List().hashCode();
      }
      if (getPackedSfixed32Count() > 0) {
        hash = (37 * hash) + PACKED_SFIXED32_FIELD_NUMBER;
        hash = (53 * hash) + getPackedSfixed32List().hashCode();
      }
      if (getPackedSfixed64Count() > 0) {
        hash = (37 * hash) + PACKED_SFIXED64_FIELD_NUMBER;
        hash = (53 * hash) + getPackedSfixed64List().hashCode();
      }
      if (getPackedFloatCount() > 0) {
        hash = (37 * hash) + PACKED_FLOAT_FIELD_NUMBER;
        hash = (53 * hash) + getPackedFloatList().hashCode();
      }
      if (getPackedDoubleCount() > 0) {
        hash = (37 * hash) + PACKED_DOUBLE_FIELD_NUMBER;
        hash = (53 * hash) + getPackedDoubleList().hashCode();
      }
      if (getPackedBoolCount() > 0) {
        hash = (37 * hash) + PACKED_BOOL_FIELD_NUMBER;
        hash = (53 * hash) + getPackedBoolList().hashCode();
      }
      if (getPackedNestedEnumCount() > 0) {
        hash = (37 * hash) + PACKED_NESTED_ENUM_FIELD_NUMBER;
        hash = (53 * hash) + packedNestedEnum_.hashCode();
      }
      if (getUnpackedInt32Count() > 0) {
        hash = (37 * hash) + UNPACKED_INT32_FIELD_NUMBER;
        hash = (53 * hash) + getUnpackedInt32List().hashCode();
      }
      if (getUnpackedInt64Count() > 0) {
        hash = (37 * hash) + UNPACKED_INT64_FIELD_NUMBER;
        hash = (53 * hash) + getUnpackedInt64List().hashCode();
      }
      if (getUnpackedUint32Count() > 0) {
        hash = (37 * hash) + UNPACKED_UINT32_FIELD_NUMBER;
        hash = (53 * hash) + getUnpackedUint32List().hashCode();
      }
      if (getUnpackedUint64Count() > 0) {
        hash = (37 * hash) + UNPACKED_UINT64_FIELD_NUMBER;
        hash = (53 * hash) + getUnpackedUint64List().hashCode();
      }
      if (getUnpackedSint32Count() > 0) {
        hash = (37 * hash) + UNPACKED_SINT32_FIELD_NUMBER;
        hash = (53 * hash) + getUnpackedSint32List().hashCode();
      }
      if (getUnpackedSint64Count() > 0) {
        hash = (37 * hash) + UNPACKED_SINT64_FIELD_NUMBER;
        hash = (53 * hash) + getUnpackedSint64List().hashCode();
      }
      if (getUnpackedFixed32Count() > 0) {
        hash = (37 * hash) + UNPACKED_FIXED32_FIELD_NUMBER;
        hash = (53 * hash) + getUnpackedFixed32List().hashCode();
      }
      if (getUnpackedFixed64Count() > 0) {
        hash = (37 * hash) + UNPACKED_FIXED64_FIELD_NUMBER;
        hash = (53 * hash) + getUnpackedFixed64List().hashCode();
      }
      if (getUnpackedSfixed32Count() > 0) {
        hash = (37 * hash) + UNPACKED_SFIXED32_FIELD_NUMBER;
        hash = (53 * hash) + getUnpackedSfixed32List().hashCode();
      }
      if (getUnpackedSfixed64Count() > 0) {
        hash = (37 * hash) + UNPACKED_SFIXED64_FIELD_NUMBER;
        hash = (53 * hash) + getUnpackedSfixed64List().hashCode();
      }
      if (getUnpackedFloatCount() > 0) {
        hash = (37 * hash) + UNPACKED_FLOAT_FIELD_NUMBER;
        hash = (53 * hash) + getUnpackedFloatList().hashCode();
      }
      if (getUnpackedDoubleCount() > 0) {
        hash = (37 * hash) + UNPACKED_DOUBLE_FIELD_NUMBER;
        hash = (53 * hash) + getUnpackedDoubleList().hashCode();
      }
      if (getUnpackedBoolCount() > 0) {
        hash = (37 * hash) + UNPACKED_BOOL_FIELD_NUMBER;
        hash = (53 * hash) + getUnpackedBoolList().hashCode();
      }
      if (getUnpackedNestedEnumCount() > 0) {
        hash = (37 * hash) + UNPACKED_NESTED_ENUM_FIELD_NUMBER;
        hash = (53 * hash) + unpackedNestedEnum_.hashCode();
      }
      if (!internalGetMapInt32Int32().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_INT32_INT32_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapInt32Int32().hashCode();
      }
      if (!internalGetMapInt64Int64().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_INT64_INT64_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapInt64Int64().hashCode();
      }
      if (!internalGetMapUint32Uint32().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_UINT32_UINT32_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapUint32Uint32().hashCode();
      }
      if (!internalGetMapUint64Uint64().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_UINT64_UINT64_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapUint64Uint64().hashCode();
      }
      if (!internalGetMapSint32Sint32().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_SINT32_SINT32_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapSint32Sint32().hashCode();
      }
      if (!internalGetMapSint64Sint64().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_SINT64_SINT64_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapSint64Sint64().hashCode();
      }
      if (!internalGetMapFixed32Fixed32().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_FIXED32_FIXED32_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapFixed32Fixed32().hashCode();
      }
      if (!internalGetMapFixed64Fixed64().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_FIXED64_FIXED64_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapFixed64Fixed64().hashCode();
      }
      if (!internalGetMapSfixed32Sfixed32().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_SFIXED32_SFIXED32_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapSfixed32Sfixed32().hashCode();
      }
      if (!internalGetMapSfixed64Sfixed64().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_SFIXED64_SFIXED64_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapSfixed64Sfixed64().hashCode();
      }
      if (!internalGetMapInt32Float().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_INT32_FLOAT_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapInt32Float().hashCode();
      }
      if (!internalGetMapInt32Double().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_INT32_DOUBLE_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapInt32Double().hashCode();
      }
      if (!internalGetMapBoolBool().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_BOOL_BOOL_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapBoolBool().hashCode();
      }
      if (!internalGetMapStringString().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_STRING_STRING_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapStringString().hashCode();
      }
      if (!internalGetMapStringBytes().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_STRING_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapStringBytes().hashCode();
      }
      if (!internalGetMapStringNestedMessage().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_STRING_NESTED_MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapStringNestedMessage().hashCode();
      }
      if (!internalGetMapStringForeignMessage().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_STRING_FOREIGN_MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapStringForeignMessage().hashCode();
      }
      if (!internalGetMapStringNestedEnum().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_STRING_NESTED_ENUM_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapStringNestedEnum().hashCode();
      }
      if (!internalGetMapStringForeignEnum().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_STRING_FOREIGN_ENUM_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapStringForeignEnum().hashCode();
      }
      switch (oneofFieldCase_) {
        case 111:
          hash = (37 * hash) + ONEOF_UINT32_FIELD_NUMBER;
          hash = (53 * hash) + getOneofUint32();
          break;
        case 112:
          hash = (37 * hash) + ONEOF_NESTED_MESSAGE_FIELD_NUMBER;
          hash = (53 * hash) + getOneofNestedMessage().hashCode();
          break;
        case 113:
          hash = (37 * hash) + ONEOF_STRING_FIELD_NUMBER;
          hash = (53 * hash) + getOneofString().hashCode();
          break;
        case 114:
          hash = (37 * hash) + ONEOF_BYTES_FIELD_NUMBER;
          hash = (53 * hash) + getOneofBytes().hashCode();
          break;
        case 115:
          hash = (37 * hash) + ONEOF_BOOL_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getOneofBool());
          break;
        case 116:
          hash = (37 * hash) + ONEOF_UINT64_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getOneofUint64());
          break;
        case 117:
          hash = (37 * hash) + ONEOF_FLOAT_FIELD_NUMBER;
          hash = (53 * hash) + java.lang.Float.floatToIntBits(getOneofFloat());
          break;
        case 118:
          hash = (37 * hash) + ONEOF_DOUBLE_FIELD_NUMBER;
          hash =
              (53 * hash)
                  + com.google.protobuf.Internal.hashLong(
                      java.lang.Double.doubleToLongBits(getOneofDouble()));
          break;
        case 119:
          hash = (37 * hash) + ONEOF_ENUM_FIELD_NUMBER;
          hash = (53 * hash) + getOneofEnumValue();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 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 legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
        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 legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 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(
        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 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>
     * This is a slightly trimmed-down version of TestAllTypesProto3 from
     * google/protobuf/test_messages_proto3.proto but without imports/ctypes.
     * </pre>
     *
     * Protobuf type {@code legacy_gencode_test.proto3.TestMostTypesProto3}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:legacy_gencode_test.proto3.TestMostTypesProto3)
        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(int number) {
        switch (number) {
          case 56:
            return internalGetMapInt32Int32();
          case 57:
            return internalGetMapInt64Int64();
          case 58:
            return internalGetMapUint32Uint32();
          case 59:
            return internalGetMapUint64Uint64();
          case 60:
            return internalGetMapSint32Sint32();
          case 61:
            return internalGetMapSint64Sint64();
          case 62:
            return internalGetMapFixed32Fixed32();
          case 63:
            return internalGetMapFixed64Fixed64();
          case 64:
            return internalGetMapSfixed32Sfixed32();
          case 65:
            return internalGetMapSfixed64Sfixed64();
          case 66:
            return internalGetMapInt32Float();
          case 67:
            return internalGetMapInt32Double();
          case 68:
            return internalGetMapBoolBool();
          case 69:
            return internalGetMapStringString();
          case 70:
            return internalGetMapStringBytes();
          case 71:
            return internalGetMapStringNestedMessage();
          case 72:
            return internalGetMapStringForeignMessage();
          case 73:
            return internalGetMapStringNestedEnum();
          case 74:
            return internalGetMapStringForeignEnum();
          default:
            throw new RuntimeException("Invalid map field number: " + number);
        }
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(int number) {
        switch (number) {
          case 56:
            return internalGetMutableMapInt32Int32();
          case 57:
            return internalGetMutableMapInt64Int64();
          case 58:
            return internalGetMutableMapUint32Uint32();
          case 59:
            return internalGetMutableMapUint64Uint64();
          case 60:
            return internalGetMutableMapSint32Sint32();
          case 61:
            return internalGetMutableMapSint64Sint64();
          case 62:
            return internalGetMutableMapFixed32Fixed32();
          case 63:
            return internalGetMutableMapFixed64Fixed64();
          case 64:
            return internalGetMutableMapSfixed32Sfixed32();
          case 65:
            return internalGetMutableMapSfixed64Sfixed64();
          case 66:
            return internalGetMutableMapInt32Float();
          case 67:
            return internalGetMutableMapInt32Double();
          case 68:
            return internalGetMutableMapBoolBool();
          case 69:
            return internalGetMutableMapStringString();
          case 70:
            return internalGetMutableMapStringBytes();
          case 71:
            return internalGetMutableMapStringNestedMessage();
          case 72:
            return internalGetMutableMapStringForeignMessage();
          case 73:
            return internalGetMutableMapStringNestedEnum();
          case 74:
            return internalGetMutableMapStringForeignEnum();
          default:
            throw new RuntimeException("Invalid map field number: " + number);
        }
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.class,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.Builder
                    .class);
      }

      // Construct using
      // legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        bitField1_ = 0;
        bitField2_ = 0;
        optionalInt32_ = 0;
        optionalInt64_ = 0L;
        optionalUint32_ = 0;
        optionalUint64_ = 0L;
        optionalSint32_ = 0;
        optionalSint64_ = 0L;
        optionalFixed32_ = 0;
        optionalFixed64_ = 0L;
        optionalSfixed32_ = 0;
        optionalSfixed64_ = 0L;
        optionalFloat_ = 0F;
        optionalDouble_ = 0D;
        optionalBool_ = false;
        optionalString_ = "";
        optionalBytes_ = com.google.protobuf.ByteString.EMPTY;
        optionalNestedMessage_ = null;
        if (optionalNestedMessageBuilder_ != null) {
          optionalNestedMessageBuilder_.dispose();
          optionalNestedMessageBuilder_ = null;
        }
        optionalForeignMessage_ = null;
        if (optionalForeignMessageBuilder_ != null) {
          optionalForeignMessageBuilder_.dispose();
          optionalForeignMessageBuilder_ = null;
        }
        optionalNestedEnum_ = 0;
        optionalForeignEnum_ = 0;
        optionalAliasedEnum_ = 0;
        recursiveMessage_ = null;
        if (recursiveMessageBuilder_ != null) {
          recursiveMessageBuilder_.dispose();
          recursiveMessageBuilder_ = null;
        }
        repeatedInt32_ = emptyIntList();
        repeatedInt64_ = emptyLongList();
        repeatedUint32_ = emptyIntList();
        repeatedUint64_ = emptyLongList();
        repeatedSint32_ = emptyIntList();
        repeatedSint64_ = emptyLongList();
        repeatedFixed32_ = emptyIntList();
        repeatedFixed64_ = emptyLongList();
        repeatedSfixed32_ = emptyIntList();
        repeatedSfixed64_ = emptyLongList();
        repeatedFloat_ = emptyFloatList();
        repeatedDouble_ = emptyDoubleList();
        repeatedBool_ = emptyBooleanList();
        repeatedString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField1_ = (bitField1_ & ~0x00000004);
        repeatedBytes_ = java.util.Collections.emptyList();
        if (repeatedNestedMessageBuilder_ == null) {
          repeatedNestedMessage_ = java.util.Collections.emptyList();
        } else {
          repeatedNestedMessage_ = null;
          repeatedNestedMessageBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000010);
        if (repeatedForeignMessageBuilder_ == null) {
          repeatedForeignMessage_ = java.util.Collections.emptyList();
        } else {
          repeatedForeignMessage_ = null;
          repeatedForeignMessageBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000020);
        repeatedNestedEnum_ = java.util.Collections.emptyList();
        bitField1_ = (bitField1_ & ~0x00000040);
        repeatedForeignEnum_ = java.util.Collections.emptyList();
        bitField1_ = (bitField1_ & ~0x00000080);
        packedInt32_ = emptyIntList();
        packedInt64_ = emptyLongList();
        packedUint32_ = emptyIntList();
        packedUint64_ = emptyLongList();
        packedSint32_ = emptyIntList();
        packedSint64_ = emptyLongList();
        packedFixed32_ = emptyIntList();
        packedFixed64_ = emptyLongList();
        packedSfixed32_ = emptyIntList();
        packedSfixed64_ = emptyLongList();
        packedFloat_ = emptyFloatList();
        packedDouble_ = emptyDoubleList();
        packedBool_ = emptyBooleanList();
        packedNestedEnum_ = java.util.Collections.emptyList();
        bitField1_ = (bitField1_ & ~0x00200000);
        unpackedInt32_ = emptyIntList();
        unpackedInt64_ = emptyLongList();
        unpackedUint32_ = emptyIntList();
        unpackedUint64_ = emptyLongList();
        unpackedSint32_ = emptyIntList();
        unpackedSint64_ = emptyLongList();
        unpackedFixed32_ = emptyIntList();
        unpackedFixed64_ = emptyLongList();
        unpackedSfixed32_ = emptyIntList();
        unpackedSfixed64_ = emptyLongList();
        unpackedFloat_ = emptyFloatList();
        unpackedDouble_ = emptyDoubleList();
        unpackedBool_ = emptyBooleanList();
        unpackedNestedEnum_ = java.util.Collections.emptyList();
        bitField2_ = (bitField2_ & ~0x00000008);
        internalGetMutableMapInt32Int32().clear();
        internalGetMutableMapInt64Int64().clear();
        internalGetMutableMapUint32Uint32().clear();
        internalGetMutableMapUint64Uint64().clear();
        internalGetMutableMapSint32Sint32().clear();
        internalGetMutableMapSint64Sint64().clear();
        internalGetMutableMapFixed32Fixed32().clear();
        internalGetMutableMapFixed64Fixed64().clear();
        internalGetMutableMapSfixed32Sfixed32().clear();
        internalGetMutableMapSfixed64Sfixed64().clear();
        internalGetMutableMapInt32Float().clear();
        internalGetMutableMapInt32Double().clear();
        internalGetMutableMapBoolBool().clear();
        internalGetMutableMapStringString().clear();
        internalGetMutableMapStringBytes().clear();
        internalGetMutableMapStringNestedMessage().clear();
        internalGetMutableMapStringForeignMessage().clear();
        internalGetMutableMapStringNestedEnum().clear();
        internalGetMutableMapStringForeignEnum().clear();
        if (oneofNestedMessageBuilder_ != null) {
          oneofNestedMessageBuilder_.clear();
        }
        oneofFieldCase_ = 0;
        oneofField_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor;
      }

      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
          getDefaultInstanceForType() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
            .getDefaultInstance();
      }

      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 build() {
        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 buildPartial() {
        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 result =
            new legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        if (bitField1_ != 0) {
          buildPartial1(result);
        }
        if (bitField2_ != 0) {
          buildPartial2(result);
        }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 result) {
        if (((bitField0_ & 0x00200000) != 0)) {
          repeatedInt32_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00200000);
        }
        result.repeatedInt32_ = repeatedInt32_;
        if (((bitField0_ & 0x00400000) != 0)) {
          repeatedInt64_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00400000);
        }
        result.repeatedInt64_ = repeatedInt64_;
        if (((bitField0_ & 0x00800000) != 0)) {
          repeatedUint32_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00800000);
        }
        result.repeatedUint32_ = repeatedUint32_;
        if (((bitField0_ & 0x01000000) != 0)) {
          repeatedUint64_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x01000000);
        }
        result.repeatedUint64_ = repeatedUint64_;
        if (((bitField0_ & 0x02000000) != 0)) {
          repeatedSint32_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x02000000);
        }
        result.repeatedSint32_ = repeatedSint32_;
        if (((bitField0_ & 0x04000000) != 0)) {
          repeatedSint64_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x04000000);
        }
        result.repeatedSint64_ = repeatedSint64_;
        if (((bitField0_ & 0x08000000) != 0)) {
          repeatedFixed32_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x08000000);
        }
        result.repeatedFixed32_ = repeatedFixed32_;
        if (((bitField0_ & 0x10000000) != 0)) {
          repeatedFixed64_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x10000000);
        }
        result.repeatedFixed64_ = repeatedFixed64_;
        if (((bitField0_ & 0x20000000) != 0)) {
          repeatedSfixed32_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x20000000);
        }
        result.repeatedSfixed32_ = repeatedSfixed32_;
        if (((bitField0_ & 0x40000000) != 0)) {
          repeatedSfixed64_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x40000000);
        }
        result.repeatedSfixed64_ = repeatedSfixed64_;
        if (((bitField0_ & 0x80000000) != 0)) {
          repeatedFloat_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x80000000);
        }
        result.repeatedFloat_ = repeatedFloat_;
        if (((bitField1_ & 0x00000001) != 0)) {
          repeatedDouble_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00000001);
        }
        result.repeatedDouble_ = repeatedDouble_;
        if (((bitField1_ & 0x00000002) != 0)) {
          repeatedBool_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00000002);
        }
        result.repeatedBool_ = repeatedBool_;
        if (((bitField1_ & 0x00000004) != 0)) {
          repeatedString_ = repeatedString_.getUnmodifiableView();
          bitField1_ = (bitField1_ & ~0x00000004);
        }
        result.repeatedString_ = repeatedString_;
        if (((bitField1_ & 0x00000008) != 0)) {
          repeatedBytes_ = java.util.Collections.unmodifiableList(repeatedBytes_);
          bitField1_ = (bitField1_ & ~0x00000008);
        }
        result.repeatedBytes_ = repeatedBytes_;
        if (repeatedNestedMessageBuilder_ == null) {
          if (((bitField1_ & 0x00000010) != 0)) {
            repeatedNestedMessage_ = java.util.Collections.unmodifiableList(repeatedNestedMessage_);
            bitField1_ = (bitField1_ & ~0x00000010);
          }
          result.repeatedNestedMessage_ = repeatedNestedMessage_;
        } else {
          result.repeatedNestedMessage_ = repeatedNestedMessageBuilder_.build();
        }
        if (repeatedForeignMessageBuilder_ == null) {
          if (((bitField1_ & 0x00000020) != 0)) {
            repeatedForeignMessage_ =
                java.util.Collections.unmodifiableList(repeatedForeignMessage_);
            bitField1_ = (bitField1_ & ~0x00000020);
          }
          result.repeatedForeignMessage_ = repeatedForeignMessage_;
        } else {
          result.repeatedForeignMessage_ = repeatedForeignMessageBuilder_.build();
        }
        if (((bitField1_ & 0x00000040) != 0)) {
          repeatedNestedEnum_ = java.util.Collections.unmodifiableList(repeatedNestedEnum_);
          bitField1_ = (bitField1_ & ~0x00000040);
        }
        result.repeatedNestedEnum_ = repeatedNestedEnum_;
        if (((bitField1_ & 0x00000080) != 0)) {
          repeatedForeignEnum_ = java.util.Collections.unmodifiableList(repeatedForeignEnum_);
          bitField1_ = (bitField1_ & ~0x00000080);
        }
        result.repeatedForeignEnum_ = repeatedForeignEnum_;
        if (((bitField1_ & 0x00000100) != 0)) {
          packedInt32_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00000100);
        }
        result.packedInt32_ = packedInt32_;
        if (((bitField1_ & 0x00000200) != 0)) {
          packedInt64_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00000200);
        }
        result.packedInt64_ = packedInt64_;
        if (((bitField1_ & 0x00000400) != 0)) {
          packedUint32_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00000400);
        }
        result.packedUint32_ = packedUint32_;
        if (((bitField1_ & 0x00000800) != 0)) {
          packedUint64_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00000800);
        }
        result.packedUint64_ = packedUint64_;
        if (((bitField1_ & 0x00001000) != 0)) {
          packedSint32_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00001000);
        }
        result.packedSint32_ = packedSint32_;
        if (((bitField1_ & 0x00002000) != 0)) {
          packedSint64_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00002000);
        }
        result.packedSint64_ = packedSint64_;
        if (((bitField1_ & 0x00004000) != 0)) {
          packedFixed32_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00004000);
        }
        result.packedFixed32_ = packedFixed32_;
        if (((bitField1_ & 0x00008000) != 0)) {
          packedFixed64_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00008000);
        }
        result.packedFixed64_ = packedFixed64_;
        if (((bitField1_ & 0x00010000) != 0)) {
          packedSfixed32_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00010000);
        }
        result.packedSfixed32_ = packedSfixed32_;
        if (((bitField1_ & 0x00020000) != 0)) {
          packedSfixed64_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00020000);
        }
        result.packedSfixed64_ = packedSfixed64_;
        if (((bitField1_ & 0x00040000) != 0)) {
          packedFloat_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00040000);
        }
        result.packedFloat_ = packedFloat_;
        if (((bitField1_ & 0x00080000) != 0)) {
          packedDouble_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00080000);
        }
        result.packedDouble_ = packedDouble_;
        if (((bitField1_ & 0x00100000) != 0)) {
          packedBool_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00100000);
        }
        result.packedBool_ = packedBool_;
        if (((bitField1_ & 0x00200000) != 0)) {
          packedNestedEnum_ = java.util.Collections.unmodifiableList(packedNestedEnum_);
          bitField1_ = (bitField1_ & ~0x00200000);
        }
        result.packedNestedEnum_ = packedNestedEnum_;
        if (((bitField1_ & 0x00400000) != 0)) {
          unpackedInt32_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00400000);
        }
        result.unpackedInt32_ = unpackedInt32_;
        if (((bitField1_ & 0x00800000) != 0)) {
          unpackedInt64_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00800000);
        }
        result.unpackedInt64_ = unpackedInt64_;
        if (((bitField1_ & 0x01000000) != 0)) {
          unpackedUint32_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x01000000);
        }
        result.unpackedUint32_ = unpackedUint32_;
        if (((bitField1_ & 0x02000000) != 0)) {
          unpackedUint64_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x02000000);
        }
        result.unpackedUint64_ = unpackedUint64_;
        if (((bitField1_ & 0x04000000) != 0)) {
          unpackedSint32_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x04000000);
        }
        result.unpackedSint32_ = unpackedSint32_;
        if (((bitField1_ & 0x08000000) != 0)) {
          unpackedSint64_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x08000000);
        }
        result.unpackedSint64_ = unpackedSint64_;
        if (((bitField1_ & 0x10000000) != 0)) {
          unpackedFixed32_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x10000000);
        }
        result.unpackedFixed32_ = unpackedFixed32_;
        if (((bitField1_ & 0x20000000) != 0)) {
          unpackedFixed64_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x20000000);
        }
        result.unpackedFixed64_ = unpackedFixed64_;
        if (((bitField1_ & 0x40000000) != 0)) {
          unpackedSfixed32_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x40000000);
        }
        result.unpackedSfixed32_ = unpackedSfixed32_;
        if (((bitField1_ & 0x80000000) != 0)) {
          unpackedSfixed64_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x80000000);
        }
        result.unpackedSfixed64_ = unpackedSfixed64_;
        if (((bitField2_ & 0x00000001) != 0)) {
          unpackedFloat_.makeImmutable();
          bitField2_ = (bitField2_ & ~0x00000001);
        }
        result.unpackedFloat_ = unpackedFloat_;
        if (((bitField2_ & 0x00000002) != 0)) {
          unpackedDouble_.makeImmutable();
          bitField2_ = (bitField2_ & ~0x00000002);
        }
        result.unpackedDouble_ = unpackedDouble_;
        if (((bitField2_ & 0x00000004) != 0)) {
          unpackedBool_.makeImmutable();
          bitField2_ = (bitField2_ & ~0x00000004);
        }
        result.unpackedBool_ = unpackedBool_;
        if (((bitField2_ & 0x00000008) != 0)) {
          unpackedNestedEnum_ = java.util.Collections.unmodifiableList(unpackedNestedEnum_);
          bitField2_ = (bitField2_ & ~0x00000008);
        }
        result.unpackedNestedEnum_ = unpackedNestedEnum_;
      }

      private void buildPartial0(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.optionalInt32_ = optionalInt32_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.optionalInt64_ = optionalInt64_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.optionalUint32_ = optionalUint32_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.optionalUint64_ = optionalUint64_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.optionalSint32_ = optionalSint32_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.optionalSint64_ = optionalSint64_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.optionalFixed32_ = optionalFixed32_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.optionalFixed64_ = optionalFixed64_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.optionalSfixed32_ = optionalSfixed32_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.optionalSfixed64_ = optionalSfixed64_;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.optionalFloat_ = optionalFloat_;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.optionalDouble_ = optionalDouble_;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.optionalBool_ = optionalBool_;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.optionalString_ = optionalString_;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.optionalBytes_ = optionalBytes_;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.optionalNestedMessage_ =
              optionalNestedMessageBuilder_ == null
                  ? optionalNestedMessage_
                  : optionalNestedMessageBuilder_.build();
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.optionalForeignMessage_ =
              optionalForeignMessageBuilder_ == null
                  ? optionalForeignMessage_
                  : optionalForeignMessageBuilder_.build();
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.optionalNestedEnum_ = optionalNestedEnum_;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.optionalForeignEnum_ = optionalForeignEnum_;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.optionalAliasedEnum_ = optionalAliasedEnum_;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          result.recursiveMessage_ =
              recursiveMessageBuilder_ == null
                  ? recursiveMessage_
                  : recursiveMessageBuilder_.build();
        }
      }

      private void buildPartial1(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 result) {
        int from_bitField1_ = bitField1_;
      }

      private void buildPartial2(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 result) {
        int from_bitField2_ = bitField2_;
        if (((from_bitField2_ & 0x00000010) != 0)) {
          result.mapInt32Int32_ = internalGetMapInt32Int32();
          result.mapInt32Int32_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00000020) != 0)) {
          result.mapInt64Int64_ = internalGetMapInt64Int64();
          result.mapInt64Int64_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00000040) != 0)) {
          result.mapUint32Uint32_ = internalGetMapUint32Uint32();
          result.mapUint32Uint32_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00000080) != 0)) {
          result.mapUint64Uint64_ = internalGetMapUint64Uint64();
          result.mapUint64Uint64_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00000100) != 0)) {
          result.mapSint32Sint32_ = internalGetMapSint32Sint32();
          result.mapSint32Sint32_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00000200) != 0)) {
          result.mapSint64Sint64_ = internalGetMapSint64Sint64();
          result.mapSint64Sint64_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00000400) != 0)) {
          result.mapFixed32Fixed32_ = internalGetMapFixed32Fixed32();
          result.mapFixed32Fixed32_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00000800) != 0)) {
          result.mapFixed64Fixed64_ = internalGetMapFixed64Fixed64();
          result.mapFixed64Fixed64_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00001000) != 0)) {
          result.mapSfixed32Sfixed32_ = internalGetMapSfixed32Sfixed32();
          result.mapSfixed32Sfixed32_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00002000) != 0)) {
          result.mapSfixed64Sfixed64_ = internalGetMapSfixed64Sfixed64();
          result.mapSfixed64Sfixed64_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00004000) != 0)) {
          result.mapInt32Float_ = internalGetMapInt32Float();
          result.mapInt32Float_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00008000) != 0)) {
          result.mapInt32Double_ = internalGetMapInt32Double();
          result.mapInt32Double_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00010000) != 0)) {
          result.mapBoolBool_ = internalGetMapBoolBool();
          result.mapBoolBool_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00020000) != 0)) {
          result.mapStringString_ = internalGetMapStringString();
          result.mapStringString_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00040000) != 0)) {
          result.mapStringBytes_ = internalGetMapStringBytes();
          result.mapStringBytes_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00080000) != 0)) {
          result.mapStringNestedMessage_ = internalGetMapStringNestedMessage();
          result.mapStringNestedMessage_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00100000) != 0)) {
          result.mapStringForeignMessage_ = internalGetMapStringForeignMessage();
          result.mapStringForeignMessage_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00200000) != 0)) {
          result.mapStringNestedEnum_ = internalGetMapStringNestedEnum();
          result.mapStringNestedEnum_.makeImmutable();
        }
        if (((from_bitField2_ & 0x00400000) != 0)) {
          result.mapStringForeignEnum_ = internalGetMapStringForeignEnum();
          result.mapStringForeignEnum_.makeImmutable();
        }
      }

      private void buildPartialOneofs(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 result) {
        result.oneofFieldCase_ = oneofFieldCase_;
        result.oneofField_ = this.oneofField_;
        if (oneofFieldCase_ == 112 && oneofNestedMessageBuilder_ != null) {
          result.oneofField_ = oneofNestedMessageBuilder_.build();
        }
      }

      @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 legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3) {
          return mergeFrom(
              (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 other) {
        if (other
            == legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                .getDefaultInstance()) return this;
        if (other.getOptionalInt32() != 0) {
          setOptionalInt32(other.getOptionalInt32());
        }
        if (other.getOptionalInt64() != 0L) {
          setOptionalInt64(other.getOptionalInt64());
        }
        if (other.getOptionalUint32() != 0) {
          setOptionalUint32(other.getOptionalUint32());
        }
        if (other.getOptionalUint64() != 0L) {
          setOptionalUint64(other.getOptionalUint64());
        }
        if (other.getOptionalSint32() != 0) {
          setOptionalSint32(other.getOptionalSint32());
        }
        if (other.getOptionalSint64() != 0L) {
          setOptionalSint64(other.getOptionalSint64());
        }
        if (other.getOptionalFixed32() != 0) {
          setOptionalFixed32(other.getOptionalFixed32());
        }
        if (other.getOptionalFixed64() != 0L) {
          setOptionalFixed64(other.getOptionalFixed64());
        }
        if (other.getOptionalSfixed32() != 0) {
          setOptionalSfixed32(other.getOptionalSfixed32());
        }
        if (other.getOptionalSfixed64() != 0L) {
          setOptionalSfixed64(other.getOptionalSfixed64());
        }
        if (other.getOptionalFloat() != 0F) {
          setOptionalFloat(other.getOptionalFloat());
        }
        if (other.getOptionalDouble() != 0D) {
          setOptionalDouble(other.getOptionalDouble());
        }
        if (other.getOptionalBool() != false) {
          setOptionalBool(other.getOptionalBool());
        }
        if (!other.getOptionalString().isEmpty()) {
          optionalString_ = other.optionalString_;
          bitField0_ |= 0x00002000;
          onChanged();
        }
        if (other.getOptionalBytes() != com.google.protobuf.ByteString.EMPTY) {
          setOptionalBytes(other.getOptionalBytes());
        }
        if (other.hasOptionalNestedMessage()) {
          mergeOptionalNestedMessage(other.getOptionalNestedMessage());
        }
        if (other.hasOptionalForeignMessage()) {
          mergeOptionalForeignMessage(other.getOptionalForeignMessage());
        }
        if (other.optionalNestedEnum_ != 0) {
          setOptionalNestedEnumValue(other.getOptionalNestedEnumValue());
        }
        if (other.optionalForeignEnum_ != 0) {
          setOptionalForeignEnumValue(other.getOptionalForeignEnumValue());
        }
        if (other.optionalAliasedEnum_ != 0) {
          setOptionalAliasedEnumValue(other.getOptionalAliasedEnumValue());
        }
        if (other.hasRecursiveMessage()) {
          mergeRecursiveMessage(other.getRecursiveMessage());
        }
        if (!other.repeatedInt32_.isEmpty()) {
          if (repeatedInt32_.isEmpty()) {
            repeatedInt32_ = other.repeatedInt32_;
            bitField0_ = (bitField0_ & ~0x00200000);
          } else {
            ensureRepeatedInt32IsMutable();
            repeatedInt32_.addAll(other.repeatedInt32_);
          }
          onChanged();
        }
        if (!other.repeatedInt64_.isEmpty()) {
          if (repeatedInt64_.isEmpty()) {
            repeatedInt64_ = other.repeatedInt64_;
            bitField0_ = (bitField0_ & ~0x00400000);
          } else {
            ensureRepeatedInt64IsMutable();
            repeatedInt64_.addAll(other.repeatedInt64_);
          }
          onChanged();
        }
        if (!other.repeatedUint32_.isEmpty()) {
          if (repeatedUint32_.isEmpty()) {
            repeatedUint32_ = other.repeatedUint32_;
            bitField0_ = (bitField0_ & ~0x00800000);
          } else {
            ensureRepeatedUint32IsMutable();
            repeatedUint32_.addAll(other.repeatedUint32_);
          }
          onChanged();
        }
        if (!other.repeatedUint64_.isEmpty()) {
          if (repeatedUint64_.isEmpty()) {
            repeatedUint64_ = other.repeatedUint64_;
            bitField0_ = (bitField0_ & ~0x01000000);
          } else {
            ensureRepeatedUint64IsMutable();
            repeatedUint64_.addAll(other.repeatedUint64_);
          }
          onChanged();
        }
        if (!other.repeatedSint32_.isEmpty()) {
          if (repeatedSint32_.isEmpty()) {
            repeatedSint32_ = other.repeatedSint32_;
            bitField0_ = (bitField0_ & ~0x02000000);
          } else {
            ensureRepeatedSint32IsMutable();
            repeatedSint32_.addAll(other.repeatedSint32_);
          }
          onChanged();
        }
        if (!other.repeatedSint64_.isEmpty()) {
          if (repeatedSint64_.isEmpty()) {
            repeatedSint64_ = other.repeatedSint64_;
            bitField0_ = (bitField0_ & ~0x04000000);
          } else {
            ensureRepeatedSint64IsMutable();
            repeatedSint64_.addAll(other.repeatedSint64_);
          }
          onChanged();
        }
        if (!other.repeatedFixed32_.isEmpty()) {
          if (repeatedFixed32_.isEmpty()) {
            repeatedFixed32_ = other.repeatedFixed32_;
            bitField0_ = (bitField0_ & ~0x08000000);
          } else {
            ensureRepeatedFixed32IsMutable();
            repeatedFixed32_.addAll(other.repeatedFixed32_);
          }
          onChanged();
        }
        if (!other.repeatedFixed64_.isEmpty()) {
          if (repeatedFixed64_.isEmpty()) {
            repeatedFixed64_ = other.repeatedFixed64_;
            bitField0_ = (bitField0_ & ~0x10000000);
          } else {
            ensureRepeatedFixed64IsMutable();
            repeatedFixed64_.addAll(other.repeatedFixed64_);
          }
          onChanged();
        }
        if (!other.repeatedSfixed32_.isEmpty()) {
          if (repeatedSfixed32_.isEmpty()) {
            repeatedSfixed32_ = other.repeatedSfixed32_;
            bitField0_ = (bitField0_ & ~0x20000000);
          } else {
            ensureRepeatedSfixed32IsMutable();
            repeatedSfixed32_.addAll(other.repeatedSfixed32_);
          }
          onChanged();
        }
        if (!other.repeatedSfixed64_.isEmpty()) {
          if (repeatedSfixed64_.isEmpty()) {
            repeatedSfixed64_ = other.repeatedSfixed64_;
            bitField0_ = (bitField0_ & ~0x40000000);
          } else {
            ensureRepeatedSfixed64IsMutable();
            repeatedSfixed64_.addAll(other.repeatedSfixed64_);
          }
          onChanged();
        }
        if (!other.repeatedFloat_.isEmpty()) {
          if (repeatedFloat_.isEmpty()) {
            repeatedFloat_ = other.repeatedFloat_;
            bitField0_ = (bitField0_ & ~0x80000000);
          } else {
            ensureRepeatedFloatIsMutable();
            repeatedFloat_.addAll(other.repeatedFloat_);
          }
          onChanged();
        }
        if (!other.repeatedDouble_.isEmpty()) {
          if (repeatedDouble_.isEmpty()) {
            repeatedDouble_ = other.repeatedDouble_;
            bitField1_ = (bitField1_ & ~0x00000001);
          } else {
            ensureRepeatedDoubleIsMutable();
            repeatedDouble_.addAll(other.repeatedDouble_);
          }
          onChanged();
        }
        if (!other.repeatedBool_.isEmpty()) {
          if (repeatedBool_.isEmpty()) {
            repeatedBool_ = other.repeatedBool_;
            bitField1_ = (bitField1_ & ~0x00000002);
          } else {
            ensureRepeatedBoolIsMutable();
            repeatedBool_.addAll(other.repeatedBool_);
          }
          onChanged();
        }
        if (!other.repeatedString_.isEmpty()) {
          if (repeatedString_.isEmpty()) {
            repeatedString_ = other.repeatedString_;
            bitField1_ = (bitField1_ & ~0x00000004);
          } else {
            ensureRepeatedStringIsMutable();
            repeatedString_.addAll(other.repeatedString_);
          }
          onChanged();
        }
        if (!other.repeatedBytes_.isEmpty()) {
          if (repeatedBytes_.isEmpty()) {
            repeatedBytes_ = other.repeatedBytes_;
            bitField1_ = (bitField1_ & ~0x00000008);
          } else {
            ensureRepeatedBytesIsMutable();
            repeatedBytes_.addAll(other.repeatedBytes_);
          }
          onChanged();
        }
        if (repeatedNestedMessageBuilder_ == null) {
          if (!other.repeatedNestedMessage_.isEmpty()) {
            if (repeatedNestedMessage_.isEmpty()) {
              repeatedNestedMessage_ = other.repeatedNestedMessage_;
              bitField1_ = (bitField1_ & ~0x00000010);
            } else {
              ensureRepeatedNestedMessageIsMutable();
              repeatedNestedMessage_.addAll(other.repeatedNestedMessage_);
            }
            onChanged();
          }
        } else {
          if (!other.repeatedNestedMessage_.isEmpty()) {
            if (repeatedNestedMessageBuilder_.isEmpty()) {
              repeatedNestedMessageBuilder_.dispose();
              repeatedNestedMessageBuilder_ = null;
              repeatedNestedMessage_ = other.repeatedNestedMessage_;
              bitField1_ = (bitField1_ & ~0x00000010);
              repeatedNestedMessageBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getRepeatedNestedMessageFieldBuilder()
                      : null;
            } else {
              repeatedNestedMessageBuilder_.addAllMessages(other.repeatedNestedMessage_);
            }
          }
        }
        if (repeatedForeignMessageBuilder_ == null) {
          if (!other.repeatedForeignMessage_.isEmpty()) {
            if (repeatedForeignMessage_.isEmpty()) {
              repeatedForeignMessage_ = other.repeatedForeignMessage_;
              bitField1_ = (bitField1_ & ~0x00000020);
            } else {
              ensureRepeatedForeignMessageIsMutable();
              repeatedForeignMessage_.addAll(other.repeatedForeignMessage_);
            }
            onChanged();
          }
        } else {
          if (!other.repeatedForeignMessage_.isEmpty()) {
            if (repeatedForeignMessageBuilder_.isEmpty()) {
              repeatedForeignMessageBuilder_.dispose();
              repeatedForeignMessageBuilder_ = null;
              repeatedForeignMessage_ = other.repeatedForeignMessage_;
              bitField1_ = (bitField1_ & ~0x00000020);
              repeatedForeignMessageBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getRepeatedForeignMessageFieldBuilder()
                      : null;
            } else {
              repeatedForeignMessageBuilder_.addAllMessages(other.repeatedForeignMessage_);
            }
          }
        }
        if (!other.repeatedNestedEnum_.isEmpty()) {
          if (repeatedNestedEnum_.isEmpty()) {
            repeatedNestedEnum_ = other.repeatedNestedEnum_;
            bitField1_ = (bitField1_ & ~0x00000040);
          } else {
            ensureRepeatedNestedEnumIsMutable();
            repeatedNestedEnum_.addAll(other.repeatedNestedEnum_);
          }
          onChanged();
        }
        if (!other.repeatedForeignEnum_.isEmpty()) {
          if (repeatedForeignEnum_.isEmpty()) {
            repeatedForeignEnum_ = other.repeatedForeignEnum_;
            bitField1_ = (bitField1_ & ~0x00000080);
          } else {
            ensureRepeatedForeignEnumIsMutable();
            repeatedForeignEnum_.addAll(other.repeatedForeignEnum_);
          }
          onChanged();
        }
        if (!other.packedInt32_.isEmpty()) {
          if (packedInt32_.isEmpty()) {
            packedInt32_ = other.packedInt32_;
            bitField1_ = (bitField1_ & ~0x00000100);
          } else {
            ensurePackedInt32IsMutable();
            packedInt32_.addAll(other.packedInt32_);
          }
          onChanged();
        }
        if (!other.packedInt64_.isEmpty()) {
          if (packedInt64_.isEmpty()) {
            packedInt64_ = other.packedInt64_;
            bitField1_ = (bitField1_ & ~0x00000200);
          } else {
            ensurePackedInt64IsMutable();
            packedInt64_.addAll(other.packedInt64_);
          }
          onChanged();
        }
        if (!other.packedUint32_.isEmpty()) {
          if (packedUint32_.isEmpty()) {
            packedUint32_ = other.packedUint32_;
            bitField1_ = (bitField1_ & ~0x00000400);
          } else {
            ensurePackedUint32IsMutable();
            packedUint32_.addAll(other.packedUint32_);
          }
          onChanged();
        }
        if (!other.packedUint64_.isEmpty()) {
          if (packedUint64_.isEmpty()) {
            packedUint64_ = other.packedUint64_;
            bitField1_ = (bitField1_ & ~0x00000800);
          } else {
            ensurePackedUint64IsMutable();
            packedUint64_.addAll(other.packedUint64_);
          }
          onChanged();
        }
        if (!other.packedSint32_.isEmpty()) {
          if (packedSint32_.isEmpty()) {
            packedSint32_ = other.packedSint32_;
            bitField1_ = (bitField1_ & ~0x00001000);
          } else {
            ensurePackedSint32IsMutable();
            packedSint32_.addAll(other.packedSint32_);
          }
          onChanged();
        }
        if (!other.packedSint64_.isEmpty()) {
          if (packedSint64_.isEmpty()) {
            packedSint64_ = other.packedSint64_;
            bitField1_ = (bitField1_ & ~0x00002000);
          } else {
            ensurePackedSint64IsMutable();
            packedSint64_.addAll(other.packedSint64_);
          }
          onChanged();
        }
        if (!other.packedFixed32_.isEmpty()) {
          if (packedFixed32_.isEmpty()) {
            packedFixed32_ = other.packedFixed32_;
            bitField1_ = (bitField1_ & ~0x00004000);
          } else {
            ensurePackedFixed32IsMutable();
            packedFixed32_.addAll(other.packedFixed32_);
          }
          onChanged();
        }
        if (!other.packedFixed64_.isEmpty()) {
          if (packedFixed64_.isEmpty()) {
            packedFixed64_ = other.packedFixed64_;
            bitField1_ = (bitField1_ & ~0x00008000);
          } else {
            ensurePackedFixed64IsMutable();
            packedFixed64_.addAll(other.packedFixed64_);
          }
          onChanged();
        }
        if (!other.packedSfixed32_.isEmpty()) {
          if (packedSfixed32_.isEmpty()) {
            packedSfixed32_ = other.packedSfixed32_;
            bitField1_ = (bitField1_ & ~0x00010000);
          } else {
            ensurePackedSfixed32IsMutable();
            packedSfixed32_.addAll(other.packedSfixed32_);
          }
          onChanged();
        }
        if (!other.packedSfixed64_.isEmpty()) {
          if (packedSfixed64_.isEmpty()) {
            packedSfixed64_ = other.packedSfixed64_;
            bitField1_ = (bitField1_ & ~0x00020000);
          } else {
            ensurePackedSfixed64IsMutable();
            packedSfixed64_.addAll(other.packedSfixed64_);
          }
          onChanged();
        }
        if (!other.packedFloat_.isEmpty()) {
          if (packedFloat_.isEmpty()) {
            packedFloat_ = other.packedFloat_;
            bitField1_ = (bitField1_ & ~0x00040000);
          } else {
            ensurePackedFloatIsMutable();
            packedFloat_.addAll(other.packedFloat_);
          }
          onChanged();
        }
        if (!other.packedDouble_.isEmpty()) {
          if (packedDouble_.isEmpty()) {
            packedDouble_ = other.packedDouble_;
            bitField1_ = (bitField1_ & ~0x00080000);
          } else {
            ensurePackedDoubleIsMutable();
            packedDouble_.addAll(other.packedDouble_);
          }
          onChanged();
        }
        if (!other.packedBool_.isEmpty()) {
          if (packedBool_.isEmpty()) {
            packedBool_ = other.packedBool_;
            bitField1_ = (bitField1_ & ~0x00100000);
          } else {
            ensurePackedBoolIsMutable();
            packedBool_.addAll(other.packedBool_);
          }
          onChanged();
        }
        if (!other.packedNestedEnum_.isEmpty()) {
          if (packedNestedEnum_.isEmpty()) {
            packedNestedEnum_ = other.packedNestedEnum_;
            bitField1_ = (bitField1_ & ~0x00200000);
          } else {
            ensurePackedNestedEnumIsMutable();
            packedNestedEnum_.addAll(other.packedNestedEnum_);
          }
          onChanged();
        }
        if (!other.unpackedInt32_.isEmpty()) {
          if (unpackedInt32_.isEmpty()) {
            unpackedInt32_ = other.unpackedInt32_;
            bitField1_ = (bitField1_ & ~0x00400000);
          } else {
            ensureUnpackedInt32IsMutable();
            unpackedInt32_.addAll(other.unpackedInt32_);
          }
          onChanged();
        }
        if (!other.unpackedInt64_.isEmpty()) {
          if (unpackedInt64_.isEmpty()) {
            unpackedInt64_ = other.unpackedInt64_;
            bitField1_ = (bitField1_ & ~0x00800000);
          } else {
            ensureUnpackedInt64IsMutable();
            unpackedInt64_.addAll(other.unpackedInt64_);
          }
          onChanged();
        }
        if (!other.unpackedUint32_.isEmpty()) {
          if (unpackedUint32_.isEmpty()) {
            unpackedUint32_ = other.unpackedUint32_;
            bitField1_ = (bitField1_ & ~0x01000000);
          } else {
            ensureUnpackedUint32IsMutable();
            unpackedUint32_.addAll(other.unpackedUint32_);
          }
          onChanged();
        }
        if (!other.unpackedUint64_.isEmpty()) {
          if (unpackedUint64_.isEmpty()) {
            unpackedUint64_ = other.unpackedUint64_;
            bitField1_ = (bitField1_ & ~0x02000000);
          } else {
            ensureUnpackedUint64IsMutable();
            unpackedUint64_.addAll(other.unpackedUint64_);
          }
          onChanged();
        }
        if (!other.unpackedSint32_.isEmpty()) {
          if (unpackedSint32_.isEmpty()) {
            unpackedSint32_ = other.unpackedSint32_;
            bitField1_ = (bitField1_ & ~0x04000000);
          } else {
            ensureUnpackedSint32IsMutable();
            unpackedSint32_.addAll(other.unpackedSint32_);
          }
          onChanged();
        }
        if (!other.unpackedSint64_.isEmpty()) {
          if (unpackedSint64_.isEmpty()) {
            unpackedSint64_ = other.unpackedSint64_;
            bitField1_ = (bitField1_ & ~0x08000000);
          } else {
            ensureUnpackedSint64IsMutable();
            unpackedSint64_.addAll(other.unpackedSint64_);
          }
          onChanged();
        }
        if (!other.unpackedFixed32_.isEmpty()) {
          if (unpackedFixed32_.isEmpty()) {
            unpackedFixed32_ = other.unpackedFixed32_;
            bitField1_ = (bitField1_ & ~0x10000000);
          } else {
            ensureUnpackedFixed32IsMutable();
            unpackedFixed32_.addAll(other.unpackedFixed32_);
          }
          onChanged();
        }
        if (!other.unpackedFixed64_.isEmpty()) {
          if (unpackedFixed64_.isEmpty()) {
            unpackedFixed64_ = other.unpackedFixed64_;
            bitField1_ = (bitField1_ & ~0x20000000);
          } else {
            ensureUnpackedFixed64IsMutable();
            unpackedFixed64_.addAll(other.unpackedFixed64_);
          }
          onChanged();
        }
        if (!other.unpackedSfixed32_.isEmpty()) {
          if (unpackedSfixed32_.isEmpty()) {
            unpackedSfixed32_ = other.unpackedSfixed32_;
            bitField1_ = (bitField1_ & ~0x40000000);
          } else {
            ensureUnpackedSfixed32IsMutable();
            unpackedSfixed32_.addAll(other.unpackedSfixed32_);
          }
          onChanged();
        }
        if (!other.unpackedSfixed64_.isEmpty()) {
          if (unpackedSfixed64_.isEmpty()) {
            unpackedSfixed64_ = other.unpackedSfixed64_;
            bitField1_ = (bitField1_ & ~0x80000000);
          } else {
            ensureUnpackedSfixed64IsMutable();
            unpackedSfixed64_.addAll(other.unpackedSfixed64_);
          }
          onChanged();
        }
        if (!other.unpackedFloat_.isEmpty()) {
          if (unpackedFloat_.isEmpty()) {
            unpackedFloat_ = other.unpackedFloat_;
            bitField2_ = (bitField2_ & ~0x00000001);
          } else {
            ensureUnpackedFloatIsMutable();
            unpackedFloat_.addAll(other.unpackedFloat_);
          }
          onChanged();
        }
        if (!other.unpackedDouble_.isEmpty()) {
          if (unpackedDouble_.isEmpty()) {
            unpackedDouble_ = other.unpackedDouble_;
            bitField2_ = (bitField2_ & ~0x00000002);
          } else {
            ensureUnpackedDoubleIsMutable();
            unpackedDouble_.addAll(other.unpackedDouble_);
          }
          onChanged();
        }
        if (!other.unpackedBool_.isEmpty()) {
          if (unpackedBool_.isEmpty()) {
            unpackedBool_ = other.unpackedBool_;
            bitField2_ = (bitField2_ & ~0x00000004);
          } else {
            ensureUnpackedBoolIsMutable();
            unpackedBool_.addAll(other.unpackedBool_);
          }
          onChanged();
        }
        if (!other.unpackedNestedEnum_.isEmpty()) {
          if (unpackedNestedEnum_.isEmpty()) {
            unpackedNestedEnum_ = other.unpackedNestedEnum_;
            bitField2_ = (bitField2_ & ~0x00000008);
          } else {
            ensureUnpackedNestedEnumIsMutable();
            unpackedNestedEnum_.addAll(other.unpackedNestedEnum_);
          }
          onChanged();
        }
        internalGetMutableMapInt32Int32().mergeFrom(other.internalGetMapInt32Int32());
        bitField2_ |= 0x00000010;
        internalGetMutableMapInt64Int64().mergeFrom(other.internalGetMapInt64Int64());
        bitField2_ |= 0x00000020;
        internalGetMutableMapUint32Uint32().mergeFrom(other.internalGetMapUint32Uint32());
        bitField2_ |= 0x00000040;
        internalGetMutableMapUint64Uint64().mergeFrom(other.internalGetMapUint64Uint64());
        bitField2_ |= 0x00000080;
        internalGetMutableMapSint32Sint32().mergeFrom(other.internalGetMapSint32Sint32());
        bitField2_ |= 0x00000100;
        internalGetMutableMapSint64Sint64().mergeFrom(other.internalGetMapSint64Sint64());
        bitField2_ |= 0x00000200;
        internalGetMutableMapFixed32Fixed32().mergeFrom(other.internalGetMapFixed32Fixed32());
        bitField2_ |= 0x00000400;
        internalGetMutableMapFixed64Fixed64().mergeFrom(other.internalGetMapFixed64Fixed64());
        bitField2_ |= 0x00000800;
        internalGetMutableMapSfixed32Sfixed32().mergeFrom(other.internalGetMapSfixed32Sfixed32());
        bitField2_ |= 0x00001000;
        internalGetMutableMapSfixed64Sfixed64().mergeFrom(other.internalGetMapSfixed64Sfixed64());
        bitField2_ |= 0x00002000;
        internalGetMutableMapInt32Float().mergeFrom(other.internalGetMapInt32Float());
        bitField2_ |= 0x00004000;
        internalGetMutableMapInt32Double().mergeFrom(other.internalGetMapInt32Double());
        bitField2_ |= 0x00008000;
        internalGetMutableMapBoolBool().mergeFrom(other.internalGetMapBoolBool());
        bitField2_ |= 0x00010000;
        internalGetMutableMapStringString().mergeFrom(other.internalGetMapStringString());
        bitField2_ |= 0x00020000;
        internalGetMutableMapStringBytes().mergeFrom(other.internalGetMapStringBytes());
        bitField2_ |= 0x00040000;
        internalGetMutableMapStringNestedMessage()
            .mergeFrom(other.internalGetMapStringNestedMessage());
        bitField2_ |= 0x00080000;
        internalGetMutableMapStringForeignMessage()
            .mergeFrom(other.internalGetMapStringForeignMessage());
        bitField2_ |= 0x00100000;
        internalGetMutableMapStringNestedEnum().mergeFrom(other.internalGetMapStringNestedEnum());
        bitField2_ |= 0x00200000;
        internalGetMutableMapStringForeignEnum().mergeFrom(other.internalGetMapStringForeignEnum());
        bitField2_ |= 0x00400000;
        switch (other.getOneofFieldCase()) {
          case ONEOF_UINT32:
            {
              setOneofUint32(other.getOneofUint32());
              break;
            }
          case ONEOF_NESTED_MESSAGE:
            {
              mergeOneofNestedMessage(other.getOneofNestedMessage());
              break;
            }
          case ONEOF_STRING:
            {
              oneofFieldCase_ = 113;
              oneofField_ = other.oneofField_;
              onChanged();
              break;
            }
          case ONEOF_BYTES:
            {
              setOneofBytes(other.getOneofBytes());
              break;
            }
          case ONEOF_BOOL:
            {
              setOneofBool(other.getOneofBool());
              break;
            }
          case ONEOF_UINT64:
            {
              setOneofUint64(other.getOneofUint64());
              break;
            }
          case ONEOF_FLOAT:
            {
              setOneofFloat(other.getOneofFloat());
              break;
            }
          case ONEOF_DOUBLE:
            {
              setOneofDouble(other.getOneofDouble());
              break;
            }
          case ONEOF_ENUM:
            {
              setOneofEnumValue(other.getOneofEnumValue());
              break;
            }
          case ONEOFFIELD_NOT_SET:
            {
              break;
            }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8:
                {
                  optionalInt32_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
              case 16:
                {
                  optionalInt64_ = input.readInt64();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
              case 24:
                {
                  optionalUint32_ = input.readUInt32();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 24
              case 32:
                {
                  optionalUint64_ = input.readUInt64();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 32
              case 40:
                {
                  optionalSint32_ = input.readSInt32();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 40
              case 48:
                {
                  optionalSint64_ = input.readSInt64();
                  bitField0_ |= 0x00000020;
                  break;
                } // case 48
              case 61:
                {
                  optionalFixed32_ = input.readFixed32();
                  bitField0_ |= 0x00000040;
                  break;
                } // case 61
              case 65:
                {
                  optionalFixed64_ = input.readFixed64();
                  bitField0_ |= 0x00000080;
                  break;
                } // case 65
              case 77:
                {
                  optionalSfixed32_ = input.readSFixed32();
                  bitField0_ |= 0x00000100;
                  break;
                } // case 77
              case 81:
                {
                  optionalSfixed64_ = input.readSFixed64();
                  bitField0_ |= 0x00000200;
                  break;
                } // case 81
              case 93:
                {
                  optionalFloat_ = input.readFloat();
                  bitField0_ |= 0x00000400;
                  break;
                } // case 93
              case 97:
                {
                  optionalDouble_ = input.readDouble();
                  bitField0_ |= 0x00000800;
                  break;
                } // case 97
              case 104:
                {
                  optionalBool_ = input.readBool();
                  bitField0_ |= 0x00001000;
                  break;
                } // case 104
              case 114:
                {
                  optionalString_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00002000;
                  break;
                } // case 114
              case 122:
                {
                  optionalBytes_ = input.readBytes();
                  bitField0_ |= 0x00004000;
                  break;
                } // case 122
              case 146:
                {
                  input.readMessage(
                      getOptionalNestedMessageFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00008000;
                  break;
                } // case 146
              case 154:
                {
                  input.readMessage(
                      getOptionalForeignMessageFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00010000;
                  break;
                } // case 154
              case 168:
                {
                  optionalNestedEnum_ = input.readEnum();
                  bitField0_ |= 0x00020000;
                  break;
                } // case 168
              case 176:
                {
                  optionalForeignEnum_ = input.readEnum();
                  bitField0_ |= 0x00040000;
                  break;
                } // case 176
              case 184:
                {
                  optionalAliasedEnum_ = input.readEnum();
                  bitField0_ |= 0x00080000;
                  break;
                } // case 184
              case 218:
                {
                  input.readMessage(
                      getRecursiveMessageFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00100000;
                  break;
                } // case 218
              case 248:
                {
                  int v = input.readInt32();
                  ensureRepeatedInt32IsMutable();
                  repeatedInt32_.addInt(v);
                  break;
                } // case 248
              case 250:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepeatedInt32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    repeatedInt32_.addInt(input.readInt32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 250
              case 256:
                {
                  long v = input.readInt64();
                  ensureRepeatedInt64IsMutable();
                  repeatedInt64_.addLong(v);
                  break;
                } // case 256
              case 258:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepeatedInt64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    repeatedInt64_.addLong(input.readInt64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 258
              case 264:
                {
                  int v = input.readUInt32();
                  ensureRepeatedUint32IsMutable();
                  repeatedUint32_.addInt(v);
                  break;
                } // case 264
              case 266:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepeatedUint32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    repeatedUint32_.addInt(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 266
              case 272:
                {
                  long v = input.readUInt64();
                  ensureRepeatedUint64IsMutable();
                  repeatedUint64_.addLong(v);
                  break;
                } // case 272
              case 274:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepeatedUint64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    repeatedUint64_.addLong(input.readUInt64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 274
              case 280:
                {
                  int v = input.readSInt32();
                  ensureRepeatedSint32IsMutable();
                  repeatedSint32_.addInt(v);
                  break;
                } // case 280
              case 282:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepeatedSint32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    repeatedSint32_.addInt(input.readSInt32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 282
              case 288:
                {
                  long v = input.readSInt64();
                  ensureRepeatedSint64IsMutable();
                  repeatedSint64_.addLong(v);
                  break;
                } // case 288
              case 290:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepeatedSint64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    repeatedSint64_.addLong(input.readSInt64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 290
              case 301:
                {
                  int v = input.readFixed32();
                  ensureRepeatedFixed32IsMutable();
                  repeatedFixed32_.addInt(v);
                  break;
                } // case 301
              case 298:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepeatedFixed32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    repeatedFixed32_.addInt(input.readFixed32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 298
              case 305:
                {
                  long v = input.readFixed64();
                  ensureRepeatedFixed64IsMutable();
                  repeatedFixed64_.addLong(v);
                  break;
                } // case 305
              case 306:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepeatedFixed64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    repeatedFixed64_.addLong(input.readFixed64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 306
              case 317:
                {
                  int v = input.readSFixed32();
                  ensureRepeatedSfixed32IsMutable();
                  repeatedSfixed32_.addInt(v);
                  break;
                } // case 317
              case 314:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepeatedSfixed32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    repeatedSfixed32_.addInt(input.readSFixed32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 314
              case 321:
                {
                  long v = input.readSFixed64();
                  ensureRepeatedSfixed64IsMutable();
                  repeatedSfixed64_.addLong(v);
                  break;
                } // case 321
              case 322:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepeatedSfixed64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    repeatedSfixed64_.addLong(input.readSFixed64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 322
              case 333:
                {
                  float v = input.readFloat();
                  ensureRepeatedFloatIsMutable();
                  repeatedFloat_.addFloat(v);
                  break;
                } // case 333
              case 330:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepeatedFloatIsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    repeatedFloat_.addFloat(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                } // case 330
              case 337:
                {
                  double v = input.readDouble();
                  ensureRepeatedDoubleIsMutable();
                  repeatedDouble_.addDouble(v);
                  break;
                } // case 337
              case 338:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepeatedDoubleIsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    repeatedDouble_.addDouble(input.readDouble());
                  }
                  input.popLimit(limit);
                  break;
                } // case 338
              case 344:
                {
                  boolean v = input.readBool();
                  ensureRepeatedBoolIsMutable();
                  repeatedBool_.addBoolean(v);
                  break;
                } // case 344
              case 346:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepeatedBoolIsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    repeatedBool_.addBoolean(input.readBool());
                  }
                  input.popLimit(limit);
                  break;
                } // case 346
              case 354:
                {
                  java.lang.String s = input.readStringRequireUtf8();
                  ensureRepeatedStringIsMutable();
                  repeatedString_.add(s);
                  break;
                } // case 354
              case 362:
                {
                  com.google.protobuf.ByteString v = input.readBytes();
                  ensureRepeatedBytesIsMutable();
                  repeatedBytes_.add(v);
                  break;
                } // case 362
              case 386:
                {
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                          .NestedMessage
                      m =
                          input.readMessage(
                              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                                  .NestedMessage.parser(),
                              extensionRegistry);
                  if (repeatedNestedMessageBuilder_ == null) {
                    ensureRepeatedNestedMessageIsMutable();
                    repeatedNestedMessage_.add(m);
                  } else {
                    repeatedNestedMessageBuilder_.addMessage(m);
                  }
                  break;
                } // case 386
              case 394:
                {
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage m =
                      input.readMessage(
                          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.parser(),
                          extensionRegistry);
                  if (repeatedForeignMessageBuilder_ == null) {
                    ensureRepeatedForeignMessageIsMutable();
                    repeatedForeignMessage_.add(m);
                  } else {
                    repeatedForeignMessageBuilder_.addMessage(m);
                  }
                  break;
                } // case 394
              case 408:
                {
                  int tmpRaw = input.readEnum();
                  ensureRepeatedNestedEnumIsMutable();
                  repeatedNestedEnum_.add(tmpRaw);
                  break;
                } // case 408
              case 410:
                {
                  int length = input.readRawVarint32();
                  int oldLimit = input.pushLimit(length);
                  while (input.getBytesUntilLimit() > 0) {
                    int tmpRaw = input.readEnum();
                    ensureRepeatedNestedEnumIsMutable();
                    repeatedNestedEnum_.add(tmpRaw);
                  }
                  input.popLimit(oldLimit);
                  break;
                } // case 410
              case 416:
                {
                  int tmpRaw = input.readEnum();
                  ensureRepeatedForeignEnumIsMutable();
                  repeatedForeignEnum_.add(tmpRaw);
                  break;
                } // case 416
              case 418:
                {
                  int length = input.readRawVarint32();
                  int oldLimit = input.pushLimit(length);
                  while (input.getBytesUntilLimit() > 0) {
                    int tmpRaw = input.readEnum();
                    ensureRepeatedForeignEnumIsMutable();
                    repeatedForeignEnum_.add(tmpRaw);
                  }
                  input.popLimit(oldLimit);
                  break;
                } // case 418
              case 450:
                {
                  com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer>
                      mapInt32Int32__ =
                          input.readMessage(
                              MapInt32Int32DefaultEntryHolder.defaultEntry.getParserForType(),
                              extensionRegistry);
                  internalGetMutableMapInt32Int32()
                      .getMutableMap()
                      .put(mapInt32Int32__.getKey(), mapInt32Int32__.getValue());
                  bitField2_ |= 0x00000010;
                  break;
                } // case 450
              case 458:
                {
                  com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> mapInt64Int64__ =
                      input.readMessage(
                          MapInt64Int64DefaultEntryHolder.defaultEntry.getParserForType(),
                          extensionRegistry);
                  internalGetMutableMapInt64Int64()
                      .getMutableMap()
                      .put(mapInt64Int64__.getKey(), mapInt64Int64__.getValue());
                  bitField2_ |= 0x00000020;
                  break;
                } // case 458
              case 466:
                {
                  com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer>
                      mapUint32Uint32__ =
                          input.readMessage(
                              MapUint32Uint32DefaultEntryHolder.defaultEntry.getParserForType(),
                              extensionRegistry);
                  internalGetMutableMapUint32Uint32()
                      .getMutableMap()
                      .put(mapUint32Uint32__.getKey(), mapUint32Uint32__.getValue());
                  bitField2_ |= 0x00000040;
                  break;
                } // case 466
              case 474:
                {
                  com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> mapUint64Uint64__ =
                      input.readMessage(
                          MapUint64Uint64DefaultEntryHolder.defaultEntry.getParserForType(),
                          extensionRegistry);
                  internalGetMutableMapUint64Uint64()
                      .getMutableMap()
                      .put(mapUint64Uint64__.getKey(), mapUint64Uint64__.getValue());
                  bitField2_ |= 0x00000080;
                  break;
                } // case 474
              case 482:
                {
                  com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer>
                      mapSint32Sint32__ =
                          input.readMessage(
                              MapSint32Sint32DefaultEntryHolder.defaultEntry.getParserForType(),
                              extensionRegistry);
                  internalGetMutableMapSint32Sint32()
                      .getMutableMap()
                      .put(mapSint32Sint32__.getKey(), mapSint32Sint32__.getValue());
                  bitField2_ |= 0x00000100;
                  break;
                } // case 482
              case 490:
                {
                  com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> mapSint64Sint64__ =
                      input.readMessage(
                          MapSint64Sint64DefaultEntryHolder.defaultEntry.getParserForType(),
                          extensionRegistry);
                  internalGetMutableMapSint64Sint64()
                      .getMutableMap()
                      .put(mapSint64Sint64__.getKey(), mapSint64Sint64__.getValue());
                  bitField2_ |= 0x00000200;
                  break;
                } // case 490
              case 498:
                {
                  com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer>
                      mapFixed32Fixed32__ =
                          input.readMessage(
                              MapFixed32Fixed32DefaultEntryHolder.defaultEntry.getParserForType(),
                              extensionRegistry);
                  internalGetMutableMapFixed32Fixed32()
                      .getMutableMap()
                      .put(mapFixed32Fixed32__.getKey(), mapFixed32Fixed32__.getValue());
                  bitField2_ |= 0x00000400;
                  break;
                } // case 498
              case 506:
                {
                  com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long> mapFixed64Fixed64__ =
                      input.readMessage(
                          MapFixed64Fixed64DefaultEntryHolder.defaultEntry.getParserForType(),
                          extensionRegistry);
                  internalGetMutableMapFixed64Fixed64()
                      .getMutableMap()
                      .put(mapFixed64Fixed64__.getKey(), mapFixed64Fixed64__.getValue());
                  bitField2_ |= 0x00000800;
                  break;
                } // case 506
              case 514:
                {
                  com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Integer>
                      mapSfixed32Sfixed32__ =
                          input.readMessage(
                              MapSfixed32Sfixed32DefaultEntryHolder.defaultEntry.getParserForType(),
                              extensionRegistry);
                  internalGetMutableMapSfixed32Sfixed32()
                      .getMutableMap()
                      .put(mapSfixed32Sfixed32__.getKey(), mapSfixed32Sfixed32__.getValue());
                  bitField2_ |= 0x00001000;
                  break;
                } // case 514
              case 522:
                {
                  com.google.protobuf.MapEntry<java.lang.Long, java.lang.Long>
                      mapSfixed64Sfixed64__ =
                          input.readMessage(
                              MapSfixed64Sfixed64DefaultEntryHolder.defaultEntry.getParserForType(),
                              extensionRegistry);
                  internalGetMutableMapSfixed64Sfixed64()
                      .getMutableMap()
                      .put(mapSfixed64Sfixed64__.getKey(), mapSfixed64Sfixed64__.getValue());
                  bitField2_ |= 0x00002000;
                  break;
                } // case 522
              case 530:
                {
                  com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Float> mapInt32Float__ =
                      input.readMessage(
                          MapInt32FloatDefaultEntryHolder.defaultEntry.getParserForType(),
                          extensionRegistry);
                  internalGetMutableMapInt32Float()
                      .getMutableMap()
                      .put(mapInt32Float__.getKey(), mapInt32Float__.getValue());
                  bitField2_ |= 0x00004000;
                  break;
                } // case 530
              case 538:
                {
                  com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Double>
                      mapInt32Double__ =
                          input.readMessage(
                              MapInt32DoubleDefaultEntryHolder.defaultEntry.getParserForType(),
                              extensionRegistry);
                  internalGetMutableMapInt32Double()
                      .getMutableMap()
                      .put(mapInt32Double__.getKey(), mapInt32Double__.getValue());
                  bitField2_ |= 0x00008000;
                  break;
                } // case 538
              case 546:
                {
                  com.google.protobuf.MapEntry<java.lang.Boolean, java.lang.Boolean> mapBoolBool__ =
                      input.readMessage(
                          MapBoolBoolDefaultEntryHolder.defaultEntry.getParserForType(),
                          extensionRegistry);
                  internalGetMutableMapBoolBool()
                      .getMutableMap()
                      .put(mapBoolBool__.getKey(), mapBoolBool__.getValue());
                  bitField2_ |= 0x00010000;
                  break;
                } // case 546
              case 554:
                {
                  com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                      mapStringString__ =
                          input.readMessage(
                              MapStringStringDefaultEntryHolder.defaultEntry.getParserForType(),
                              extensionRegistry);
                  internalGetMutableMapStringString()
                      .getMutableMap()
                      .put(mapStringString__.getKey(), mapStringString__.getValue());
                  bitField2_ |= 0x00020000;
                  break;
                } // case 554
              case 562:
                {
                  com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.ByteString>
                      mapStringBytes__ =
                          input.readMessage(
                              MapStringBytesDefaultEntryHolder.defaultEntry.getParserForType(),
                              extensionRegistry);
                  internalGetMutableMapStringBytes()
                      .getMutableMap()
                      .put(mapStringBytes__.getKey(), mapStringBytes__.getValue());
                  bitField2_ |= 0x00040000;
                  break;
                } // case 562
              case 570:
                {
                  com.google.protobuf.MapEntry<
                          java.lang.String,
                          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                              .NestedMessage>
                      mapStringNestedMessage__ =
                          input.readMessage(
                              MapStringNestedMessageDefaultEntryHolder.defaultEntry
                                  .getParserForType(),
                              extensionRegistry);
                  internalGetMutableMapStringNestedMessage()
                      .getMutableMap()
                      .put(mapStringNestedMessage__.getKey(), mapStringNestedMessage__.getValue());
                  bitField2_ |= 0x00080000;
                  break;
                } // case 570
              case 578:
                {
                  com.google.protobuf.MapEntry<
                          java.lang.String,
                          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
                      mapStringForeignMessage__ =
                          input.readMessage(
                              MapStringForeignMessageDefaultEntryHolder.defaultEntry
                                  .getParserForType(),
                              extensionRegistry);
                  internalGetMutableMapStringForeignMessage()
                      .getMutableMap()
                      .put(
                          mapStringForeignMessage__.getKey(), mapStringForeignMessage__.getValue());
                  bitField2_ |= 0x00100000;
                  break;
                } // case 578
              case 586:
                {
                  com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer>
                      mapStringNestedEnum__ =
                          input.readMessage(
                              MapStringNestedEnumDefaultEntryHolder.defaultEntry.getParserForType(),
                              extensionRegistry);
                  internalGetMutableMapStringNestedEnum()
                      .getMutableMap()
                      .put(mapStringNestedEnum__.getKey(), mapStringNestedEnum__.getValue());
                  bitField2_ |= 0x00200000;
                  break;
                } // case 586
              case 594:
                {
                  com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer>
                      mapStringForeignEnum__ =
                          input.readMessage(
                              MapStringForeignEnumDefaultEntryHolder.defaultEntry
                                  .getParserForType(),
                              extensionRegistry);
                  internalGetMutableMapStringForeignEnum()
                      .getMutableMap()
                      .put(mapStringForeignEnum__.getKey(), mapStringForeignEnum__.getValue());
                  bitField2_ |= 0x00400000;
                  break;
                } // case 594
              case 600:
                {
                  int v = input.readInt32();
                  ensurePackedInt32IsMutable();
                  packedInt32_.addInt(v);
                  break;
                } // case 600
              case 602:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensurePackedInt32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    packedInt32_.addInt(input.readInt32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 602
              case 608:
                {
                  long v = input.readInt64();
                  ensurePackedInt64IsMutable();
                  packedInt64_.addLong(v);
                  break;
                } // case 608
              case 610:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensurePackedInt64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    packedInt64_.addLong(input.readInt64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 610
              case 616:
                {
                  int v = input.readUInt32();
                  ensurePackedUint32IsMutable();
                  packedUint32_.addInt(v);
                  break;
                } // case 616
              case 618:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensurePackedUint32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    packedUint32_.addInt(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 618
              case 624:
                {
                  long v = input.readUInt64();
                  ensurePackedUint64IsMutable();
                  packedUint64_.addLong(v);
                  break;
                } // case 624
              case 626:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensurePackedUint64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    packedUint64_.addLong(input.readUInt64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 626
              case 632:
                {
                  int v = input.readSInt32();
                  ensurePackedSint32IsMutable();
                  packedSint32_.addInt(v);
                  break;
                } // case 632
              case 634:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensurePackedSint32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    packedSint32_.addInt(input.readSInt32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 634
              case 640:
                {
                  long v = input.readSInt64();
                  ensurePackedSint64IsMutable();
                  packedSint64_.addLong(v);
                  break;
                } // case 640
              case 642:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensurePackedSint64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    packedSint64_.addLong(input.readSInt64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 642
              case 653:
                {
                  int v = input.readFixed32();
                  ensurePackedFixed32IsMutable();
                  packedFixed32_.addInt(v);
                  break;
                } // case 653
              case 650:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensurePackedFixed32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    packedFixed32_.addInt(input.readFixed32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 650
              case 657:
                {
                  long v = input.readFixed64();
                  ensurePackedFixed64IsMutable();
                  packedFixed64_.addLong(v);
                  break;
                } // case 657
              case 658:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensurePackedFixed64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    packedFixed64_.addLong(input.readFixed64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 658
              case 669:
                {
                  int v = input.readSFixed32();
                  ensurePackedSfixed32IsMutable();
                  packedSfixed32_.addInt(v);
                  break;
                } // case 669
              case 666:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensurePackedSfixed32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    packedSfixed32_.addInt(input.readSFixed32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 666
              case 673:
                {
                  long v = input.readSFixed64();
                  ensurePackedSfixed64IsMutable();
                  packedSfixed64_.addLong(v);
                  break;
                } // case 673
              case 674:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensurePackedSfixed64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    packedSfixed64_.addLong(input.readSFixed64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 674
              case 685:
                {
                  float v = input.readFloat();
                  ensurePackedFloatIsMutable();
                  packedFloat_.addFloat(v);
                  break;
                } // case 685
              case 682:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensurePackedFloatIsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    packedFloat_.addFloat(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                } // case 682
              case 689:
                {
                  double v = input.readDouble();
                  ensurePackedDoubleIsMutable();
                  packedDouble_.addDouble(v);
                  break;
                } // case 689
              case 690:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensurePackedDoubleIsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    packedDouble_.addDouble(input.readDouble());
                  }
                  input.popLimit(limit);
                  break;
                } // case 690
              case 696:
                {
                  boolean v = input.readBool();
                  ensurePackedBoolIsMutable();
                  packedBool_.addBoolean(v);
                  break;
                } // case 696
              case 698:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensurePackedBoolIsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    packedBool_.addBoolean(input.readBool());
                  }
                  input.popLimit(limit);
                  break;
                } // case 698
              case 704:
                {
                  int tmpRaw = input.readEnum();
                  ensurePackedNestedEnumIsMutable();
                  packedNestedEnum_.add(tmpRaw);
                  break;
                } // case 704
              case 706:
                {
                  int length = input.readRawVarint32();
                  int oldLimit = input.pushLimit(length);
                  while (input.getBytesUntilLimit() > 0) {
                    int tmpRaw = input.readEnum();
                    ensurePackedNestedEnumIsMutable();
                    packedNestedEnum_.add(tmpRaw);
                  }
                  input.popLimit(oldLimit);
                  break;
                } // case 706
              case 712:
                {
                  int v = input.readInt32();
                  ensureUnpackedInt32IsMutable();
                  unpackedInt32_.addInt(v);
                  break;
                } // case 712
              case 714:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureUnpackedInt32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    unpackedInt32_.addInt(input.readInt32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 714
              case 720:
                {
                  long v = input.readInt64();
                  ensureUnpackedInt64IsMutable();
                  unpackedInt64_.addLong(v);
                  break;
                } // case 720
              case 722:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureUnpackedInt64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    unpackedInt64_.addLong(input.readInt64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 722
              case 728:
                {
                  int v = input.readUInt32();
                  ensureUnpackedUint32IsMutable();
                  unpackedUint32_.addInt(v);
                  break;
                } // case 728
              case 730:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureUnpackedUint32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    unpackedUint32_.addInt(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 730
              case 736:
                {
                  long v = input.readUInt64();
                  ensureUnpackedUint64IsMutable();
                  unpackedUint64_.addLong(v);
                  break;
                } // case 736
              case 738:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureUnpackedUint64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    unpackedUint64_.addLong(input.readUInt64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 738
              case 744:
                {
                  int v = input.readSInt32();
                  ensureUnpackedSint32IsMutable();
                  unpackedSint32_.addInt(v);
                  break;
                } // case 744
              case 746:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureUnpackedSint32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    unpackedSint32_.addInt(input.readSInt32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 746
              case 752:
                {
                  long v = input.readSInt64();
                  ensureUnpackedSint64IsMutable();
                  unpackedSint64_.addLong(v);
                  break;
                } // case 752
              case 754:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureUnpackedSint64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    unpackedSint64_.addLong(input.readSInt64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 754
              case 765:
                {
                  int v = input.readFixed32();
                  ensureUnpackedFixed32IsMutable();
                  unpackedFixed32_.addInt(v);
                  break;
                } // case 765
              case 762:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureUnpackedFixed32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    unpackedFixed32_.addInt(input.readFixed32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 762
              case 769:
                {
                  long v = input.readFixed64();
                  ensureUnpackedFixed64IsMutable();
                  unpackedFixed64_.addLong(v);
                  break;
                } // case 769
              case 770:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureUnpackedFixed64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    unpackedFixed64_.addLong(input.readFixed64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 770
              case 781:
                {
                  int v = input.readSFixed32();
                  ensureUnpackedSfixed32IsMutable();
                  unpackedSfixed32_.addInt(v);
                  break;
                } // case 781
              case 778:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureUnpackedSfixed32IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    unpackedSfixed32_.addInt(input.readSFixed32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 778
              case 785:
                {
                  long v = input.readSFixed64();
                  ensureUnpackedSfixed64IsMutable();
                  unpackedSfixed64_.addLong(v);
                  break;
                } // case 785
              case 786:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureUnpackedSfixed64IsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    unpackedSfixed64_.addLong(input.readSFixed64());
                  }
                  input.popLimit(limit);
                  break;
                } // case 786
              case 797:
                {
                  float v = input.readFloat();
                  ensureUnpackedFloatIsMutable();
                  unpackedFloat_.addFloat(v);
                  break;
                } // case 797
              case 794:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureUnpackedFloatIsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    unpackedFloat_.addFloat(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                } // case 794
              case 801:
                {
                  double v = input.readDouble();
                  ensureUnpackedDoubleIsMutable();
                  unpackedDouble_.addDouble(v);
                  break;
                } // case 801
              case 802:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureUnpackedDoubleIsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    unpackedDouble_.addDouble(input.readDouble());
                  }
                  input.popLimit(limit);
                  break;
                } // case 802
              case 808:
                {
                  boolean v = input.readBool();
                  ensureUnpackedBoolIsMutable();
                  unpackedBool_.addBoolean(v);
                  break;
                } // case 808
              case 810:
                {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureUnpackedBoolIsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    unpackedBool_.addBoolean(input.readBool());
                  }
                  input.popLimit(limit);
                  break;
                } // case 810
              case 816:
                {
                  int tmpRaw = input.readEnum();
                  ensureUnpackedNestedEnumIsMutable();
                  unpackedNestedEnum_.add(tmpRaw);
                  break;
                } // case 816
              case 818:
                {
                  int length = input.readRawVarint32();
                  int oldLimit = input.pushLimit(length);
                  while (input.getBytesUntilLimit() > 0) {
                    int tmpRaw = input.readEnum();
                    ensureUnpackedNestedEnumIsMutable();
                    unpackedNestedEnum_.add(tmpRaw);
                  }
                  input.popLimit(oldLimit);
                  break;
                } // case 818
              case 888:
                {
                  oneofField_ = input.readUInt32();
                  oneofFieldCase_ = 111;
                  break;
                } // case 888
              case 898:
                {
                  input.readMessage(
                      getOneofNestedMessageFieldBuilder().getBuilder(), extensionRegistry);
                  oneofFieldCase_ = 112;
                  break;
                } // case 898
              case 906:
                {
                  java.lang.String s = input.readStringRequireUtf8();
                  oneofFieldCase_ = 113;
                  oneofField_ = s;
                  break;
                } // case 906
              case 914:
                {
                  oneofField_ = input.readBytes();
                  oneofFieldCase_ = 114;
                  break;
                } // case 914
              case 920:
                {
                  oneofField_ = input.readBool();
                  oneofFieldCase_ = 115;
                  break;
                } // case 920
              case 928:
                {
                  oneofField_ = input.readUInt64();
                  oneofFieldCase_ = 116;
                  break;
                } // case 928
              case 941:
                {
                  oneofField_ = input.readFloat();
                  oneofFieldCase_ = 117;
                  break;
                } // case 941
              case 945:
                {
                  oneofField_ = input.readDouble();
                  oneofFieldCase_ = 118;
                  break;
                } // case 945
              case 952:
                {
                  int rawValue = input.readEnum();
                  oneofFieldCase_ = 119;
                  oneofField_ = rawValue;
                  break;
                } // case 952
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int oneofFieldCase_ = 0;
      private java.lang.Object oneofField_;

      public OneofFieldCase getOneofFieldCase() {
        return OneofFieldCase.forNumber(oneofFieldCase_);
      }

      public Builder clearOneofField() {
        oneofFieldCase_ = 0;
        oneofField_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;
      private int bitField1_;
      private int bitField2_;

      private int optionalInt32_;

      /**
       * <code>int32 optional_int32 = 1;</code>
       *
       * @return The optionalInt32.
       */
      @java.lang.Override
      public int getOptionalInt32() {
        return optionalInt32_;
      }

      /**
       * <code>int32 optional_int32 = 1;</code>
       *
       * @param value The optionalInt32 to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalInt32(int value) {

        optionalInt32_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      /**
       * <code>int32 optional_int32 = 1;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalInt32() {
        bitField0_ = (bitField0_ & ~0x00000001);
        optionalInt32_ = 0;
        onChanged();
        return this;
      }

      private long optionalInt64_;

      /**
       * <code>int64 optional_int64 = 2;</code>
       *
       * @return The optionalInt64.
       */
      @java.lang.Override
      public long getOptionalInt64() {
        return optionalInt64_;
      }

      /**
       * <code>int64 optional_int64 = 2;</code>
       *
       * @param value The optionalInt64 to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalInt64(long value) {

        optionalInt64_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      /**
       * <code>int64 optional_int64 = 2;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalInt64() {
        bitField0_ = (bitField0_ & ~0x00000002);
        optionalInt64_ = 0L;
        onChanged();
        return this;
      }

      private int optionalUint32_;

      /**
       * <code>uint32 optional_uint32 = 3;</code>
       *
       * @return The optionalUint32.
       */
      @java.lang.Override
      public int getOptionalUint32() {
        return optionalUint32_;
      }

      /**
       * <code>uint32 optional_uint32 = 3;</code>
       *
       * @param value The optionalUint32 to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalUint32(int value) {

        optionalUint32_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      /**
       * <code>uint32 optional_uint32 = 3;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalUint32() {
        bitField0_ = (bitField0_ & ~0x00000004);
        optionalUint32_ = 0;
        onChanged();
        return this;
      }

      private long optionalUint64_;

      /**
       * <code>uint64 optional_uint64 = 4;</code>
       *
       * @return The optionalUint64.
       */
      @java.lang.Override
      public long getOptionalUint64() {
        return optionalUint64_;
      }

      /**
       * <code>uint64 optional_uint64 = 4;</code>
       *
       * @param value The optionalUint64 to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalUint64(long value) {

        optionalUint64_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      /**
       * <code>uint64 optional_uint64 = 4;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalUint64() {
        bitField0_ = (bitField0_ & ~0x00000008);
        optionalUint64_ = 0L;
        onChanged();
        return this;
      }

      private int optionalSint32_;

      /**
       * <code>sint32 optional_sint32 = 5;</code>
       *
       * @return The optionalSint32.
       */
      @java.lang.Override
      public int getOptionalSint32() {
        return optionalSint32_;
      }

      /**
       * <code>sint32 optional_sint32 = 5;</code>
       *
       * @param value The optionalSint32 to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalSint32(int value) {

        optionalSint32_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      /**
       * <code>sint32 optional_sint32 = 5;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalSint32() {
        bitField0_ = (bitField0_ & ~0x00000010);
        optionalSint32_ = 0;
        onChanged();
        return this;
      }

      private long optionalSint64_;

      /**
       * <code>sint64 optional_sint64 = 6;</code>
       *
       * @return The optionalSint64.
       */
      @java.lang.Override
      public long getOptionalSint64() {
        return optionalSint64_;
      }

      /**
       * <code>sint64 optional_sint64 = 6;</code>
       *
       * @param value The optionalSint64 to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalSint64(long value) {

        optionalSint64_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      /**
       * <code>sint64 optional_sint64 = 6;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalSint64() {
        bitField0_ = (bitField0_ & ~0x00000020);
        optionalSint64_ = 0L;
        onChanged();
        return this;
      }

      private int optionalFixed32_;

      /**
       * <code>fixed32 optional_fixed32 = 7;</code>
       *
       * @return The optionalFixed32.
       */
      @java.lang.Override
      public int getOptionalFixed32() {
        return optionalFixed32_;
      }

      /**
       * <code>fixed32 optional_fixed32 = 7;</code>
       *
       * @param value The optionalFixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalFixed32(int value) {

        optionalFixed32_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      /**
       * <code>fixed32 optional_fixed32 = 7;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalFixed32() {
        bitField0_ = (bitField0_ & ~0x00000040);
        optionalFixed32_ = 0;
        onChanged();
        return this;
      }

      private long optionalFixed64_;

      /**
       * <code>fixed64 optional_fixed64 = 8;</code>
       *
       * @return The optionalFixed64.
       */
      @java.lang.Override
      public long getOptionalFixed64() {
        return optionalFixed64_;
      }

      /**
       * <code>fixed64 optional_fixed64 = 8;</code>
       *
       * @param value The optionalFixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalFixed64(long value) {

        optionalFixed64_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      /**
       * <code>fixed64 optional_fixed64 = 8;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalFixed64() {
        bitField0_ = (bitField0_ & ~0x00000080);
        optionalFixed64_ = 0L;
        onChanged();
        return this;
      }

      private int optionalSfixed32_;

      /**
       * <code>sfixed32 optional_sfixed32 = 9;</code>
       *
       * @return The optionalSfixed32.
       */
      @java.lang.Override
      public int getOptionalSfixed32() {
        return optionalSfixed32_;
      }

      /**
       * <code>sfixed32 optional_sfixed32 = 9;</code>
       *
       * @param value The optionalSfixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalSfixed32(int value) {

        optionalSfixed32_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }

      /**
       * <code>sfixed32 optional_sfixed32 = 9;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalSfixed32() {
        bitField0_ = (bitField0_ & ~0x00000100);
        optionalSfixed32_ = 0;
        onChanged();
        return this;
      }

      private long optionalSfixed64_;

      /**
       * <code>sfixed64 optional_sfixed64 = 10;</code>
       *
       * @return The optionalSfixed64.
       */
      @java.lang.Override
      public long getOptionalSfixed64() {
        return optionalSfixed64_;
      }

      /**
       * <code>sfixed64 optional_sfixed64 = 10;</code>
       *
       * @param value The optionalSfixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalSfixed64(long value) {

        optionalSfixed64_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }

      /**
       * <code>sfixed64 optional_sfixed64 = 10;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalSfixed64() {
        bitField0_ = (bitField0_ & ~0x00000200);
        optionalSfixed64_ = 0L;
        onChanged();
        return this;
      }

      private float optionalFloat_;

      /**
       * <code>float optional_float = 11;</code>
       *
       * @return The optionalFloat.
       */
      @java.lang.Override
      public float getOptionalFloat() {
        return optionalFloat_;
      }

      /**
       * <code>float optional_float = 11;</code>
       *
       * @param value The optionalFloat to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalFloat(float value) {

        optionalFloat_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }

      /**
       * <code>float optional_float = 11;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalFloat() {
        bitField0_ = (bitField0_ & ~0x00000400);
        optionalFloat_ = 0F;
        onChanged();
        return this;
      }

      private double optionalDouble_;

      /**
       * <code>double optional_double = 12;</code>
       *
       * @return The optionalDouble.
       */
      @java.lang.Override
      public double getOptionalDouble() {
        return optionalDouble_;
      }

      /**
       * <code>double optional_double = 12;</code>
       *
       * @param value The optionalDouble to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalDouble(double value) {

        optionalDouble_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }

      /**
       * <code>double optional_double = 12;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalDouble() {
        bitField0_ = (bitField0_ & ~0x00000800);
        optionalDouble_ = 0D;
        onChanged();
        return this;
      }

      private boolean optionalBool_;

      /**
       * <code>bool optional_bool = 13;</code>
       *
       * @return The optionalBool.
       */
      @java.lang.Override
      public boolean getOptionalBool() {
        return optionalBool_;
      }

      /**
       * <code>bool optional_bool = 13;</code>
       *
       * @param value The optionalBool to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalBool(boolean value) {

        optionalBool_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }

      /**
       * <code>bool optional_bool = 13;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalBool() {
        bitField0_ = (bitField0_ & ~0x00001000);
        optionalBool_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object optionalString_ = "";

      /**
       * <code>string optional_string = 14;</code>
       *
       * @return The optionalString.
       */
      public java.lang.String getOptionalString() {
        java.lang.Object ref = optionalString_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          optionalString_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }

      /**
       * <code>string optional_string = 14;</code>
       *
       * @return The bytes for optionalString.
       */
      public com.google.protobuf.ByteString getOptionalStringBytes() {
        java.lang.Object ref = optionalString_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          optionalString_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      /**
       * <code>string optional_string = 14;</code>
       *
       * @param value The optionalString to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalString(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        optionalString_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }

      /**
       * <code>string optional_string = 14;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalString() {
        optionalString_ = getDefaultInstance().getOptionalString();
        bitField0_ = (bitField0_ & ~0x00002000);
        onChanged();
        return this;
      }

      /**
       * <code>string optional_string = 14;</code>
       *
       * @param value The bytes for optionalString to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalStringBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        optionalString_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString optionalBytes_ = com.google.protobuf.ByteString.EMPTY;

      /**
       * <code>bytes optional_bytes = 15;</code>
       *
       * @return The optionalBytes.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getOptionalBytes() {
        return optionalBytes_;
      }

      /**
       * <code>bytes optional_bytes = 15;</code>
       *
       * @param value The optionalBytes to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        optionalBytes_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }

      /**
       * <code>bytes optional_bytes = 15;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalBytes() {
        bitField0_ = (bitField0_ & ~0x00004000);
        optionalBytes_ = getDefaultInstance().getOptionalBytes();
        onChanged();
        return this;
      }

      private legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
          optionalNestedMessage_;
      private com.google.protobuf.SingleFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                  .NestedMessageOrBuilder>
          optionalNestedMessageBuilder_;

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
       * </code>
       *
       * @return Whether the optionalNestedMessage field is set.
       */
      public boolean hasOptionalNestedMessage() {
        return ((bitField0_ & 0x00008000) != 0);
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
       * </code>
       *
       * @return The optionalNestedMessage.
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
          getOptionalNestedMessage() {
        if (optionalNestedMessageBuilder_ == null) {
          return optionalNestedMessage_ == null
              ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .getDefaultInstance()
              : optionalNestedMessage_;
        } else {
          return optionalNestedMessageBuilder_.getMessage();
        }
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
       * </code>
       */
      public Builder setOptionalNestedMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              value) {
        if (optionalNestedMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          optionalNestedMessage_ = value;
        } else {
          optionalNestedMessageBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
       * </code>
       */
      public Builder setOptionalNestedMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .Builder
              builderForValue) {
        if (optionalNestedMessageBuilder_ == null) {
          optionalNestedMessage_ = builderForValue.build();
        } else {
          optionalNestedMessageBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
       * </code>
       */
      public Builder mergeOptionalNestedMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              value) {
        if (optionalNestedMessageBuilder_ == null) {
          if (((bitField0_ & 0x00008000) != 0)
              && optionalNestedMessage_ != null
              && optionalNestedMessage_
                  != legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessage.getDefaultInstance()) {
            getOptionalNestedMessageBuilder().mergeFrom(value);
          } else {
            optionalNestedMessage_ = value;
          }
        } else {
          optionalNestedMessageBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
       * </code>
       */
      public Builder clearOptionalNestedMessage() {
        bitField0_ = (bitField0_ & ~0x00008000);
        optionalNestedMessage_ = null;
        if (optionalNestedMessageBuilder_ != null) {
          optionalNestedMessageBuilder_.dispose();
          optionalNestedMessageBuilder_ = null;
        }
        onChanged();
        return this;
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
       * </code>
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              .Builder
          getOptionalNestedMessageBuilder() {
        bitField0_ |= 0x00008000;
        onChanged();
        return getOptionalNestedMessageFieldBuilder().getBuilder();
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
       * </code>
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessageOrBuilder
          getOptionalNestedMessageOrBuilder() {
        if (optionalNestedMessageBuilder_ != null) {
          return optionalNestedMessageBuilder_.getMessageOrBuilder();
        } else {
          return optionalNestedMessage_ == null
              ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .getDefaultInstance()
              : optionalNestedMessage_;
        }
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage optional_nested_message = 18;
       * </code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                  .NestedMessageOrBuilder>
          getOptionalNestedMessageFieldBuilder() {
        if (optionalNestedMessageBuilder_ == null) {
          optionalNestedMessageBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessage,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessage.Builder,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessageOrBuilder>(
                  getOptionalNestedMessage(), getParentForChildren(), isClean());
          optionalNestedMessage_ = null;
        }
        return optionalNestedMessageBuilder_;
      }

      private legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
          optionalForeignMessage_;
      private com.google.protobuf.SingleFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder>
          optionalForeignMessageBuilder_;

      /**
       * <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code>
       *
       * @return Whether the optionalForeignMessage field is set.
       */
      public boolean hasOptionalForeignMessage() {
        return ((bitField0_ & 0x00010000) != 0);
      }

      /**
       * <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code>
       *
       * @return The optionalForeignMessage.
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
          getOptionalForeignMessage() {
        if (optionalForeignMessageBuilder_ == null) {
          return optionalForeignMessage_ == null
              ? legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
                  .getDefaultInstance()
              : optionalForeignMessage_;
        } else {
          return optionalForeignMessageBuilder_.getMessage();
        }
      }

      /** <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code> */
      public Builder setOptionalForeignMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage value) {
        if (optionalForeignMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          optionalForeignMessage_ = value;
        } else {
          optionalForeignMessageBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }

      /** <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code> */
      public Builder setOptionalForeignMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder
              builderForValue) {
        if (optionalForeignMessageBuilder_ == null) {
          optionalForeignMessage_ = builderForValue.build();
        } else {
          optionalForeignMessageBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }

      /** <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code> */
      public Builder mergeOptionalForeignMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage value) {
        if (optionalForeignMessageBuilder_ == null) {
          if (((bitField0_ & 0x00010000) != 0)
              && optionalForeignMessage_ != null
              && optionalForeignMessage_
                  != legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
                      .getDefaultInstance()) {
            getOptionalForeignMessageBuilder().mergeFrom(value);
          } else {
            optionalForeignMessage_ = value;
          }
        } else {
          optionalForeignMessageBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }

      /** <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code> */
      public Builder clearOptionalForeignMessage() {
        bitField0_ = (bitField0_ & ~0x00010000);
        optionalForeignMessage_ = null;
        if (optionalForeignMessageBuilder_ != null) {
          optionalForeignMessageBuilder_.dispose();
          optionalForeignMessageBuilder_ = null;
        }
        onChanged();
        return this;
      }

      /** <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code> */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder
          getOptionalForeignMessageBuilder() {
        bitField0_ |= 0x00010000;
        onChanged();
        return getOptionalForeignMessageFieldBuilder().getBuilder();
      }

      /** <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code> */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder
          getOptionalForeignMessageOrBuilder() {
        if (optionalForeignMessageBuilder_ != null) {
          return optionalForeignMessageBuilder_.getMessageOrBuilder();
        } else {
          return optionalForeignMessage_ == null
              ? legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
                  .getDefaultInstance()
              : optionalForeignMessage_;
        }
      }

      /** <code>.legacy_gencode_test.proto3.ForeignMessage optional_foreign_message = 19;</code> */
      private com.google.protobuf.SingleFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder>
          getOptionalForeignMessageFieldBuilder() {
        if (optionalForeignMessageBuilder_ == null) {
          optionalForeignMessageBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder>(
                  getOptionalForeignMessage(), getParentForChildren(), isClean());
          optionalForeignMessage_ = null;
        }
        return optionalForeignMessageBuilder_;
      }

      private int optionalNestedEnum_ = 0;

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum optional_nested_enum = 21;
       * </code>
       *
       * @return The enum numeric value on the wire for optionalNestedEnum.
       */
      @java.lang.Override
      public int getOptionalNestedEnumValue() {
        return optionalNestedEnum_;
      }

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum optional_nested_enum = 21;
       * </code>
       *
       * @param value The enum numeric value on the wire for optionalNestedEnum to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalNestedEnumValue(int value) {
        optionalNestedEnum_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum optional_nested_enum = 21;
       * </code>
       *
       * @return The optionalNestedEnum.
       */
      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
          getOptionalNestedEnum() {
        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum result =
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                .forNumber(optionalNestedEnum_);
        return result == null
            ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                .UNRECOGNIZED
            : result;
      }

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum optional_nested_enum = 21;
       * </code>
       *
       * @param value The optionalNestedEnum to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalNestedEnum(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00020000;
        optionalNestedEnum_ = value.getNumber();
        onChanged();
        return this;
      }

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum optional_nested_enum = 21;
       * </code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalNestedEnum() {
        bitField0_ = (bitField0_ & ~0x00020000);
        optionalNestedEnum_ = 0;
        onChanged();
        return this;
      }

      private int optionalForeignEnum_ = 0;

      /**
       * <code>.legacy_gencode_test.proto3.ForeignEnum optional_foreign_enum = 22;</code>
       *
       * @return The enum numeric value on the wire for optionalForeignEnum.
       */
      @java.lang.Override
      public int getOptionalForeignEnumValue() {
        return optionalForeignEnum_;
      }

      /**
       * <code>.legacy_gencode_test.proto3.ForeignEnum optional_foreign_enum = 22;</code>
       *
       * @param value The enum numeric value on the wire for optionalForeignEnum to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalForeignEnumValue(int value) {
        optionalForeignEnum_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }

      /**
       * <code>.legacy_gencode_test.proto3.ForeignEnum optional_foreign_enum = 22;</code>
       *
       * @return The optionalForeignEnum.
       */
      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum
          getOptionalForeignEnum() {
        legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum result =
            legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum.forNumber(
                optionalForeignEnum_);
        return result == null
            ? legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum.UNRECOGNIZED
            : result;
      }

      /**
       * <code>.legacy_gencode_test.proto3.ForeignEnum optional_foreign_enum = 22;</code>
       *
       * @param value The optionalForeignEnum to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalForeignEnum(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00040000;
        optionalForeignEnum_ = value.getNumber();
        onChanged();
        return this;
      }

      /**
       * <code>.legacy_gencode_test.proto3.ForeignEnum optional_foreign_enum = 22;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalForeignEnum() {
        bitField0_ = (bitField0_ & ~0x00040000);
        optionalForeignEnum_ = 0;
        onChanged();
        return this;
      }

      private int optionalAliasedEnum_ = 0;

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.AliasedEnum optional_aliased_enum = 23;
       * </code>
       *
       * @return The enum numeric value on the wire for optionalAliasedEnum.
       */
      @java.lang.Override
      public int getOptionalAliasedEnumValue() {
        return optionalAliasedEnum_;
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.AliasedEnum optional_aliased_enum = 23;
       * </code>
       *
       * @param value The enum numeric value on the wire for optionalAliasedEnum to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalAliasedEnumValue(int value) {
        optionalAliasedEnum_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.AliasedEnum optional_aliased_enum = 23;
       * </code>
       *
       * @return The optionalAliasedEnum.
       */
      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.AliasedEnum
          getOptionalAliasedEnum() {
        legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.AliasedEnum result =
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.AliasedEnum
                .forNumber(optionalAliasedEnum_);
        return result == null
            ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.AliasedEnum
                .UNRECOGNIZED
            : result;
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.AliasedEnum optional_aliased_enum = 23;
       * </code>
       *
       * @param value The optionalAliasedEnum to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalAliasedEnum(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.AliasedEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00080000;
        optionalAliasedEnum_ = value.getNumber();
        onChanged();
        return this;
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.AliasedEnum optional_aliased_enum = 23;
       * </code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOptionalAliasedEnum() {
        bitField0_ = (bitField0_ & ~0x00080000);
        optionalAliasedEnum_ = 0;
        onChanged();
        return this;
      }

      private legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
          recursiveMessage_;
      private com.google.protobuf.SingleFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3OrBuilder>
          recursiveMessageBuilder_;

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code>
       *
       * @return Whether the recursiveMessage field is set.
       */
      public boolean hasRecursiveMessage() {
        return ((bitField0_ & 0x00100000) != 0);
      }

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code>
       *
       * @return The recursiveMessage.
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
          getRecursiveMessage() {
        if (recursiveMessageBuilder_ == null) {
          return recursiveMessage_ == null
              ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                  .getDefaultInstance()
              : recursiveMessage_;
        } else {
          return recursiveMessageBuilder_.getMessage();
        }
      }

      /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code> */
      public Builder setRecursiveMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 value) {
        if (recursiveMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          recursiveMessage_ = value;
        } else {
          recursiveMessageBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }

      /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code> */
      public Builder setRecursiveMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.Builder
              builderForValue) {
        if (recursiveMessageBuilder_ == null) {
          recursiveMessage_ = builderForValue.build();
        } else {
          recursiveMessageBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }

      /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code> */
      public Builder mergeRecursiveMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3 value) {
        if (recursiveMessageBuilder_ == null) {
          if (((bitField0_ & 0x00100000) != 0)
              && recursiveMessage_ != null
              && recursiveMessage_
                  != legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .getDefaultInstance()) {
            getRecursiveMessageBuilder().mergeFrom(value);
          } else {
            recursiveMessage_ = value;
          }
        } else {
          recursiveMessageBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }

      /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code> */
      public Builder clearRecursiveMessage() {
        bitField0_ = (bitField0_ & ~0x00100000);
        recursiveMessage_ = null;
        if (recursiveMessageBuilder_ != null) {
          recursiveMessageBuilder_.dispose();
          recursiveMessageBuilder_ = null;
        }
        onChanged();
        return this;
      }

      /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code> */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.Builder
          getRecursiveMessageBuilder() {
        bitField0_ |= 0x00100000;
        onChanged();
        return getRecursiveMessageFieldBuilder().getBuilder();
      }

      /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code> */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3OrBuilder
          getRecursiveMessageOrBuilder() {
        if (recursiveMessageBuilder_ != null) {
          return recursiveMessageBuilder_.getMessageOrBuilder();
        } else {
          return recursiveMessage_ == null
              ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                  .getDefaultInstance()
              : recursiveMessage_;
        }
      }

      /** <code>.legacy_gencode_test.proto3.TestMostTypesProto3 recursive_message = 27;</code> */
      private com.google.protobuf.SingleFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3OrBuilder>
          getRecursiveMessageFieldBuilder() {
        if (recursiveMessageBuilder_ == null) {
          recursiveMessageBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.Builder,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3OrBuilder>(
                  getRecursiveMessage(), getParentForChildren(), isClean());
          recursiveMessage_ = null;
        }
        return recursiveMessageBuilder_;
      }

      private com.google.protobuf.Internal.IntList repeatedInt32_ = emptyIntList();

      private void ensureRepeatedInt32IsMutable() {
        if (!((bitField0_ & 0x00200000) != 0)) {
          repeatedInt32_ = mutableCopy(repeatedInt32_);
          bitField0_ |= 0x00200000;
        }
      }

      /**
       *
       *
       * <pre>
       * Repeated
       * </pre>
       *
       * <code>repeated int32 repeated_int32 = 31;</code>
       *
       * @return A list containing the repeatedInt32.
       */
      public java.util.List<java.lang.Integer> getRepeatedInt32List() {
        return ((bitField0_ & 0x00200000) != 0)
            ? java.util.Collections.unmodifiableList(repeatedInt32_)
            : repeatedInt32_;
      }

      /**
       *
       *
       * <pre>
       * Repeated
       * </pre>
       *
       * <code>repeated int32 repeated_int32 = 31;</code>
       *
       * @return The count of repeatedInt32.
       */
      public int getRepeatedInt32Count() {
        return repeatedInt32_.size();
      }

      /**
       *
       *
       * <pre>
       * Repeated
       * </pre>
       *
       * <code>repeated int32 repeated_int32 = 31;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedInt32 at the given index.
       */
      public int getRepeatedInt32(int index) {
        return repeatedInt32_.getInt(index);
      }

      /**
       *
       *
       * <pre>
       * Repeated
       * </pre>
       *
       * <code>repeated int32 repeated_int32 = 31;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedInt32 to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedInt32(int index, int value) {

        ensureRepeatedInt32IsMutable();
        repeatedInt32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       *
       *
       * <pre>
       * Repeated
       * </pre>
       *
       * <code>repeated int32 repeated_int32 = 31;</code>
       *
       * @param value The repeatedInt32 to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedInt32(int value) {

        ensureRepeatedInt32IsMutable();
        repeatedInt32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       *
       *
       * <pre>
       * Repeated
       * </pre>
       *
       * <code>repeated int32 repeated_int32 = 31;</code>
       *
       * @param values The repeatedInt32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedInt32(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureRepeatedInt32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedInt32_);
        onChanged();
        return this;
      }

      /**
       *
       *
       * <pre>
       * Repeated
       * </pre>
       *
       * <code>repeated int32 repeated_int32 = 31;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedInt32() {
        repeatedInt32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00200000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList repeatedInt64_ = emptyLongList();

      private void ensureRepeatedInt64IsMutable() {
        if (!((bitField0_ & 0x00400000) != 0)) {
          repeatedInt64_ = mutableCopy(repeatedInt64_);
          bitField0_ |= 0x00400000;
        }
      }

      /**
       * <code>repeated int64 repeated_int64 = 32;</code>
       *
       * @return A list containing the repeatedInt64.
       */
      public java.util.List<java.lang.Long> getRepeatedInt64List() {
        return ((bitField0_ & 0x00400000) != 0)
            ? java.util.Collections.unmodifiableList(repeatedInt64_)
            : repeatedInt64_;
      }

      /**
       * <code>repeated int64 repeated_int64 = 32;</code>
       *
       * @return The count of repeatedInt64.
       */
      public int getRepeatedInt64Count() {
        return repeatedInt64_.size();
      }

      /**
       * <code>repeated int64 repeated_int64 = 32;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedInt64 at the given index.
       */
      public long getRepeatedInt64(int index) {
        return repeatedInt64_.getLong(index);
      }

      /**
       * <code>repeated int64 repeated_int64 = 32;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedInt64 to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedInt64(int index, long value) {

        ensureRepeatedInt64IsMutable();
        repeatedInt64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated int64 repeated_int64 = 32;</code>
       *
       * @param value The repeatedInt64 to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedInt64(long value) {

        ensureRepeatedInt64IsMutable();
        repeatedInt64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated int64 repeated_int64 = 32;</code>
       *
       * @param values The repeatedInt64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedInt64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensureRepeatedInt64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedInt64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated int64 repeated_int64 = 32;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedInt64() {
        repeatedInt64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00400000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList repeatedUint32_ = emptyIntList();

      private void ensureRepeatedUint32IsMutable() {
        if (!((bitField0_ & 0x00800000) != 0)) {
          repeatedUint32_ = mutableCopy(repeatedUint32_);
          bitField0_ |= 0x00800000;
        }
      }

      /**
       * <code>repeated uint32 repeated_uint32 = 33;</code>
       *
       * @return A list containing the repeatedUint32.
       */
      public java.util.List<java.lang.Integer> getRepeatedUint32List() {
        return ((bitField0_ & 0x00800000) != 0)
            ? java.util.Collections.unmodifiableList(repeatedUint32_)
            : repeatedUint32_;
      }

      /**
       * <code>repeated uint32 repeated_uint32 = 33;</code>
       *
       * @return The count of repeatedUint32.
       */
      public int getRepeatedUint32Count() {
        return repeatedUint32_.size();
      }

      /**
       * <code>repeated uint32 repeated_uint32 = 33;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedUint32 at the given index.
       */
      public int getRepeatedUint32(int index) {
        return repeatedUint32_.getInt(index);
      }

      /**
       * <code>repeated uint32 repeated_uint32 = 33;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedUint32 to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedUint32(int index, int value) {

        ensureRepeatedUint32IsMutable();
        repeatedUint32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint32 repeated_uint32 = 33;</code>
       *
       * @param value The repeatedUint32 to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedUint32(int value) {

        ensureRepeatedUint32IsMutable();
        repeatedUint32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint32 repeated_uint32 = 33;</code>
       *
       * @param values The repeatedUint32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedUint32(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureRepeatedUint32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedUint32_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint32 repeated_uint32 = 33;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedUint32() {
        repeatedUint32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00800000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList repeatedUint64_ = emptyLongList();

      private void ensureRepeatedUint64IsMutable() {
        if (!((bitField0_ & 0x01000000) != 0)) {
          repeatedUint64_ = mutableCopy(repeatedUint64_);
          bitField0_ |= 0x01000000;
        }
      }

      /**
       * <code>repeated uint64 repeated_uint64 = 34;</code>
       *
       * @return A list containing the repeatedUint64.
       */
      public java.util.List<java.lang.Long> getRepeatedUint64List() {
        return ((bitField0_ & 0x01000000) != 0)
            ? java.util.Collections.unmodifiableList(repeatedUint64_)
            : repeatedUint64_;
      }

      /**
       * <code>repeated uint64 repeated_uint64 = 34;</code>
       *
       * @return The count of repeatedUint64.
       */
      public int getRepeatedUint64Count() {
        return repeatedUint64_.size();
      }

      /**
       * <code>repeated uint64 repeated_uint64 = 34;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedUint64 at the given index.
       */
      public long getRepeatedUint64(int index) {
        return repeatedUint64_.getLong(index);
      }

      /**
       * <code>repeated uint64 repeated_uint64 = 34;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedUint64 to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedUint64(int index, long value) {

        ensureRepeatedUint64IsMutable();
        repeatedUint64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint64 repeated_uint64 = 34;</code>
       *
       * @param value The repeatedUint64 to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedUint64(long value) {

        ensureRepeatedUint64IsMutable();
        repeatedUint64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint64 repeated_uint64 = 34;</code>
       *
       * @param values The repeatedUint64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedUint64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensureRepeatedUint64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedUint64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint64 repeated_uint64 = 34;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedUint64() {
        repeatedUint64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x01000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList repeatedSint32_ = emptyIntList();

      private void ensureRepeatedSint32IsMutable() {
        if (!((bitField0_ & 0x02000000) != 0)) {
          repeatedSint32_ = mutableCopy(repeatedSint32_);
          bitField0_ |= 0x02000000;
        }
      }

      /**
       * <code>repeated sint32 repeated_sint32 = 35;</code>
       *
       * @return A list containing the repeatedSint32.
       */
      public java.util.List<java.lang.Integer> getRepeatedSint32List() {
        return ((bitField0_ & 0x02000000) != 0)
            ? java.util.Collections.unmodifiableList(repeatedSint32_)
            : repeatedSint32_;
      }

      /**
       * <code>repeated sint32 repeated_sint32 = 35;</code>
       *
       * @return The count of repeatedSint32.
       */
      public int getRepeatedSint32Count() {
        return repeatedSint32_.size();
      }

      /**
       * <code>repeated sint32 repeated_sint32 = 35;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedSint32 at the given index.
       */
      public int getRepeatedSint32(int index) {
        return repeatedSint32_.getInt(index);
      }

      /**
       * <code>repeated sint32 repeated_sint32 = 35;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedSint32 to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedSint32(int index, int value) {

        ensureRepeatedSint32IsMutable();
        repeatedSint32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint32 repeated_sint32 = 35;</code>
       *
       * @param value The repeatedSint32 to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedSint32(int value) {

        ensureRepeatedSint32IsMutable();
        repeatedSint32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint32 repeated_sint32 = 35;</code>
       *
       * @param values The repeatedSint32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedSint32(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureRepeatedSint32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedSint32_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint32 repeated_sint32 = 35;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedSint32() {
        repeatedSint32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x02000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList repeatedSint64_ = emptyLongList();

      private void ensureRepeatedSint64IsMutable() {
        if (!((bitField0_ & 0x04000000) != 0)) {
          repeatedSint64_ = mutableCopy(repeatedSint64_);
          bitField0_ |= 0x04000000;
        }
      }

      /**
       * <code>repeated sint64 repeated_sint64 = 36;</code>
       *
       * @return A list containing the repeatedSint64.
       */
      public java.util.List<java.lang.Long> getRepeatedSint64List() {
        return ((bitField0_ & 0x04000000) != 0)
            ? java.util.Collections.unmodifiableList(repeatedSint64_)
            : repeatedSint64_;
      }

      /**
       * <code>repeated sint64 repeated_sint64 = 36;</code>
       *
       * @return The count of repeatedSint64.
       */
      public int getRepeatedSint64Count() {
        return repeatedSint64_.size();
      }

      /**
       * <code>repeated sint64 repeated_sint64 = 36;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedSint64 at the given index.
       */
      public long getRepeatedSint64(int index) {
        return repeatedSint64_.getLong(index);
      }

      /**
       * <code>repeated sint64 repeated_sint64 = 36;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedSint64 to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedSint64(int index, long value) {

        ensureRepeatedSint64IsMutable();
        repeatedSint64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint64 repeated_sint64 = 36;</code>
       *
       * @param value The repeatedSint64 to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedSint64(long value) {

        ensureRepeatedSint64IsMutable();
        repeatedSint64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint64 repeated_sint64 = 36;</code>
       *
       * @param values The repeatedSint64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedSint64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensureRepeatedSint64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedSint64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint64 repeated_sint64 = 36;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedSint64() {
        repeatedSint64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x04000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList repeatedFixed32_ = emptyIntList();

      private void ensureRepeatedFixed32IsMutable() {
        if (!((bitField0_ & 0x08000000) != 0)) {
          repeatedFixed32_ = mutableCopy(repeatedFixed32_);
          bitField0_ |= 0x08000000;
        }
      }

      /**
       * <code>repeated fixed32 repeated_fixed32 = 37;</code>
       *
       * @return A list containing the repeatedFixed32.
       */
      public java.util.List<java.lang.Integer> getRepeatedFixed32List() {
        return ((bitField0_ & 0x08000000) != 0)
            ? java.util.Collections.unmodifiableList(repeatedFixed32_)
            : repeatedFixed32_;
      }

      /**
       * <code>repeated fixed32 repeated_fixed32 = 37;</code>
       *
       * @return The count of repeatedFixed32.
       */
      public int getRepeatedFixed32Count() {
        return repeatedFixed32_.size();
      }

      /**
       * <code>repeated fixed32 repeated_fixed32 = 37;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedFixed32 at the given index.
       */
      public int getRepeatedFixed32(int index) {
        return repeatedFixed32_.getInt(index);
      }

      /**
       * <code>repeated fixed32 repeated_fixed32 = 37;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedFixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedFixed32(int index, int value) {

        ensureRepeatedFixed32IsMutable();
        repeatedFixed32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed32 repeated_fixed32 = 37;</code>
       *
       * @param value The repeatedFixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedFixed32(int value) {

        ensureRepeatedFixed32IsMutable();
        repeatedFixed32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed32 repeated_fixed32 = 37;</code>
       *
       * @param values The repeatedFixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedFixed32(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureRepeatedFixed32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedFixed32_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed32 repeated_fixed32 = 37;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedFixed32() {
        repeatedFixed32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x08000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList repeatedFixed64_ = emptyLongList();

      private void ensureRepeatedFixed64IsMutable() {
        if (!((bitField0_ & 0x10000000) != 0)) {
          repeatedFixed64_ = mutableCopy(repeatedFixed64_);
          bitField0_ |= 0x10000000;
        }
      }

      /**
       * <code>repeated fixed64 repeated_fixed64 = 38;</code>
       *
       * @return A list containing the repeatedFixed64.
       */
      public java.util.List<java.lang.Long> getRepeatedFixed64List() {
        return ((bitField0_ & 0x10000000) != 0)
            ? java.util.Collections.unmodifiableList(repeatedFixed64_)
            : repeatedFixed64_;
      }

      /**
       * <code>repeated fixed64 repeated_fixed64 = 38;</code>
       *
       * @return The count of repeatedFixed64.
       */
      public int getRepeatedFixed64Count() {
        return repeatedFixed64_.size();
      }

      /**
       * <code>repeated fixed64 repeated_fixed64 = 38;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedFixed64 at the given index.
       */
      public long getRepeatedFixed64(int index) {
        return repeatedFixed64_.getLong(index);
      }

      /**
       * <code>repeated fixed64 repeated_fixed64 = 38;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedFixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedFixed64(int index, long value) {

        ensureRepeatedFixed64IsMutable();
        repeatedFixed64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed64 repeated_fixed64 = 38;</code>
       *
       * @param value The repeatedFixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedFixed64(long value) {

        ensureRepeatedFixed64IsMutable();
        repeatedFixed64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed64 repeated_fixed64 = 38;</code>
       *
       * @param values The repeatedFixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedFixed64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensureRepeatedFixed64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedFixed64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed64 repeated_fixed64 = 38;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedFixed64() {
        repeatedFixed64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x10000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList repeatedSfixed32_ = emptyIntList();

      private void ensureRepeatedSfixed32IsMutable() {
        if (!((bitField0_ & 0x20000000) != 0)) {
          repeatedSfixed32_ = mutableCopy(repeatedSfixed32_);
          bitField0_ |= 0x20000000;
        }
      }

      /**
       * <code>repeated sfixed32 repeated_sfixed32 = 39;</code>
       *
       * @return A list containing the repeatedSfixed32.
       */
      public java.util.List<java.lang.Integer> getRepeatedSfixed32List() {
        return ((bitField0_ & 0x20000000) != 0)
            ? java.util.Collections.unmodifiableList(repeatedSfixed32_)
            : repeatedSfixed32_;
      }

      /**
       * <code>repeated sfixed32 repeated_sfixed32 = 39;</code>
       *
       * @return The count of repeatedSfixed32.
       */
      public int getRepeatedSfixed32Count() {
        return repeatedSfixed32_.size();
      }

      /**
       * <code>repeated sfixed32 repeated_sfixed32 = 39;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedSfixed32 at the given index.
       */
      public int getRepeatedSfixed32(int index) {
        return repeatedSfixed32_.getInt(index);
      }

      /**
       * <code>repeated sfixed32 repeated_sfixed32 = 39;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedSfixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedSfixed32(int index, int value) {

        ensureRepeatedSfixed32IsMutable();
        repeatedSfixed32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed32 repeated_sfixed32 = 39;</code>
       *
       * @param value The repeatedSfixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedSfixed32(int value) {

        ensureRepeatedSfixed32IsMutable();
        repeatedSfixed32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed32 repeated_sfixed32 = 39;</code>
       *
       * @param values The repeatedSfixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedSfixed32(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureRepeatedSfixed32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedSfixed32_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed32 repeated_sfixed32 = 39;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedSfixed32() {
        repeatedSfixed32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x20000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList repeatedSfixed64_ = emptyLongList();

      private void ensureRepeatedSfixed64IsMutable() {
        if (!((bitField0_ & 0x40000000) != 0)) {
          repeatedSfixed64_ = mutableCopy(repeatedSfixed64_);
          bitField0_ |= 0x40000000;
        }
      }

      /**
       * <code>repeated sfixed64 repeated_sfixed64 = 40;</code>
       *
       * @return A list containing the repeatedSfixed64.
       */
      public java.util.List<java.lang.Long> getRepeatedSfixed64List() {
        return ((bitField0_ & 0x40000000) != 0)
            ? java.util.Collections.unmodifiableList(repeatedSfixed64_)
            : repeatedSfixed64_;
      }

      /**
       * <code>repeated sfixed64 repeated_sfixed64 = 40;</code>
       *
       * @return The count of repeatedSfixed64.
       */
      public int getRepeatedSfixed64Count() {
        return repeatedSfixed64_.size();
      }

      /**
       * <code>repeated sfixed64 repeated_sfixed64 = 40;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedSfixed64 at the given index.
       */
      public long getRepeatedSfixed64(int index) {
        return repeatedSfixed64_.getLong(index);
      }

      /**
       * <code>repeated sfixed64 repeated_sfixed64 = 40;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedSfixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedSfixed64(int index, long value) {

        ensureRepeatedSfixed64IsMutable();
        repeatedSfixed64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed64 repeated_sfixed64 = 40;</code>
       *
       * @param value The repeatedSfixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedSfixed64(long value) {

        ensureRepeatedSfixed64IsMutable();
        repeatedSfixed64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed64 repeated_sfixed64 = 40;</code>
       *
       * @param values The repeatedSfixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedSfixed64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensureRepeatedSfixed64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedSfixed64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed64 repeated_sfixed64 = 40;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedSfixed64() {
        repeatedSfixed64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x40000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.FloatList repeatedFloat_ = emptyFloatList();

      private void ensureRepeatedFloatIsMutable() {
        if (!((bitField0_ & 0x80000000) != 0)) {
          repeatedFloat_ = mutableCopy(repeatedFloat_);
          bitField0_ |= 0x80000000;
        }
      }

      /**
       * <code>repeated float repeated_float = 41;</code>
       *
       * @return A list containing the repeatedFloat.
       */
      public java.util.List<java.lang.Float> getRepeatedFloatList() {
        return ((bitField0_ & 0x80000000) != 0)
            ? java.util.Collections.unmodifiableList(repeatedFloat_)
            : repeatedFloat_;
      }

      /**
       * <code>repeated float repeated_float = 41;</code>
       *
       * @return The count of repeatedFloat.
       */
      public int getRepeatedFloatCount() {
        return repeatedFloat_.size();
      }

      /**
       * <code>repeated float repeated_float = 41;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedFloat at the given index.
       */
      public float getRepeatedFloat(int index) {
        return repeatedFloat_.getFloat(index);
      }

      /**
       * <code>repeated float repeated_float = 41;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedFloat to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedFloat(int index, float value) {

        ensureRepeatedFloatIsMutable();
        repeatedFloat_.setFloat(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated float repeated_float = 41;</code>
       *
       * @param value The repeatedFloat to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedFloat(float value) {

        ensureRepeatedFloatIsMutable();
        repeatedFloat_.addFloat(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated float repeated_float = 41;</code>
       *
       * @param values The repeatedFloat to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedFloat(java.lang.Iterable<? extends java.lang.Float> values) {
        ensureRepeatedFloatIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedFloat_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated float repeated_float = 41;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedFloat() {
        repeatedFloat_ = emptyFloatList();
        bitField0_ = (bitField0_ & ~0x80000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList repeatedDouble_ = emptyDoubleList();

      private void ensureRepeatedDoubleIsMutable() {
        if (!((bitField1_ & 0x00000001) != 0)) {
          repeatedDouble_ = mutableCopy(repeatedDouble_);
          bitField1_ |= 0x00000001;
        }
      }

      /**
       * <code>repeated double repeated_double = 42;</code>
       *
       * @return A list containing the repeatedDouble.
       */
      public java.util.List<java.lang.Double> getRepeatedDoubleList() {
        return ((bitField1_ & 0x00000001) != 0)
            ? java.util.Collections.unmodifiableList(repeatedDouble_)
            : repeatedDouble_;
      }

      /**
       * <code>repeated double repeated_double = 42;</code>
       *
       * @return The count of repeatedDouble.
       */
      public int getRepeatedDoubleCount() {
        return repeatedDouble_.size();
      }

      /**
       * <code>repeated double repeated_double = 42;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedDouble at the given index.
       */
      public double getRepeatedDouble(int index) {
        return repeatedDouble_.getDouble(index);
      }

      /**
       * <code>repeated double repeated_double = 42;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedDouble to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedDouble(int index, double value) {

        ensureRepeatedDoubleIsMutable();
        repeatedDouble_.setDouble(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated double repeated_double = 42;</code>
       *
       * @param value The repeatedDouble to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedDouble(double value) {

        ensureRepeatedDoubleIsMutable();
        repeatedDouble_.addDouble(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated double repeated_double = 42;</code>
       *
       * @param values The repeatedDouble to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedDouble(java.lang.Iterable<? extends java.lang.Double> values) {
        ensureRepeatedDoubleIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedDouble_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated double repeated_double = 42;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedDouble() {
        repeatedDouble_ = emptyDoubleList();
        bitField1_ = (bitField1_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.BooleanList repeatedBool_ = emptyBooleanList();

      private void ensureRepeatedBoolIsMutable() {
        if (!((bitField1_ & 0x00000002) != 0)) {
          repeatedBool_ = mutableCopy(repeatedBool_);
          bitField1_ |= 0x00000002;
        }
      }

      /**
       * <code>repeated bool repeated_bool = 43;</code>
       *
       * @return A list containing the repeatedBool.
       */
      public java.util.List<java.lang.Boolean> getRepeatedBoolList() {
        return ((bitField1_ & 0x00000002) != 0)
            ? java.util.Collections.unmodifiableList(repeatedBool_)
            : repeatedBool_;
      }

      /**
       * <code>repeated bool repeated_bool = 43;</code>
       *
       * @return The count of repeatedBool.
       */
      public int getRepeatedBoolCount() {
        return repeatedBool_.size();
      }

      /**
       * <code>repeated bool repeated_bool = 43;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedBool at the given index.
       */
      public boolean getRepeatedBool(int index) {
        return repeatedBool_.getBoolean(index);
      }

      /**
       * <code>repeated bool repeated_bool = 43;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedBool to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedBool(int index, boolean value) {

        ensureRepeatedBoolIsMutable();
        repeatedBool_.setBoolean(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated bool repeated_bool = 43;</code>
       *
       * @param value The repeatedBool to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedBool(boolean value) {

        ensureRepeatedBoolIsMutable();
        repeatedBool_.addBoolean(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated bool repeated_bool = 43;</code>
       *
       * @param values The repeatedBool to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedBool(java.lang.Iterable<? extends java.lang.Boolean> values) {
        ensureRepeatedBoolIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedBool_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated bool repeated_bool = 43;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedBool() {
        repeatedBool_ = emptyBooleanList();
        bitField1_ = (bitField1_ & ~0x00000002);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList repeatedString_ =
          com.google.protobuf.LazyStringArrayList.EMPTY;

      private void ensureRepeatedStringIsMutable() {
        if (!((bitField1_ & 0x00000004) != 0)) {
          repeatedString_ = new com.google.protobuf.LazyStringArrayList(repeatedString_);
          bitField1_ |= 0x00000004;
        }
      }

      /**
       * <code>repeated string repeated_string = 44;</code>
       *
       * @return A list containing the repeatedString.
       */
      public com.google.protobuf.ProtocolStringList getRepeatedStringList() {
        return repeatedString_.getUnmodifiableView();
      }

      /**
       * <code>repeated string repeated_string = 44;</code>
       *
       * @return The count of repeatedString.
       */
      public int getRepeatedStringCount() {
        return repeatedString_.size();
      }

      /**
       * <code>repeated string repeated_string = 44;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedString at the given index.
       */
      public java.lang.String getRepeatedString(int index) {
        return repeatedString_.get(index);
      }

      /**
       * <code>repeated string repeated_string = 44;</code>
       *
       * @param index The index of the value to return.
       * @return The bytes of the repeatedString at the given index.
       */
      public com.google.protobuf.ByteString getRepeatedStringBytes(int index) {
        return repeatedString_.getByteString(index);
      }

      /**
       * <code>repeated string repeated_string = 44;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedString to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedString(int index, java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureRepeatedStringIsMutable();
        repeatedString_.set(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated string repeated_string = 44;</code>
       *
       * @param value The repeatedString to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedString(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureRepeatedStringIsMutable();
        repeatedString_.add(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated string repeated_string = 44;</code>
       *
       * @param values The repeatedString to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedString(java.lang.Iterable<java.lang.String> values) {
        ensureRepeatedStringIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedString_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated string repeated_string = 44;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedString() {
        repeatedString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField1_ = (bitField1_ & ~0x00000004);
        onChanged();
        return this;
      }

      /**
       * <code>repeated string repeated_string = 44;</code>
       *
       * @param value The bytes of the repeatedString to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedStringBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        ensureRepeatedStringIsMutable();
        repeatedString_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<com.google.protobuf.ByteString> repeatedBytes_ =
          java.util.Collections.emptyList();

      private void ensureRepeatedBytesIsMutable() {
        if (!((bitField1_ & 0x00000008) != 0)) {
          repeatedBytes_ = new java.util.ArrayList<com.google.protobuf.ByteString>(repeatedBytes_);
          bitField1_ |= 0x00000008;
        }
      }

      /**
       * <code>repeated bytes repeated_bytes = 45;</code>
       *
       * @return A list containing the repeatedBytes.
       */
      public java.util.List<com.google.protobuf.ByteString> getRepeatedBytesList() {
        return ((bitField1_ & 0x00000008) != 0)
            ? java.util.Collections.unmodifiableList(repeatedBytes_)
            : repeatedBytes_;
      }

      /**
       * <code>repeated bytes repeated_bytes = 45;</code>
       *
       * @return The count of repeatedBytes.
       */
      public int getRepeatedBytesCount() {
        return repeatedBytes_.size();
      }

      /**
       * <code>repeated bytes repeated_bytes = 45;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedBytes at the given index.
       */
      public com.google.protobuf.ByteString getRepeatedBytes(int index) {
        return repeatedBytes_.get(index);
      }

      /**
       * <code>repeated bytes repeated_bytes = 45;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedBytes to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedBytes(int index, com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureRepeatedBytesIsMutable();
        repeatedBytes_.set(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated bytes repeated_bytes = 45;</code>
       *
       * @param value The repeatedBytes to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureRepeatedBytesIsMutable();
        repeatedBytes_.add(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated bytes repeated_bytes = 45;</code>
       *
       * @param values The repeatedBytes to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedBytes(
          java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
        ensureRepeatedBytesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedBytes_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated bytes repeated_bytes = 45;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedBytes() {
        repeatedBytes_ = java.util.Collections.emptyList();
        bitField1_ = (bitField1_ & ~0x00000008);
        onChanged();
        return this;
      }

      private java.util.List<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
          repeatedNestedMessage_ = java.util.Collections.emptyList();

      private void ensureRepeatedNestedMessageIsMutable() {
        if (!((bitField1_ & 0x00000010) != 0)) {
          repeatedNestedMessage_ =
              new java.util.ArrayList<
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessage>(repeatedNestedMessage_);
          bitField1_ |= 0x00000010;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                  .NestedMessageOrBuilder>
          repeatedNestedMessageBuilder_;

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public java.util.List<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
          getRepeatedNestedMessageList() {
        if (repeatedNestedMessageBuilder_ == null) {
          return java.util.Collections.unmodifiableList(repeatedNestedMessage_);
        } else {
          return repeatedNestedMessageBuilder_.getMessageList();
        }
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public int getRepeatedNestedMessageCount() {
        if (repeatedNestedMessageBuilder_ == null) {
          return repeatedNestedMessage_.size();
        } else {
          return repeatedNestedMessageBuilder_.getCount();
        }
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
          getRepeatedNestedMessage(int index) {
        if (repeatedNestedMessageBuilder_ == null) {
          return repeatedNestedMessage_.get(index);
        } else {
          return repeatedNestedMessageBuilder_.getMessage(index);
        }
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public Builder setRepeatedNestedMessage(
          int index,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              value) {
        if (repeatedNestedMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRepeatedNestedMessageIsMutable();
          repeatedNestedMessage_.set(index, value);
          onChanged();
        } else {
          repeatedNestedMessageBuilder_.setMessage(index, value);
        }
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public Builder setRepeatedNestedMessage(
          int index,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .Builder
              builderForValue) {
        if (repeatedNestedMessageBuilder_ == null) {
          ensureRepeatedNestedMessageIsMutable();
          repeatedNestedMessage_.set(index, builderForValue.build());
          onChanged();
        } else {
          repeatedNestedMessageBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public Builder addRepeatedNestedMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              value) {
        if (repeatedNestedMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRepeatedNestedMessageIsMutable();
          repeatedNestedMessage_.add(value);
          onChanged();
        } else {
          repeatedNestedMessageBuilder_.addMessage(value);
        }
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public Builder addRepeatedNestedMessage(
          int index,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              value) {
        if (repeatedNestedMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRepeatedNestedMessageIsMutable();
          repeatedNestedMessage_.add(index, value);
          onChanged();
        } else {
          repeatedNestedMessageBuilder_.addMessage(index, value);
        }
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public Builder addRepeatedNestedMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .Builder
              builderForValue) {
        if (repeatedNestedMessageBuilder_ == null) {
          ensureRepeatedNestedMessageIsMutable();
          repeatedNestedMessage_.add(builderForValue.build());
          onChanged();
        } else {
          repeatedNestedMessageBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public Builder addRepeatedNestedMessage(
          int index,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .Builder
              builderForValue) {
        if (repeatedNestedMessageBuilder_ == null) {
          ensureRepeatedNestedMessageIsMutable();
          repeatedNestedMessage_.add(index, builderForValue.build());
          onChanged();
        } else {
          repeatedNestedMessageBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public Builder addAllRepeatedNestedMessage(
          java.lang.Iterable<
                  ? extends
                      legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                          .NestedMessage>
              values) {
        if (repeatedNestedMessageBuilder_ == null) {
          ensureRepeatedNestedMessageIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedNestedMessage_);
          onChanged();
        } else {
          repeatedNestedMessageBuilder_.addAllMessages(values);
        }
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public Builder clearRepeatedNestedMessage() {
        if (repeatedNestedMessageBuilder_ == null) {
          repeatedNestedMessage_ = java.util.Collections.emptyList();
          bitField1_ = (bitField1_ & ~0x00000010);
          onChanged();
        } else {
          repeatedNestedMessageBuilder_.clear();
        }
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public Builder removeRepeatedNestedMessage(int index) {
        if (repeatedNestedMessageBuilder_ == null) {
          ensureRepeatedNestedMessageIsMutable();
          repeatedNestedMessage_.remove(index);
          onChanged();
        } else {
          repeatedNestedMessageBuilder_.remove(index);
        }
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              .Builder
          getRepeatedNestedMessageBuilder(int index) {
        return getRepeatedNestedMessageFieldBuilder().getBuilder(index);
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessageOrBuilder
          getRepeatedNestedMessageOrBuilder(int index) {
        if (repeatedNestedMessageBuilder_ == null) {
          return repeatedNestedMessage_.get(index);
        } else {
          return repeatedNestedMessageBuilder_.getMessageOrBuilder(index);
        }
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public java.util.List<
              ? extends
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessageOrBuilder>
          getRepeatedNestedMessageOrBuilderList() {
        if (repeatedNestedMessageBuilder_ != null) {
          return repeatedNestedMessageBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(repeatedNestedMessage_);
        }
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              .Builder
          addRepeatedNestedMessageBuilder() {
        return getRepeatedNestedMessageFieldBuilder()
            .addBuilder(
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                    .getDefaultInstance());
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              .Builder
          addRepeatedNestedMessageBuilder(int index) {
        return getRepeatedNestedMessageFieldBuilder()
            .addBuilder(
                index,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                    .getDefaultInstance());
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage repeated_nested_message = 48;
       * </code>
       */
      public java.util.List<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .Builder>
          getRepeatedNestedMessageBuilderList() {
        return getRepeatedNestedMessageFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                  .NestedMessageOrBuilder>
          getRepeatedNestedMessageFieldBuilder() {
        if (repeatedNestedMessageBuilder_ == null) {
          repeatedNestedMessageBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessage,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessage.Builder,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessageOrBuilder>(
                  repeatedNestedMessage_,
                  ((bitField1_ & 0x00000010) != 0),
                  getParentForChildren(),
                  isClean());
          repeatedNestedMessage_ = null;
        }
        return repeatedNestedMessageBuilder_;
      }

      private java.util.List<legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
          repeatedForeignMessage_ = java.util.Collections.emptyList();

      private void ensureRepeatedForeignMessageIsMutable() {
        if (!((bitField1_ & 0x00000020) != 0)) {
          repeatedForeignMessage_ =
              new java.util.ArrayList<
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>(
                  repeatedForeignMessage_);
          bitField1_ |= 0x00000020;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder>
          repeatedForeignMessageBuilder_;

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public java.util.List<legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
          getRepeatedForeignMessageList() {
        if (repeatedForeignMessageBuilder_ == null) {
          return java.util.Collections.unmodifiableList(repeatedForeignMessage_);
        } else {
          return repeatedForeignMessageBuilder_.getMessageList();
        }
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public int getRepeatedForeignMessageCount() {
        if (repeatedForeignMessageBuilder_ == null) {
          return repeatedForeignMessage_.size();
        } else {
          return repeatedForeignMessageBuilder_.getCount();
        }
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
          getRepeatedForeignMessage(int index) {
        if (repeatedForeignMessageBuilder_ == null) {
          return repeatedForeignMessage_.get(index);
        } else {
          return repeatedForeignMessageBuilder_.getMessage(index);
        }
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public Builder setRepeatedForeignMessage(
          int index, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage value) {
        if (repeatedForeignMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRepeatedForeignMessageIsMutable();
          repeatedForeignMessage_.set(index, value);
          onChanged();
        } else {
          repeatedForeignMessageBuilder_.setMessage(index, value);
        }
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public Builder setRepeatedForeignMessage(
          int index,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder
              builderForValue) {
        if (repeatedForeignMessageBuilder_ == null) {
          ensureRepeatedForeignMessageIsMutable();
          repeatedForeignMessage_.set(index, builderForValue.build());
          onChanged();
        } else {
          repeatedForeignMessageBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public Builder addRepeatedForeignMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage value) {
        if (repeatedForeignMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRepeatedForeignMessageIsMutable();
          repeatedForeignMessage_.add(value);
          onChanged();
        } else {
          repeatedForeignMessageBuilder_.addMessage(value);
        }
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public Builder addRepeatedForeignMessage(
          int index, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage value) {
        if (repeatedForeignMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRepeatedForeignMessageIsMutable();
          repeatedForeignMessage_.add(index, value);
          onChanged();
        } else {
          repeatedForeignMessageBuilder_.addMessage(index, value);
        }
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public Builder addRepeatedForeignMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder
              builderForValue) {
        if (repeatedForeignMessageBuilder_ == null) {
          ensureRepeatedForeignMessageIsMutable();
          repeatedForeignMessage_.add(builderForValue.build());
          onChanged();
        } else {
          repeatedForeignMessageBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public Builder addRepeatedForeignMessage(
          int index,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder
              builderForValue) {
        if (repeatedForeignMessageBuilder_ == null) {
          ensureRepeatedForeignMessageIsMutable();
          repeatedForeignMessage_.add(index, builderForValue.build());
          onChanged();
        } else {
          repeatedForeignMessageBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public Builder addAllRepeatedForeignMessage(
          java.lang.Iterable<
                  ? extends legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
              values) {
        if (repeatedForeignMessageBuilder_ == null) {
          ensureRepeatedForeignMessageIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, repeatedForeignMessage_);
          onChanged();
        } else {
          repeatedForeignMessageBuilder_.addAllMessages(values);
        }
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public Builder clearRepeatedForeignMessage() {
        if (repeatedForeignMessageBuilder_ == null) {
          repeatedForeignMessage_ = java.util.Collections.emptyList();
          bitField1_ = (bitField1_ & ~0x00000020);
          onChanged();
        } else {
          repeatedForeignMessageBuilder_.clear();
        }
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public Builder removeRepeatedForeignMessage(int index) {
        if (repeatedForeignMessageBuilder_ == null) {
          ensureRepeatedForeignMessageIsMutable();
          repeatedForeignMessage_.remove(index);
          onChanged();
        } else {
          repeatedForeignMessageBuilder_.remove(index);
        }
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder
          getRepeatedForeignMessageBuilder(int index) {
        return getRepeatedForeignMessageFieldBuilder().getBuilder(index);
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder
          getRepeatedForeignMessageOrBuilder(int index) {
        if (repeatedForeignMessageBuilder_ == null) {
          return repeatedForeignMessage_.get(index);
        } else {
          return repeatedForeignMessageBuilder_.getMessageOrBuilder(index);
        }
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public java.util.List<
              ? extends legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder>
          getRepeatedForeignMessageOrBuilderList() {
        if (repeatedForeignMessageBuilder_ != null) {
          return repeatedForeignMessageBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(repeatedForeignMessage_);
        }
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder
          addRepeatedForeignMessageBuilder() {
        return getRepeatedForeignMessageFieldBuilder()
            .addBuilder(
                legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
                    .getDefaultInstance());
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder
          addRepeatedForeignMessageBuilder(int index) {
        return getRepeatedForeignMessageFieldBuilder()
            .addBuilder(
                index,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
                    .getDefaultInstance());
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignMessage repeated_foreign_message = 49;
       * </code>
       */
      public java.util.List<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder>
          getRepeatedForeignMessageBuilderList() {
        return getRepeatedForeignMessageFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder>
          getRepeatedForeignMessageFieldBuilder() {
        if (repeatedForeignMessageBuilder_ == null) {
          repeatedForeignMessageBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder>(
                  repeatedForeignMessage_,
                  ((bitField1_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          repeatedForeignMessage_ = null;
        }
        return repeatedForeignMessageBuilder_;
      }

      private java.util.List<java.lang.Integer> repeatedNestedEnum_ =
          java.util.Collections.emptyList();

      private void ensureRepeatedNestedEnumIsMutable() {
        if (!((bitField1_ & 0x00000040) != 0)) {
          repeatedNestedEnum_ = new java.util.ArrayList<java.lang.Integer>(repeatedNestedEnum_);
          bitField1_ |= 0x00000040;
        }
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
       * </code>
       *
       * @return A list containing the repeatedNestedEnum.
       */
      public java.util.List<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
          getRepeatedNestedEnumList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>(
            repeatedNestedEnum_, repeatedNestedEnum_converter_);
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
       * </code>
       *
       * @return The count of repeatedNestedEnum.
       */
      public int getRepeatedNestedEnumCount() {
        return repeatedNestedEnum_.size();
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
       * </code>
       *
       * @param index The index of the element to return.
       * @return The repeatedNestedEnum at the given index.
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
          getRepeatedNestedEnum(int index) {
        return repeatedNestedEnum_converter_.convert(repeatedNestedEnum_.get(index));
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
       * </code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedNestedEnum to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedNestedEnum(
          int index,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureRepeatedNestedEnumIsMutable();
        repeatedNestedEnum_.set(index, value.getNumber());
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
       * </code>
       *
       * @param value The repeatedNestedEnum to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedNestedEnum(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureRepeatedNestedEnumIsMutable();
        repeatedNestedEnum_.add(value.getNumber());
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
       * </code>
       *
       * @param values The repeatedNestedEnum to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedNestedEnum(
          java.lang.Iterable<
                  ? extends
                      legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                          .NestedEnum>
              values) {
        ensureRepeatedNestedEnumIsMutable();
        for (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
            value : values) {
          repeatedNestedEnum_.add(value.getNumber());
        }
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
       * </code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedNestedEnum() {
        repeatedNestedEnum_ = java.util.Collections.emptyList();
        bitField1_ = (bitField1_ & ~0x00000040);
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
       * </code>
       *
       * @return A list containing the enum numeric values on the wire for repeatedNestedEnum.
       */
      public java.util.List<java.lang.Integer> getRepeatedNestedEnumValueList() {
        return java.util.Collections.unmodifiableList(repeatedNestedEnum_);
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
       * </code>
       *
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of repeatedNestedEnum at the given index.
       */
      public int getRepeatedNestedEnumValue(int index) {
        return repeatedNestedEnum_.get(index);
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
       * </code>
       *
       * @param index The index to set the value at.
       * @param value The enum numeric value on the wire for repeatedNestedEnum to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedNestedEnumValue(int index, int value) {
        ensureRepeatedNestedEnumIsMutable();
        repeatedNestedEnum_.set(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
       * </code>
       *
       * @param value The enum numeric value on the wire for repeatedNestedEnum to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedNestedEnumValue(int value) {
        ensureRepeatedNestedEnumIsMutable();
        repeatedNestedEnum_.add(value);
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum repeated_nested_enum = 51;
       * </code>
       *
       * @param values The enum numeric values on the wire for repeatedNestedEnum to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedNestedEnumValue(java.lang.Iterable<java.lang.Integer> values) {
        ensureRepeatedNestedEnumIsMutable();
        for (int value : values) {
          repeatedNestedEnum_.add(value);
        }
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> repeatedForeignEnum_ =
          java.util.Collections.emptyList();

      private void ensureRepeatedForeignEnumIsMutable() {
        if (!((bitField1_ & 0x00000080) != 0)) {
          repeatedForeignEnum_ = new java.util.ArrayList<java.lang.Integer>(repeatedForeignEnum_);
          bitField1_ |= 0x00000080;
        }
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
       *
       * @return A list containing the repeatedForeignEnum.
       */
      public java.util.List<legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
          getRepeatedForeignEnumList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>(
            repeatedForeignEnum_, repeatedForeignEnum_converter_);
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
       *
       * @return The count of repeatedForeignEnum.
       */
      public int getRepeatedForeignEnumCount() {
        return repeatedForeignEnum_.size();
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
       *
       * @param index The index of the element to return.
       * @return The repeatedForeignEnum at the given index.
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum getRepeatedForeignEnum(
          int index) {
        return repeatedForeignEnum_converter_.convert(repeatedForeignEnum_.get(index));
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
       *
       * @param index The index to set the value at.
       * @param value The repeatedForeignEnum to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedForeignEnum(
          int index, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureRepeatedForeignEnumIsMutable();
        repeatedForeignEnum_.set(index, value.getNumber());
        onChanged();
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
       *
       * @param value The repeatedForeignEnum to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedForeignEnum(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureRepeatedForeignEnumIsMutable();
        repeatedForeignEnum_.add(value.getNumber());
        onChanged();
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
       *
       * @param values The repeatedForeignEnum to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedForeignEnum(
          java.lang.Iterable<
                  ? extends legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
              values) {
        ensureRepeatedForeignEnumIsMutable();
        for (legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum value : values) {
          repeatedForeignEnum_.add(value.getNumber());
        }
        onChanged();
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearRepeatedForeignEnum() {
        repeatedForeignEnum_ = java.util.Collections.emptyList();
        bitField1_ = (bitField1_ & ~0x00000080);
        onChanged();
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
       *
       * @return A list containing the enum numeric values on the wire for repeatedForeignEnum.
       */
      public java.util.List<java.lang.Integer> getRepeatedForeignEnumValueList() {
        return java.util.Collections.unmodifiableList(repeatedForeignEnum_);
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
       *
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of repeatedForeignEnum at the given index.
       */
      public int getRepeatedForeignEnumValue(int index) {
        return repeatedForeignEnum_.get(index);
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
       *
       * @param index The index to set the value at.
       * @param value The enum numeric value on the wire for repeatedForeignEnum to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedForeignEnumValue(int index, int value) {
        ensureRepeatedForeignEnumIsMutable();
        repeatedForeignEnum_.set(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
       *
       * @param value The enum numeric value on the wire for repeatedForeignEnum to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedForeignEnumValue(int value) {
        ensureRepeatedForeignEnumIsMutable();
        repeatedForeignEnum_.add(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated .legacy_gencode_test.proto3.ForeignEnum repeated_foreign_enum = 52;</code>
       *
       * @param values The enum numeric values on the wire for repeatedForeignEnum to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedForeignEnumValue(java.lang.Iterable<java.lang.Integer> values) {
        ensureRepeatedForeignEnumIsMutable();
        for (int value : values) {
          repeatedForeignEnum_.add(value);
        }
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList packedInt32_ = emptyIntList();

      private void ensurePackedInt32IsMutable() {
        if (!((bitField1_ & 0x00000100) != 0)) {
          packedInt32_ = mutableCopy(packedInt32_);
          bitField1_ |= 0x00000100;
        }
      }

      /**
       *
       *
       * <pre>
       * Packed
       * </pre>
       *
       * <code>repeated int32 packed_int32 = 75 [packed = true];</code>
       *
       * @return A list containing the packedInt32.
       */
      public java.util.List<java.lang.Integer> getPackedInt32List() {
        return ((bitField1_ & 0x00000100) != 0)
            ? java.util.Collections.unmodifiableList(packedInt32_)
            : packedInt32_;
      }

      /**
       *
       *
       * <pre>
       * Packed
       * </pre>
       *
       * <code>repeated int32 packed_int32 = 75 [packed = true];</code>
       *
       * @return The count of packedInt32.
       */
      public int getPackedInt32Count() {
        return packedInt32_.size();
      }

      /**
       *
       *
       * <pre>
       * Packed
       * </pre>
       *
       * <code>repeated int32 packed_int32 = 75 [packed = true];</code>
       *
       * @param index The index of the element to return.
       * @return The packedInt32 at the given index.
       */
      public int getPackedInt32(int index) {
        return packedInt32_.getInt(index);
      }

      /**
       *
       *
       * <pre>
       * Packed
       * </pre>
       *
       * <code>repeated int32 packed_int32 = 75 [packed = true];</code>
       *
       * @param index The index to set the value at.
       * @param value The packedInt32 to set.
       * @return This builder for chaining.
       */
      public Builder setPackedInt32(int index, int value) {

        ensurePackedInt32IsMutable();
        packedInt32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       *
       *
       * <pre>
       * Packed
       * </pre>
       *
       * <code>repeated int32 packed_int32 = 75 [packed = true];</code>
       *
       * @param value The packedInt32 to add.
       * @return This builder for chaining.
       */
      public Builder addPackedInt32(int value) {

        ensurePackedInt32IsMutable();
        packedInt32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       *
       *
       * <pre>
       * Packed
       * </pre>
       *
       * <code>repeated int32 packed_int32 = 75 [packed = true];</code>
       *
       * @param values The packedInt32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedInt32(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensurePackedInt32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packedInt32_);
        onChanged();
        return this;
      }

      /**
       *
       *
       * <pre>
       * Packed
       * </pre>
       *
       * <code>repeated int32 packed_int32 = 75 [packed = true];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedInt32() {
        packedInt32_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00000100);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList packedInt64_ = emptyLongList();

      private void ensurePackedInt64IsMutable() {
        if (!((bitField1_ & 0x00000200) != 0)) {
          packedInt64_ = mutableCopy(packedInt64_);
          bitField1_ |= 0x00000200;
        }
      }

      /**
       * <code>repeated int64 packed_int64 = 76 [packed = true];</code>
       *
       * @return A list containing the packedInt64.
       */
      public java.util.List<java.lang.Long> getPackedInt64List() {
        return ((bitField1_ & 0x00000200) != 0)
            ? java.util.Collections.unmodifiableList(packedInt64_)
            : packedInt64_;
      }

      /**
       * <code>repeated int64 packed_int64 = 76 [packed = true];</code>
       *
       * @return The count of packedInt64.
       */
      public int getPackedInt64Count() {
        return packedInt64_.size();
      }

      /**
       * <code>repeated int64 packed_int64 = 76 [packed = true];</code>
       *
       * @param index The index of the element to return.
       * @return The packedInt64 at the given index.
       */
      public long getPackedInt64(int index) {
        return packedInt64_.getLong(index);
      }

      /**
       * <code>repeated int64 packed_int64 = 76 [packed = true];</code>
       *
       * @param index The index to set the value at.
       * @param value The packedInt64 to set.
       * @return This builder for chaining.
       */
      public Builder setPackedInt64(int index, long value) {

        ensurePackedInt64IsMutable();
        packedInt64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated int64 packed_int64 = 76 [packed = true];</code>
       *
       * @param value The packedInt64 to add.
       * @return This builder for chaining.
       */
      public Builder addPackedInt64(long value) {

        ensurePackedInt64IsMutable();
        packedInt64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated int64 packed_int64 = 76 [packed = true];</code>
       *
       * @param values The packedInt64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedInt64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensurePackedInt64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packedInt64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated int64 packed_int64 = 76 [packed = true];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedInt64() {
        packedInt64_ = emptyLongList();
        bitField1_ = (bitField1_ & ~0x00000200);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList packedUint32_ = emptyIntList();

      private void ensurePackedUint32IsMutable() {
        if (!((bitField1_ & 0x00000400) != 0)) {
          packedUint32_ = mutableCopy(packedUint32_);
          bitField1_ |= 0x00000400;
        }
      }

      /**
       * <code>repeated uint32 packed_uint32 = 77 [packed = true];</code>
       *
       * @return A list containing the packedUint32.
       */
      public java.util.List<java.lang.Integer> getPackedUint32List() {
        return ((bitField1_ & 0x00000400) != 0)
            ? java.util.Collections.unmodifiableList(packedUint32_)
            : packedUint32_;
      }

      /**
       * <code>repeated uint32 packed_uint32 = 77 [packed = true];</code>
       *
       * @return The count of packedUint32.
       */
      public int getPackedUint32Count() {
        return packedUint32_.size();
      }

      /**
       * <code>repeated uint32 packed_uint32 = 77 [packed = true];</code>
       *
       * @param index The index of the element to return.
       * @return The packedUint32 at the given index.
       */
      public int getPackedUint32(int index) {
        return packedUint32_.getInt(index);
      }

      /**
       * <code>repeated uint32 packed_uint32 = 77 [packed = true];</code>
       *
       * @param index The index to set the value at.
       * @param value The packedUint32 to set.
       * @return This builder for chaining.
       */
      public Builder setPackedUint32(int index, int value) {

        ensurePackedUint32IsMutable();
        packedUint32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint32 packed_uint32 = 77 [packed = true];</code>
       *
       * @param value The packedUint32 to add.
       * @return This builder for chaining.
       */
      public Builder addPackedUint32(int value) {

        ensurePackedUint32IsMutable();
        packedUint32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint32 packed_uint32 = 77 [packed = true];</code>
       *
       * @param values The packedUint32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedUint32(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensurePackedUint32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packedUint32_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint32 packed_uint32 = 77 [packed = true];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedUint32() {
        packedUint32_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00000400);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList packedUint64_ = emptyLongList();

      private void ensurePackedUint64IsMutable() {
        if (!((bitField1_ & 0x00000800) != 0)) {
          packedUint64_ = mutableCopy(packedUint64_);
          bitField1_ |= 0x00000800;
        }
      }

      /**
       * <code>repeated uint64 packed_uint64 = 78 [packed = true];</code>
       *
       * @return A list containing the packedUint64.
       */
      public java.util.List<java.lang.Long> getPackedUint64List() {
        return ((bitField1_ & 0x00000800) != 0)
            ? java.util.Collections.unmodifiableList(packedUint64_)
            : packedUint64_;
      }

      /**
       * <code>repeated uint64 packed_uint64 = 78 [packed = true];</code>
       *
       * @return The count of packedUint64.
       */
      public int getPackedUint64Count() {
        return packedUint64_.size();
      }

      /**
       * <code>repeated uint64 packed_uint64 = 78 [packed = true];</code>
       *
       * @param index The index of the element to return.
       * @return The packedUint64 at the given index.
       */
      public long getPackedUint64(int index) {
        return packedUint64_.getLong(index);
      }

      /**
       * <code>repeated uint64 packed_uint64 = 78 [packed = true];</code>
       *
       * @param index The index to set the value at.
       * @param value The packedUint64 to set.
       * @return This builder for chaining.
       */
      public Builder setPackedUint64(int index, long value) {

        ensurePackedUint64IsMutable();
        packedUint64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint64 packed_uint64 = 78 [packed = true];</code>
       *
       * @param value The packedUint64 to add.
       * @return This builder for chaining.
       */
      public Builder addPackedUint64(long value) {

        ensurePackedUint64IsMutable();
        packedUint64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint64 packed_uint64 = 78 [packed = true];</code>
       *
       * @param values The packedUint64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedUint64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensurePackedUint64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packedUint64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint64 packed_uint64 = 78 [packed = true];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedUint64() {
        packedUint64_ = emptyLongList();
        bitField1_ = (bitField1_ & ~0x00000800);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList packedSint32_ = emptyIntList();

      private void ensurePackedSint32IsMutable() {
        if (!((bitField1_ & 0x00001000) != 0)) {
          packedSint32_ = mutableCopy(packedSint32_);
          bitField1_ |= 0x00001000;
        }
      }

      /**
       * <code>repeated sint32 packed_sint32 = 79 [packed = true];</code>
       *
       * @return A list containing the packedSint32.
       */
      public java.util.List<java.lang.Integer> getPackedSint32List() {
        return ((bitField1_ & 0x00001000) != 0)
            ? java.util.Collections.unmodifiableList(packedSint32_)
            : packedSint32_;
      }

      /**
       * <code>repeated sint32 packed_sint32 = 79 [packed = true];</code>
       *
       * @return The count of packedSint32.
       */
      public int getPackedSint32Count() {
        return packedSint32_.size();
      }

      /**
       * <code>repeated sint32 packed_sint32 = 79 [packed = true];</code>
       *
       * @param index The index of the element to return.
       * @return The packedSint32 at the given index.
       */
      public int getPackedSint32(int index) {
        return packedSint32_.getInt(index);
      }

      /**
       * <code>repeated sint32 packed_sint32 = 79 [packed = true];</code>
       *
       * @param index The index to set the value at.
       * @param value The packedSint32 to set.
       * @return This builder for chaining.
       */
      public Builder setPackedSint32(int index, int value) {

        ensurePackedSint32IsMutable();
        packedSint32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint32 packed_sint32 = 79 [packed = true];</code>
       *
       * @param value The packedSint32 to add.
       * @return This builder for chaining.
       */
      public Builder addPackedSint32(int value) {

        ensurePackedSint32IsMutable();
        packedSint32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint32 packed_sint32 = 79 [packed = true];</code>
       *
       * @param values The packedSint32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedSint32(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensurePackedSint32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packedSint32_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint32 packed_sint32 = 79 [packed = true];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedSint32() {
        packedSint32_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00001000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList packedSint64_ = emptyLongList();

      private void ensurePackedSint64IsMutable() {
        if (!((bitField1_ & 0x00002000) != 0)) {
          packedSint64_ = mutableCopy(packedSint64_);
          bitField1_ |= 0x00002000;
        }
      }

      /**
       * <code>repeated sint64 packed_sint64 = 80 [packed = true];</code>
       *
       * @return A list containing the packedSint64.
       */
      public java.util.List<java.lang.Long> getPackedSint64List() {
        return ((bitField1_ & 0x00002000) != 0)
            ? java.util.Collections.unmodifiableList(packedSint64_)
            : packedSint64_;
      }

      /**
       * <code>repeated sint64 packed_sint64 = 80 [packed = true];</code>
       *
       * @return The count of packedSint64.
       */
      public int getPackedSint64Count() {
        return packedSint64_.size();
      }

      /**
       * <code>repeated sint64 packed_sint64 = 80 [packed = true];</code>
       *
       * @param index The index of the element to return.
       * @return The packedSint64 at the given index.
       */
      public long getPackedSint64(int index) {
        return packedSint64_.getLong(index);
      }

      /**
       * <code>repeated sint64 packed_sint64 = 80 [packed = true];</code>
       *
       * @param index The index to set the value at.
       * @param value The packedSint64 to set.
       * @return This builder for chaining.
       */
      public Builder setPackedSint64(int index, long value) {

        ensurePackedSint64IsMutable();
        packedSint64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint64 packed_sint64 = 80 [packed = true];</code>
       *
       * @param value The packedSint64 to add.
       * @return This builder for chaining.
       */
      public Builder addPackedSint64(long value) {

        ensurePackedSint64IsMutable();
        packedSint64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint64 packed_sint64 = 80 [packed = true];</code>
       *
       * @param values The packedSint64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedSint64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensurePackedSint64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packedSint64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint64 packed_sint64 = 80 [packed = true];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedSint64() {
        packedSint64_ = emptyLongList();
        bitField1_ = (bitField1_ & ~0x00002000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList packedFixed32_ = emptyIntList();

      private void ensurePackedFixed32IsMutable() {
        if (!((bitField1_ & 0x00004000) != 0)) {
          packedFixed32_ = mutableCopy(packedFixed32_);
          bitField1_ |= 0x00004000;
        }
      }

      /**
       * <code>repeated fixed32 packed_fixed32 = 81 [packed = true];</code>
       *
       * @return A list containing the packedFixed32.
       */
      public java.util.List<java.lang.Integer> getPackedFixed32List() {
        return ((bitField1_ & 0x00004000) != 0)
            ? java.util.Collections.unmodifiableList(packedFixed32_)
            : packedFixed32_;
      }

      /**
       * <code>repeated fixed32 packed_fixed32 = 81 [packed = true];</code>
       *
       * @return The count of packedFixed32.
       */
      public int getPackedFixed32Count() {
        return packedFixed32_.size();
      }

      /**
       * <code>repeated fixed32 packed_fixed32 = 81 [packed = true];</code>
       *
       * @param index The index of the element to return.
       * @return The packedFixed32 at the given index.
       */
      public int getPackedFixed32(int index) {
        return packedFixed32_.getInt(index);
      }

      /**
       * <code>repeated fixed32 packed_fixed32 = 81 [packed = true];</code>
       *
       * @param index The index to set the value at.
       * @param value The packedFixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setPackedFixed32(int index, int value) {

        ensurePackedFixed32IsMutable();
        packedFixed32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed32 packed_fixed32 = 81 [packed = true];</code>
       *
       * @param value The packedFixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addPackedFixed32(int value) {

        ensurePackedFixed32IsMutable();
        packedFixed32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed32 packed_fixed32 = 81 [packed = true];</code>
       *
       * @param values The packedFixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedFixed32(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensurePackedFixed32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packedFixed32_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed32 packed_fixed32 = 81 [packed = true];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedFixed32() {
        packedFixed32_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00004000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList packedFixed64_ = emptyLongList();

      private void ensurePackedFixed64IsMutable() {
        if (!((bitField1_ & 0x00008000) != 0)) {
          packedFixed64_ = mutableCopy(packedFixed64_);
          bitField1_ |= 0x00008000;
        }
      }

      /**
       * <code>repeated fixed64 packed_fixed64 = 82 [packed = true];</code>
       *
       * @return A list containing the packedFixed64.
       */
      public java.util.List<java.lang.Long> getPackedFixed64List() {
        return ((bitField1_ & 0x00008000) != 0)
            ? java.util.Collections.unmodifiableList(packedFixed64_)
            : packedFixed64_;
      }

      /**
       * <code>repeated fixed64 packed_fixed64 = 82 [packed = true];</code>
       *
       * @return The count of packedFixed64.
       */
      public int getPackedFixed64Count() {
        return packedFixed64_.size();
      }

      /**
       * <code>repeated fixed64 packed_fixed64 = 82 [packed = true];</code>
       *
       * @param index The index of the element to return.
       * @return The packedFixed64 at the given index.
       */
      public long getPackedFixed64(int index) {
        return packedFixed64_.getLong(index);
      }

      /**
       * <code>repeated fixed64 packed_fixed64 = 82 [packed = true];</code>
       *
       * @param index The index to set the value at.
       * @param value The packedFixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setPackedFixed64(int index, long value) {

        ensurePackedFixed64IsMutable();
        packedFixed64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed64 packed_fixed64 = 82 [packed = true];</code>
       *
       * @param value The packedFixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addPackedFixed64(long value) {

        ensurePackedFixed64IsMutable();
        packedFixed64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed64 packed_fixed64 = 82 [packed = true];</code>
       *
       * @param values The packedFixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedFixed64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensurePackedFixed64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packedFixed64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed64 packed_fixed64 = 82 [packed = true];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedFixed64() {
        packedFixed64_ = emptyLongList();
        bitField1_ = (bitField1_ & ~0x00008000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList packedSfixed32_ = emptyIntList();

      private void ensurePackedSfixed32IsMutable() {
        if (!((bitField1_ & 0x00010000) != 0)) {
          packedSfixed32_ = mutableCopy(packedSfixed32_);
          bitField1_ |= 0x00010000;
        }
      }

      /**
       * <code>repeated sfixed32 packed_sfixed32 = 83 [packed = true];</code>
       *
       * @return A list containing the packedSfixed32.
       */
      public java.util.List<java.lang.Integer> getPackedSfixed32List() {
        return ((bitField1_ & 0x00010000) != 0)
            ? java.util.Collections.unmodifiableList(packedSfixed32_)
            : packedSfixed32_;
      }

      /**
       * <code>repeated sfixed32 packed_sfixed32 = 83 [packed = true];</code>
       *
       * @return The count of packedSfixed32.
       */
      public int getPackedSfixed32Count() {
        return packedSfixed32_.size();
      }

      /**
       * <code>repeated sfixed32 packed_sfixed32 = 83 [packed = true];</code>
       *
       * @param index The index of the element to return.
       * @return The packedSfixed32 at the given index.
       */
      public int getPackedSfixed32(int index) {
        return packedSfixed32_.getInt(index);
      }

      /**
       * <code>repeated sfixed32 packed_sfixed32 = 83 [packed = true];</code>
       *
       * @param index The index to set the value at.
       * @param value The packedSfixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setPackedSfixed32(int index, int value) {

        ensurePackedSfixed32IsMutable();
        packedSfixed32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed32 packed_sfixed32 = 83 [packed = true];</code>
       *
       * @param value The packedSfixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addPackedSfixed32(int value) {

        ensurePackedSfixed32IsMutable();
        packedSfixed32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed32 packed_sfixed32 = 83 [packed = true];</code>
       *
       * @param values The packedSfixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedSfixed32(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensurePackedSfixed32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packedSfixed32_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed32 packed_sfixed32 = 83 [packed = true];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedSfixed32() {
        packedSfixed32_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00010000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList packedSfixed64_ = emptyLongList();

      private void ensurePackedSfixed64IsMutable() {
        if (!((bitField1_ & 0x00020000) != 0)) {
          packedSfixed64_ = mutableCopy(packedSfixed64_);
          bitField1_ |= 0x00020000;
        }
      }

      /**
       * <code>repeated sfixed64 packed_sfixed64 = 84 [packed = true];</code>
       *
       * @return A list containing the packedSfixed64.
       */
      public java.util.List<java.lang.Long> getPackedSfixed64List() {
        return ((bitField1_ & 0x00020000) != 0)
            ? java.util.Collections.unmodifiableList(packedSfixed64_)
            : packedSfixed64_;
      }

      /**
       * <code>repeated sfixed64 packed_sfixed64 = 84 [packed = true];</code>
       *
       * @return The count of packedSfixed64.
       */
      public int getPackedSfixed64Count() {
        return packedSfixed64_.size();
      }

      /**
       * <code>repeated sfixed64 packed_sfixed64 = 84 [packed = true];</code>
       *
       * @param index The index of the element to return.
       * @return The packedSfixed64 at the given index.
       */
      public long getPackedSfixed64(int index) {
        return packedSfixed64_.getLong(index);
      }

      /**
       * <code>repeated sfixed64 packed_sfixed64 = 84 [packed = true];</code>
       *
       * @param index The index to set the value at.
       * @param value The packedSfixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setPackedSfixed64(int index, long value) {

        ensurePackedSfixed64IsMutable();
        packedSfixed64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed64 packed_sfixed64 = 84 [packed = true];</code>
       *
       * @param value The packedSfixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addPackedSfixed64(long value) {

        ensurePackedSfixed64IsMutable();
        packedSfixed64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed64 packed_sfixed64 = 84 [packed = true];</code>
       *
       * @param values The packedSfixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedSfixed64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensurePackedSfixed64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packedSfixed64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed64 packed_sfixed64 = 84 [packed = true];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedSfixed64() {
        packedSfixed64_ = emptyLongList();
        bitField1_ = (bitField1_ & ~0x00020000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.FloatList packedFloat_ = emptyFloatList();

      private void ensurePackedFloatIsMutable() {
        if (!((bitField1_ & 0x00040000) != 0)) {
          packedFloat_ = mutableCopy(packedFloat_);
          bitField1_ |= 0x00040000;
        }
      }

      /**
       * <code>repeated float packed_float = 85 [packed = true];</code>
       *
       * @return A list containing the packedFloat.
       */
      public java.util.List<java.lang.Float> getPackedFloatList() {
        return ((bitField1_ & 0x00040000) != 0)
            ? java.util.Collections.unmodifiableList(packedFloat_)
            : packedFloat_;
      }

      /**
       * <code>repeated float packed_float = 85 [packed = true];</code>
       *
       * @return The count of packedFloat.
       */
      public int getPackedFloatCount() {
        return packedFloat_.size();
      }

      /**
       * <code>repeated float packed_float = 85 [packed = true];</code>
       *
       * @param index The index of the element to return.
       * @return The packedFloat at the given index.
       */
      public float getPackedFloat(int index) {
        return packedFloat_.getFloat(index);
      }

      /**
       * <code>repeated float packed_float = 85 [packed = true];</code>
       *
       * @param index The index to set the value at.
       * @param value The packedFloat to set.
       * @return This builder for chaining.
       */
      public Builder setPackedFloat(int index, float value) {

        ensurePackedFloatIsMutable();
        packedFloat_.setFloat(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated float packed_float = 85 [packed = true];</code>
       *
       * @param value The packedFloat to add.
       * @return This builder for chaining.
       */
      public Builder addPackedFloat(float value) {

        ensurePackedFloatIsMutable();
        packedFloat_.addFloat(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated float packed_float = 85 [packed = true];</code>
       *
       * @param values The packedFloat to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedFloat(java.lang.Iterable<? extends java.lang.Float> values) {
        ensurePackedFloatIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packedFloat_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated float packed_float = 85 [packed = true];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedFloat() {
        packedFloat_ = emptyFloatList();
        bitField1_ = (bitField1_ & ~0x00040000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList packedDouble_ = emptyDoubleList();

      private void ensurePackedDoubleIsMutable() {
        if (!((bitField1_ & 0x00080000) != 0)) {
          packedDouble_ = mutableCopy(packedDouble_);
          bitField1_ |= 0x00080000;
        }
      }

      /**
       * <code>repeated double packed_double = 86 [packed = true];</code>
       *
       * @return A list containing the packedDouble.
       */
      public java.util.List<java.lang.Double> getPackedDoubleList() {
        return ((bitField1_ & 0x00080000) != 0)
            ? java.util.Collections.unmodifiableList(packedDouble_)
            : packedDouble_;
      }

      /**
       * <code>repeated double packed_double = 86 [packed = true];</code>
       *
       * @return The count of packedDouble.
       */
      public int getPackedDoubleCount() {
        return packedDouble_.size();
      }

      /**
       * <code>repeated double packed_double = 86 [packed = true];</code>
       *
       * @param index The index of the element to return.
       * @return The packedDouble at the given index.
       */
      public double getPackedDouble(int index) {
        return packedDouble_.getDouble(index);
      }

      /**
       * <code>repeated double packed_double = 86 [packed = true];</code>
       *
       * @param index The index to set the value at.
       * @param value The packedDouble to set.
       * @return This builder for chaining.
       */
      public Builder setPackedDouble(int index, double value) {

        ensurePackedDoubleIsMutable();
        packedDouble_.setDouble(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated double packed_double = 86 [packed = true];</code>
       *
       * @param value The packedDouble to add.
       * @return This builder for chaining.
       */
      public Builder addPackedDouble(double value) {

        ensurePackedDoubleIsMutable();
        packedDouble_.addDouble(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated double packed_double = 86 [packed = true];</code>
       *
       * @param values The packedDouble to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedDouble(java.lang.Iterable<? extends java.lang.Double> values) {
        ensurePackedDoubleIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packedDouble_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated double packed_double = 86 [packed = true];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedDouble() {
        packedDouble_ = emptyDoubleList();
        bitField1_ = (bitField1_ & ~0x00080000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.BooleanList packedBool_ = emptyBooleanList();

      private void ensurePackedBoolIsMutable() {
        if (!((bitField1_ & 0x00100000) != 0)) {
          packedBool_ = mutableCopy(packedBool_);
          bitField1_ |= 0x00100000;
        }
      }

      /**
       * <code>repeated bool packed_bool = 87 [packed = true];</code>
       *
       * @return A list containing the packedBool.
       */
      public java.util.List<java.lang.Boolean> getPackedBoolList() {
        return ((bitField1_ & 0x00100000) != 0)
            ? java.util.Collections.unmodifiableList(packedBool_)
            : packedBool_;
      }

      /**
       * <code>repeated bool packed_bool = 87 [packed = true];</code>
       *
       * @return The count of packedBool.
       */
      public int getPackedBoolCount() {
        return packedBool_.size();
      }

      /**
       * <code>repeated bool packed_bool = 87 [packed = true];</code>
       *
       * @param index The index of the element to return.
       * @return The packedBool at the given index.
       */
      public boolean getPackedBool(int index) {
        return packedBool_.getBoolean(index);
      }

      /**
       * <code>repeated bool packed_bool = 87 [packed = true];</code>
       *
       * @param index The index to set the value at.
       * @param value The packedBool to set.
       * @return This builder for chaining.
       */
      public Builder setPackedBool(int index, boolean value) {

        ensurePackedBoolIsMutable();
        packedBool_.setBoolean(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated bool packed_bool = 87 [packed = true];</code>
       *
       * @param value The packedBool to add.
       * @return This builder for chaining.
       */
      public Builder addPackedBool(boolean value) {

        ensurePackedBoolIsMutable();
        packedBool_.addBoolean(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated bool packed_bool = 87 [packed = true];</code>
       *
       * @param values The packedBool to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedBool(java.lang.Iterable<? extends java.lang.Boolean> values) {
        ensurePackedBoolIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packedBool_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated bool packed_bool = 87 [packed = true];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedBool() {
        packedBool_ = emptyBooleanList();
        bitField1_ = (bitField1_ & ~0x00100000);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> packedNestedEnum_ =
          java.util.Collections.emptyList();

      private void ensurePackedNestedEnumIsMutable() {
        if (!((bitField1_ & 0x00200000) != 0)) {
          packedNestedEnum_ = new java.util.ArrayList<java.lang.Integer>(packedNestedEnum_);
          bitField1_ |= 0x00200000;
        }
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
       * </code>
       *
       * @return A list containing the packedNestedEnum.
       */
      public java.util.List<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
          getPackedNestedEnumList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>(
            packedNestedEnum_, packedNestedEnum_converter_);
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
       * </code>
       *
       * @return The count of packedNestedEnum.
       */
      public int getPackedNestedEnumCount() {
        return packedNestedEnum_.size();
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
       * </code>
       *
       * @param index The index of the element to return.
       * @return The packedNestedEnum at the given index.
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
          getPackedNestedEnum(int index) {
        return packedNestedEnum_converter_.convert(packedNestedEnum_.get(index));
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
       * </code>
       *
       * @param index The index to set the value at.
       * @param value The packedNestedEnum to set.
       * @return This builder for chaining.
       */
      public Builder setPackedNestedEnum(
          int index,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePackedNestedEnumIsMutable();
        packedNestedEnum_.set(index, value.getNumber());
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
       * </code>
       *
       * @param value The packedNestedEnum to add.
       * @return This builder for chaining.
       */
      public Builder addPackedNestedEnum(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePackedNestedEnumIsMutable();
        packedNestedEnum_.add(value.getNumber());
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
       * </code>
       *
       * @param values The packedNestedEnum to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedNestedEnum(
          java.lang.Iterable<
                  ? extends
                      legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                          .NestedEnum>
              values) {
        ensurePackedNestedEnumIsMutable();
        for (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
            value : values) {
          packedNestedEnum_.add(value.getNumber());
        }
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
       * </code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPackedNestedEnum() {
        packedNestedEnum_ = java.util.Collections.emptyList();
        bitField1_ = (bitField1_ & ~0x00200000);
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
       * </code>
       *
       * @return A list containing the enum numeric values on the wire for packedNestedEnum.
       */
      public java.util.List<java.lang.Integer> getPackedNestedEnumValueList() {
        return java.util.Collections.unmodifiableList(packedNestedEnum_);
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
       * </code>
       *
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of packedNestedEnum at the given index.
       */
      public int getPackedNestedEnumValue(int index) {
        return packedNestedEnum_.get(index);
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
       * </code>
       *
       * @param index The index to set the value at.
       * @param value The enum numeric value on the wire for packedNestedEnum to set.
       * @return This builder for chaining.
       */
      public Builder setPackedNestedEnumValue(int index, int value) {
        ensurePackedNestedEnumIsMutable();
        packedNestedEnum_.set(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
       * </code>
       *
       * @param value The enum numeric value on the wire for packedNestedEnum to add.
       * @return This builder for chaining.
       */
      public Builder addPackedNestedEnumValue(int value) {
        ensurePackedNestedEnumIsMutable();
        packedNestedEnum_.add(value);
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum packed_nested_enum = 88 [packed = true];
       * </code>
       *
       * @param values The enum numeric values on the wire for packedNestedEnum to add.
       * @return This builder for chaining.
       */
      public Builder addAllPackedNestedEnumValue(java.lang.Iterable<java.lang.Integer> values) {
        ensurePackedNestedEnumIsMutable();
        for (int value : values) {
          packedNestedEnum_.add(value);
        }
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList unpackedInt32_ = emptyIntList();

      private void ensureUnpackedInt32IsMutable() {
        if (!((bitField1_ & 0x00400000) != 0)) {
          unpackedInt32_ = mutableCopy(unpackedInt32_);
          bitField1_ |= 0x00400000;
        }
      }

      /**
       *
       *
       * <pre>
       * Unpacked
       * </pre>
       *
       * <code>repeated int32 unpacked_int32 = 89 [packed = false];</code>
       *
       * @return A list containing the unpackedInt32.
       */
      public java.util.List<java.lang.Integer> getUnpackedInt32List() {
        return ((bitField1_ & 0x00400000) != 0)
            ? java.util.Collections.unmodifiableList(unpackedInt32_)
            : unpackedInt32_;
      }

      /**
       *
       *
       * <pre>
       * Unpacked
       * </pre>
       *
       * <code>repeated int32 unpacked_int32 = 89 [packed = false];</code>
       *
       * @return The count of unpackedInt32.
       */
      public int getUnpackedInt32Count() {
        return unpackedInt32_.size();
      }

      /**
       *
       *
       * <pre>
       * Unpacked
       * </pre>
       *
       * <code>repeated int32 unpacked_int32 = 89 [packed = false];</code>
       *
       * @param index The index of the element to return.
       * @return The unpackedInt32 at the given index.
       */
      public int getUnpackedInt32(int index) {
        return unpackedInt32_.getInt(index);
      }

      /**
       *
       *
       * <pre>
       * Unpacked
       * </pre>
       *
       * <code>repeated int32 unpacked_int32 = 89 [packed = false];</code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedInt32 to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedInt32(int index, int value) {

        ensureUnpackedInt32IsMutable();
        unpackedInt32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       *
       *
       * <pre>
       * Unpacked
       * </pre>
       *
       * <code>repeated int32 unpacked_int32 = 89 [packed = false];</code>
       *
       * @param value The unpackedInt32 to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedInt32(int value) {

        ensureUnpackedInt32IsMutable();
        unpackedInt32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       *
       *
       * <pre>
       * Unpacked
       * </pre>
       *
       * <code>repeated int32 unpacked_int32 = 89 [packed = false];</code>
       *
       * @param values The unpackedInt32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedInt32(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureUnpackedInt32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, unpackedInt32_);
        onChanged();
        return this;
      }

      /**
       *
       *
       * <pre>
       * Unpacked
       * </pre>
       *
       * <code>repeated int32 unpacked_int32 = 89 [packed = false];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedInt32() {
        unpackedInt32_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00400000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList unpackedInt64_ = emptyLongList();

      private void ensureUnpackedInt64IsMutable() {
        if (!((bitField1_ & 0x00800000) != 0)) {
          unpackedInt64_ = mutableCopy(unpackedInt64_);
          bitField1_ |= 0x00800000;
        }
      }

      /**
       * <code>repeated int64 unpacked_int64 = 90 [packed = false];</code>
       *
       * @return A list containing the unpackedInt64.
       */
      public java.util.List<java.lang.Long> getUnpackedInt64List() {
        return ((bitField1_ & 0x00800000) != 0)
            ? java.util.Collections.unmodifiableList(unpackedInt64_)
            : unpackedInt64_;
      }

      /**
       * <code>repeated int64 unpacked_int64 = 90 [packed = false];</code>
       *
       * @return The count of unpackedInt64.
       */
      public int getUnpackedInt64Count() {
        return unpackedInt64_.size();
      }

      /**
       * <code>repeated int64 unpacked_int64 = 90 [packed = false];</code>
       *
       * @param index The index of the element to return.
       * @return The unpackedInt64 at the given index.
       */
      public long getUnpackedInt64(int index) {
        return unpackedInt64_.getLong(index);
      }

      /**
       * <code>repeated int64 unpacked_int64 = 90 [packed = false];</code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedInt64 to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedInt64(int index, long value) {

        ensureUnpackedInt64IsMutable();
        unpackedInt64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated int64 unpacked_int64 = 90 [packed = false];</code>
       *
       * @param value The unpackedInt64 to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedInt64(long value) {

        ensureUnpackedInt64IsMutable();
        unpackedInt64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated int64 unpacked_int64 = 90 [packed = false];</code>
       *
       * @param values The unpackedInt64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedInt64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensureUnpackedInt64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, unpackedInt64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated int64 unpacked_int64 = 90 [packed = false];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedInt64() {
        unpackedInt64_ = emptyLongList();
        bitField1_ = (bitField1_ & ~0x00800000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList unpackedUint32_ = emptyIntList();

      private void ensureUnpackedUint32IsMutable() {
        if (!((bitField1_ & 0x01000000) != 0)) {
          unpackedUint32_ = mutableCopy(unpackedUint32_);
          bitField1_ |= 0x01000000;
        }
      }

      /**
       * <code>repeated uint32 unpacked_uint32 = 91 [packed = false];</code>
       *
       * @return A list containing the unpackedUint32.
       */
      public java.util.List<java.lang.Integer> getUnpackedUint32List() {
        return ((bitField1_ & 0x01000000) != 0)
            ? java.util.Collections.unmodifiableList(unpackedUint32_)
            : unpackedUint32_;
      }

      /**
       * <code>repeated uint32 unpacked_uint32 = 91 [packed = false];</code>
       *
       * @return The count of unpackedUint32.
       */
      public int getUnpackedUint32Count() {
        return unpackedUint32_.size();
      }

      /**
       * <code>repeated uint32 unpacked_uint32 = 91 [packed = false];</code>
       *
       * @param index The index of the element to return.
       * @return The unpackedUint32 at the given index.
       */
      public int getUnpackedUint32(int index) {
        return unpackedUint32_.getInt(index);
      }

      /**
       * <code>repeated uint32 unpacked_uint32 = 91 [packed = false];</code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedUint32 to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedUint32(int index, int value) {

        ensureUnpackedUint32IsMutable();
        unpackedUint32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint32 unpacked_uint32 = 91 [packed = false];</code>
       *
       * @param value The unpackedUint32 to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedUint32(int value) {

        ensureUnpackedUint32IsMutable();
        unpackedUint32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint32 unpacked_uint32 = 91 [packed = false];</code>
       *
       * @param values The unpackedUint32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedUint32(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureUnpackedUint32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, unpackedUint32_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint32 unpacked_uint32 = 91 [packed = false];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedUint32() {
        unpackedUint32_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x01000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList unpackedUint64_ = emptyLongList();

      private void ensureUnpackedUint64IsMutable() {
        if (!((bitField1_ & 0x02000000) != 0)) {
          unpackedUint64_ = mutableCopy(unpackedUint64_);
          bitField1_ |= 0x02000000;
        }
      }

      /**
       * <code>repeated uint64 unpacked_uint64 = 92 [packed = false];</code>
       *
       * @return A list containing the unpackedUint64.
       */
      public java.util.List<java.lang.Long> getUnpackedUint64List() {
        return ((bitField1_ & 0x02000000) != 0)
            ? java.util.Collections.unmodifiableList(unpackedUint64_)
            : unpackedUint64_;
      }

      /**
       * <code>repeated uint64 unpacked_uint64 = 92 [packed = false];</code>
       *
       * @return The count of unpackedUint64.
       */
      public int getUnpackedUint64Count() {
        return unpackedUint64_.size();
      }

      /**
       * <code>repeated uint64 unpacked_uint64 = 92 [packed = false];</code>
       *
       * @param index The index of the element to return.
       * @return The unpackedUint64 at the given index.
       */
      public long getUnpackedUint64(int index) {
        return unpackedUint64_.getLong(index);
      }

      /**
       * <code>repeated uint64 unpacked_uint64 = 92 [packed = false];</code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedUint64 to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedUint64(int index, long value) {

        ensureUnpackedUint64IsMutable();
        unpackedUint64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint64 unpacked_uint64 = 92 [packed = false];</code>
       *
       * @param value The unpackedUint64 to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedUint64(long value) {

        ensureUnpackedUint64IsMutable();
        unpackedUint64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint64 unpacked_uint64 = 92 [packed = false];</code>
       *
       * @param values The unpackedUint64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedUint64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensureUnpackedUint64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, unpackedUint64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated uint64 unpacked_uint64 = 92 [packed = false];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedUint64() {
        unpackedUint64_ = emptyLongList();
        bitField1_ = (bitField1_ & ~0x02000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList unpackedSint32_ = emptyIntList();

      private void ensureUnpackedSint32IsMutable() {
        if (!((bitField1_ & 0x04000000) != 0)) {
          unpackedSint32_ = mutableCopy(unpackedSint32_);
          bitField1_ |= 0x04000000;
        }
      }

      /**
       * <code>repeated sint32 unpacked_sint32 = 93 [packed = false];</code>
       *
       * @return A list containing the unpackedSint32.
       */
      public java.util.List<java.lang.Integer> getUnpackedSint32List() {
        return ((bitField1_ & 0x04000000) != 0)
            ? java.util.Collections.unmodifiableList(unpackedSint32_)
            : unpackedSint32_;
      }

      /**
       * <code>repeated sint32 unpacked_sint32 = 93 [packed = false];</code>
       *
       * @return The count of unpackedSint32.
       */
      public int getUnpackedSint32Count() {
        return unpackedSint32_.size();
      }

      /**
       * <code>repeated sint32 unpacked_sint32 = 93 [packed = false];</code>
       *
       * @param index The index of the element to return.
       * @return The unpackedSint32 at the given index.
       */
      public int getUnpackedSint32(int index) {
        return unpackedSint32_.getInt(index);
      }

      /**
       * <code>repeated sint32 unpacked_sint32 = 93 [packed = false];</code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedSint32 to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedSint32(int index, int value) {

        ensureUnpackedSint32IsMutable();
        unpackedSint32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint32 unpacked_sint32 = 93 [packed = false];</code>
       *
       * @param value The unpackedSint32 to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedSint32(int value) {

        ensureUnpackedSint32IsMutable();
        unpackedSint32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint32 unpacked_sint32 = 93 [packed = false];</code>
       *
       * @param values The unpackedSint32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedSint32(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureUnpackedSint32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, unpackedSint32_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint32 unpacked_sint32 = 93 [packed = false];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedSint32() {
        unpackedSint32_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x04000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList unpackedSint64_ = emptyLongList();

      private void ensureUnpackedSint64IsMutable() {
        if (!((bitField1_ & 0x08000000) != 0)) {
          unpackedSint64_ = mutableCopy(unpackedSint64_);
          bitField1_ |= 0x08000000;
        }
      }

      /**
       * <code>repeated sint64 unpacked_sint64 = 94 [packed = false];</code>
       *
       * @return A list containing the unpackedSint64.
       */
      public java.util.List<java.lang.Long> getUnpackedSint64List() {
        return ((bitField1_ & 0x08000000) != 0)
            ? java.util.Collections.unmodifiableList(unpackedSint64_)
            : unpackedSint64_;
      }

      /**
       * <code>repeated sint64 unpacked_sint64 = 94 [packed = false];</code>
       *
       * @return The count of unpackedSint64.
       */
      public int getUnpackedSint64Count() {
        return unpackedSint64_.size();
      }

      /**
       * <code>repeated sint64 unpacked_sint64 = 94 [packed = false];</code>
       *
       * @param index The index of the element to return.
       * @return The unpackedSint64 at the given index.
       */
      public long getUnpackedSint64(int index) {
        return unpackedSint64_.getLong(index);
      }

      /**
       * <code>repeated sint64 unpacked_sint64 = 94 [packed = false];</code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedSint64 to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedSint64(int index, long value) {

        ensureUnpackedSint64IsMutable();
        unpackedSint64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint64 unpacked_sint64 = 94 [packed = false];</code>
       *
       * @param value The unpackedSint64 to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedSint64(long value) {

        ensureUnpackedSint64IsMutable();
        unpackedSint64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint64 unpacked_sint64 = 94 [packed = false];</code>
       *
       * @param values The unpackedSint64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedSint64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensureUnpackedSint64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, unpackedSint64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sint64 unpacked_sint64 = 94 [packed = false];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedSint64() {
        unpackedSint64_ = emptyLongList();
        bitField1_ = (bitField1_ & ~0x08000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList unpackedFixed32_ = emptyIntList();

      private void ensureUnpackedFixed32IsMutable() {
        if (!((bitField1_ & 0x10000000) != 0)) {
          unpackedFixed32_ = mutableCopy(unpackedFixed32_);
          bitField1_ |= 0x10000000;
        }
      }

      /**
       * <code>repeated fixed32 unpacked_fixed32 = 95 [packed = false];</code>
       *
       * @return A list containing the unpackedFixed32.
       */
      public java.util.List<java.lang.Integer> getUnpackedFixed32List() {
        return ((bitField1_ & 0x10000000) != 0)
            ? java.util.Collections.unmodifiableList(unpackedFixed32_)
            : unpackedFixed32_;
      }

      /**
       * <code>repeated fixed32 unpacked_fixed32 = 95 [packed = false];</code>
       *
       * @return The count of unpackedFixed32.
       */
      public int getUnpackedFixed32Count() {
        return unpackedFixed32_.size();
      }

      /**
       * <code>repeated fixed32 unpacked_fixed32 = 95 [packed = false];</code>
       *
       * @param index The index of the element to return.
       * @return The unpackedFixed32 at the given index.
       */
      public int getUnpackedFixed32(int index) {
        return unpackedFixed32_.getInt(index);
      }

      /**
       * <code>repeated fixed32 unpacked_fixed32 = 95 [packed = false];</code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedFixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedFixed32(int index, int value) {

        ensureUnpackedFixed32IsMutable();
        unpackedFixed32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed32 unpacked_fixed32 = 95 [packed = false];</code>
       *
       * @param value The unpackedFixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedFixed32(int value) {

        ensureUnpackedFixed32IsMutable();
        unpackedFixed32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed32 unpacked_fixed32 = 95 [packed = false];</code>
       *
       * @param values The unpackedFixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedFixed32(java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureUnpackedFixed32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, unpackedFixed32_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed32 unpacked_fixed32 = 95 [packed = false];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedFixed32() {
        unpackedFixed32_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x10000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList unpackedFixed64_ = emptyLongList();

      private void ensureUnpackedFixed64IsMutable() {
        if (!((bitField1_ & 0x20000000) != 0)) {
          unpackedFixed64_ = mutableCopy(unpackedFixed64_);
          bitField1_ |= 0x20000000;
        }
      }

      /**
       * <code>repeated fixed64 unpacked_fixed64 = 96 [packed = false];</code>
       *
       * @return A list containing the unpackedFixed64.
       */
      public java.util.List<java.lang.Long> getUnpackedFixed64List() {
        return ((bitField1_ & 0x20000000) != 0)
            ? java.util.Collections.unmodifiableList(unpackedFixed64_)
            : unpackedFixed64_;
      }

      /**
       * <code>repeated fixed64 unpacked_fixed64 = 96 [packed = false];</code>
       *
       * @return The count of unpackedFixed64.
       */
      public int getUnpackedFixed64Count() {
        return unpackedFixed64_.size();
      }

      /**
       * <code>repeated fixed64 unpacked_fixed64 = 96 [packed = false];</code>
       *
       * @param index The index of the element to return.
       * @return The unpackedFixed64 at the given index.
       */
      public long getUnpackedFixed64(int index) {
        return unpackedFixed64_.getLong(index);
      }

      /**
       * <code>repeated fixed64 unpacked_fixed64 = 96 [packed = false];</code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedFixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedFixed64(int index, long value) {

        ensureUnpackedFixed64IsMutable();
        unpackedFixed64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed64 unpacked_fixed64 = 96 [packed = false];</code>
       *
       * @param value The unpackedFixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedFixed64(long value) {

        ensureUnpackedFixed64IsMutable();
        unpackedFixed64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed64 unpacked_fixed64 = 96 [packed = false];</code>
       *
       * @param values The unpackedFixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedFixed64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensureUnpackedFixed64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, unpackedFixed64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated fixed64 unpacked_fixed64 = 96 [packed = false];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedFixed64() {
        unpackedFixed64_ = emptyLongList();
        bitField1_ = (bitField1_ & ~0x20000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList unpackedSfixed32_ = emptyIntList();

      private void ensureUnpackedSfixed32IsMutable() {
        if (!((bitField1_ & 0x40000000) != 0)) {
          unpackedSfixed32_ = mutableCopy(unpackedSfixed32_);
          bitField1_ |= 0x40000000;
        }
      }

      /**
       * <code>repeated sfixed32 unpacked_sfixed32 = 97 [packed = false];</code>
       *
       * @return A list containing the unpackedSfixed32.
       */
      public java.util.List<java.lang.Integer> getUnpackedSfixed32List() {
        return ((bitField1_ & 0x40000000) != 0)
            ? java.util.Collections.unmodifiableList(unpackedSfixed32_)
            : unpackedSfixed32_;
      }

      /**
       * <code>repeated sfixed32 unpacked_sfixed32 = 97 [packed = false];</code>
       *
       * @return The count of unpackedSfixed32.
       */
      public int getUnpackedSfixed32Count() {
        return unpackedSfixed32_.size();
      }

      /**
       * <code>repeated sfixed32 unpacked_sfixed32 = 97 [packed = false];</code>
       *
       * @param index The index of the element to return.
       * @return The unpackedSfixed32 at the given index.
       */
      public int getUnpackedSfixed32(int index) {
        return unpackedSfixed32_.getInt(index);
      }

      /**
       * <code>repeated sfixed32 unpacked_sfixed32 = 97 [packed = false];</code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedSfixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedSfixed32(int index, int value) {

        ensureUnpackedSfixed32IsMutable();
        unpackedSfixed32_.setInt(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed32 unpacked_sfixed32 = 97 [packed = false];</code>
       *
       * @param value The unpackedSfixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedSfixed32(int value) {

        ensureUnpackedSfixed32IsMutable();
        unpackedSfixed32_.addInt(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed32 unpacked_sfixed32 = 97 [packed = false];</code>
       *
       * @param values The unpackedSfixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedSfixed32(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureUnpackedSfixed32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, unpackedSfixed32_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed32 unpacked_sfixed32 = 97 [packed = false];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedSfixed32() {
        unpackedSfixed32_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x40000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList unpackedSfixed64_ = emptyLongList();

      private void ensureUnpackedSfixed64IsMutable() {
        if (!((bitField1_ & 0x80000000) != 0)) {
          unpackedSfixed64_ = mutableCopy(unpackedSfixed64_);
          bitField1_ |= 0x80000000;
        }
      }

      /**
       * <code>repeated sfixed64 unpacked_sfixed64 = 98 [packed = false];</code>
       *
       * @return A list containing the unpackedSfixed64.
       */
      public java.util.List<java.lang.Long> getUnpackedSfixed64List() {
        return ((bitField1_ & 0x80000000) != 0)
            ? java.util.Collections.unmodifiableList(unpackedSfixed64_)
            : unpackedSfixed64_;
      }

      /**
       * <code>repeated sfixed64 unpacked_sfixed64 = 98 [packed = false];</code>
       *
       * @return The count of unpackedSfixed64.
       */
      public int getUnpackedSfixed64Count() {
        return unpackedSfixed64_.size();
      }

      /**
       * <code>repeated sfixed64 unpacked_sfixed64 = 98 [packed = false];</code>
       *
       * @param index The index of the element to return.
       * @return The unpackedSfixed64 at the given index.
       */
      public long getUnpackedSfixed64(int index) {
        return unpackedSfixed64_.getLong(index);
      }

      /**
       * <code>repeated sfixed64 unpacked_sfixed64 = 98 [packed = false];</code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedSfixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedSfixed64(int index, long value) {

        ensureUnpackedSfixed64IsMutable();
        unpackedSfixed64_.setLong(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed64 unpacked_sfixed64 = 98 [packed = false];</code>
       *
       * @param value The unpackedSfixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedSfixed64(long value) {

        ensureUnpackedSfixed64IsMutable();
        unpackedSfixed64_.addLong(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed64 unpacked_sfixed64 = 98 [packed = false];</code>
       *
       * @param values The unpackedSfixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedSfixed64(java.lang.Iterable<? extends java.lang.Long> values) {
        ensureUnpackedSfixed64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, unpackedSfixed64_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated sfixed64 unpacked_sfixed64 = 98 [packed = false];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedSfixed64() {
        unpackedSfixed64_ = emptyLongList();
        bitField1_ = (bitField1_ & ~0x80000000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.FloatList unpackedFloat_ = emptyFloatList();

      private void ensureUnpackedFloatIsMutable() {
        if (!((bitField2_ & 0x00000001) != 0)) {
          unpackedFloat_ = mutableCopy(unpackedFloat_);
          bitField2_ |= 0x00000001;
        }
      }

      /**
       * <code>repeated float unpacked_float = 99 [packed = false];</code>
       *
       * @return A list containing the unpackedFloat.
       */
      public java.util.List<java.lang.Float> getUnpackedFloatList() {
        return ((bitField2_ & 0x00000001) != 0)
            ? java.util.Collections.unmodifiableList(unpackedFloat_)
            : unpackedFloat_;
      }

      /**
       * <code>repeated float unpacked_float = 99 [packed = false];</code>
       *
       * @return The count of unpackedFloat.
       */
      public int getUnpackedFloatCount() {
        return unpackedFloat_.size();
      }

      /**
       * <code>repeated float unpacked_float = 99 [packed = false];</code>
       *
       * @param index The index of the element to return.
       * @return The unpackedFloat at the given index.
       */
      public float getUnpackedFloat(int index) {
        return unpackedFloat_.getFloat(index);
      }

      /**
       * <code>repeated float unpacked_float = 99 [packed = false];</code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedFloat to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedFloat(int index, float value) {

        ensureUnpackedFloatIsMutable();
        unpackedFloat_.setFloat(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated float unpacked_float = 99 [packed = false];</code>
       *
       * @param value The unpackedFloat to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedFloat(float value) {

        ensureUnpackedFloatIsMutable();
        unpackedFloat_.addFloat(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated float unpacked_float = 99 [packed = false];</code>
       *
       * @param values The unpackedFloat to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedFloat(java.lang.Iterable<? extends java.lang.Float> values) {
        ensureUnpackedFloatIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, unpackedFloat_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated float unpacked_float = 99 [packed = false];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedFloat() {
        unpackedFloat_ = emptyFloatList();
        bitField2_ = (bitField2_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList unpackedDouble_ = emptyDoubleList();

      private void ensureUnpackedDoubleIsMutable() {
        if (!((bitField2_ & 0x00000002) != 0)) {
          unpackedDouble_ = mutableCopy(unpackedDouble_);
          bitField2_ |= 0x00000002;
        }
      }

      /**
       * <code>repeated double unpacked_double = 100 [packed = false];</code>
       *
       * @return A list containing the unpackedDouble.
       */
      public java.util.List<java.lang.Double> getUnpackedDoubleList() {
        return ((bitField2_ & 0x00000002) != 0)
            ? java.util.Collections.unmodifiableList(unpackedDouble_)
            : unpackedDouble_;
      }

      /**
       * <code>repeated double unpacked_double = 100 [packed = false];</code>
       *
       * @return The count of unpackedDouble.
       */
      public int getUnpackedDoubleCount() {
        return unpackedDouble_.size();
      }

      /**
       * <code>repeated double unpacked_double = 100 [packed = false];</code>
       *
       * @param index The index of the element to return.
       * @return The unpackedDouble at the given index.
       */
      public double getUnpackedDouble(int index) {
        return unpackedDouble_.getDouble(index);
      }

      /**
       * <code>repeated double unpacked_double = 100 [packed = false];</code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedDouble to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedDouble(int index, double value) {

        ensureUnpackedDoubleIsMutable();
        unpackedDouble_.setDouble(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated double unpacked_double = 100 [packed = false];</code>
       *
       * @param value The unpackedDouble to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedDouble(double value) {

        ensureUnpackedDoubleIsMutable();
        unpackedDouble_.addDouble(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated double unpacked_double = 100 [packed = false];</code>
       *
       * @param values The unpackedDouble to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedDouble(java.lang.Iterable<? extends java.lang.Double> values) {
        ensureUnpackedDoubleIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, unpackedDouble_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated double unpacked_double = 100 [packed = false];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedDouble() {
        unpackedDouble_ = emptyDoubleList();
        bitField2_ = (bitField2_ & ~0x00000002);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.BooleanList unpackedBool_ = emptyBooleanList();

      private void ensureUnpackedBoolIsMutable() {
        if (!((bitField2_ & 0x00000004) != 0)) {
          unpackedBool_ = mutableCopy(unpackedBool_);
          bitField2_ |= 0x00000004;
        }
      }

      /**
       * <code>repeated bool unpacked_bool = 101 [packed = false];</code>
       *
       * @return A list containing the unpackedBool.
       */
      public java.util.List<java.lang.Boolean> getUnpackedBoolList() {
        return ((bitField2_ & 0x00000004) != 0)
            ? java.util.Collections.unmodifiableList(unpackedBool_)
            : unpackedBool_;
      }

      /**
       * <code>repeated bool unpacked_bool = 101 [packed = false];</code>
       *
       * @return The count of unpackedBool.
       */
      public int getUnpackedBoolCount() {
        return unpackedBool_.size();
      }

      /**
       * <code>repeated bool unpacked_bool = 101 [packed = false];</code>
       *
       * @param index The index of the element to return.
       * @return The unpackedBool at the given index.
       */
      public boolean getUnpackedBool(int index) {
        return unpackedBool_.getBoolean(index);
      }

      /**
       * <code>repeated bool unpacked_bool = 101 [packed = false];</code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedBool to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedBool(int index, boolean value) {

        ensureUnpackedBoolIsMutable();
        unpackedBool_.setBoolean(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated bool unpacked_bool = 101 [packed = false];</code>
       *
       * @param value The unpackedBool to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedBool(boolean value) {

        ensureUnpackedBoolIsMutable();
        unpackedBool_.addBoolean(value);
        onChanged();
        return this;
      }

      /**
       * <code>repeated bool unpacked_bool = 101 [packed = false];</code>
       *
       * @param values The unpackedBool to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedBool(java.lang.Iterable<? extends java.lang.Boolean> values) {
        ensureUnpackedBoolIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, unpackedBool_);
        onChanged();
        return this;
      }

      /**
       * <code>repeated bool unpacked_bool = 101 [packed = false];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedBool() {
        unpackedBool_ = emptyBooleanList();
        bitField2_ = (bitField2_ & ~0x00000004);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> unpackedNestedEnum_ =
          java.util.Collections.emptyList();

      private void ensureUnpackedNestedEnumIsMutable() {
        if (!((bitField2_ & 0x00000008) != 0)) {
          unpackedNestedEnum_ = new java.util.ArrayList<java.lang.Integer>(unpackedNestedEnum_);
          bitField2_ |= 0x00000008;
        }
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
       * </code>
       *
       * @return A list containing the unpackedNestedEnum.
       */
      public java.util.List<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
          getUnpackedNestedEnumList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer,
            legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>(
            unpackedNestedEnum_, unpackedNestedEnum_converter_);
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
       * </code>
       *
       * @return The count of unpackedNestedEnum.
       */
      public int getUnpackedNestedEnumCount() {
        return unpackedNestedEnum_.size();
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
       * </code>
       *
       * @param index The index of the element to return.
       * @return The unpackedNestedEnum at the given index.
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
          getUnpackedNestedEnum(int index) {
        return unpackedNestedEnum_converter_.convert(unpackedNestedEnum_.get(index));
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
       * </code>
       *
       * @param index The index to set the value at.
       * @param value The unpackedNestedEnum to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedNestedEnum(
          int index,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureUnpackedNestedEnumIsMutable();
        unpackedNestedEnum_.set(index, value.getNumber());
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
       * </code>
       *
       * @param value The unpackedNestedEnum to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedNestedEnum(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureUnpackedNestedEnumIsMutable();
        unpackedNestedEnum_.add(value.getNumber());
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
       * </code>
       *
       * @param values The unpackedNestedEnum to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedNestedEnum(
          java.lang.Iterable<
                  ? extends
                      legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                          .NestedEnum>
              values) {
        ensureUnpackedNestedEnumIsMutable();
        for (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
            value : values) {
          unpackedNestedEnum_.add(value.getNumber());
        }
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
       * </code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUnpackedNestedEnum() {
        unpackedNestedEnum_ = java.util.Collections.emptyList();
        bitField2_ = (bitField2_ & ~0x00000008);
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
       * </code>
       *
       * @return A list containing the enum numeric values on the wire for unpackedNestedEnum.
       */
      public java.util.List<java.lang.Integer> getUnpackedNestedEnumValueList() {
        return java.util.Collections.unmodifiableList(unpackedNestedEnum_);
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
       * </code>
       *
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of unpackedNestedEnum at the given index.
       */
      public int getUnpackedNestedEnumValue(int index) {
        return unpackedNestedEnum_.get(index);
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
       * </code>
       *
       * @param index The index to set the value at.
       * @param value The enum numeric value on the wire for unpackedNestedEnum to set.
       * @return This builder for chaining.
       */
      public Builder setUnpackedNestedEnumValue(int index, int value) {
        ensureUnpackedNestedEnumIsMutable();
        unpackedNestedEnum_.set(index, value);
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
       * </code>
       *
       * @param value The enum numeric value on the wire for unpackedNestedEnum to add.
       * @return This builder for chaining.
       */
      public Builder addUnpackedNestedEnumValue(int value) {
        ensureUnpackedNestedEnumIsMutable();
        unpackedNestedEnum_.add(value);
        onChanged();
        return this;
      }

      /**
       * <code>
       * repeated .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum unpacked_nested_enum = 102 [packed = false];
       * </code>
       *
       * @param values The enum numeric values on the wire for unpackedNestedEnum to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnpackedNestedEnumValue(java.lang.Iterable<java.lang.Integer> values) {
        ensureUnpackedNestedEnumIsMutable();
        for (int value : values) {
          unpackedNestedEnum_.add(value);
        }
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer> mapInt32Int32_;

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
          internalGetMapInt32Int32() {
        if (mapInt32Int32_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapInt32Int32DefaultEntryHolder.defaultEntry);
        }
        return mapInt32Int32_;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
          internalGetMutableMapInt32Int32() {
        if (mapInt32Int32_ == null) {
          mapInt32Int32_ =
              com.google.protobuf.MapField.newMapField(
                  MapInt32Int32DefaultEntryHolder.defaultEntry);
        }
        if (!mapInt32Int32_.isMutable()) {
          mapInt32Int32_ = mapInt32Int32_.copy();
        }
        bitField2_ |= 0x00000010;
        onChanged();
        return mapInt32Int32_;
      }

      public int getMapInt32Int32Count() {
        return internalGetMapInt32Int32().getMap().size();
      }

      /**
       *
       *
       * <pre>
       * Map
       * </pre>
       *
       * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
       */
      @java.lang.Override
      public boolean containsMapInt32Int32(int key) {

        return internalGetMapInt32Int32().getMap().containsKey(key);
      }

      /** Use {@link #getMapInt32Int32Map()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMapInt32Int32() {
        return getMapInt32Int32Map();
      }

      /**
       *
       *
       * <pre>
       * Map
       * </pre>
       *
       * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMapInt32Int32Map() {
        return internalGetMapInt32Int32().getMap();
      }

      /**
       *
       *
       * <pre>
       * Map
       * </pre>
       *
       * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
       */
      @java.lang.Override
      public int getMapInt32Int32OrDefault(int key, int defaultValue) {

        java.util.Map<java.lang.Integer, java.lang.Integer> map =
            internalGetMapInt32Int32().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /**
       *
       *
       * <pre>
       * Map
       * </pre>
       *
       * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
       */
      @java.lang.Override
      public int getMapInt32Int32OrThrow(int key) {

        java.util.Map<java.lang.Integer, java.lang.Integer> map =
            internalGetMapInt32Int32().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapInt32Int32() {
        bitField2_ = (bitField2_ & ~0x00000010);
        internalGetMutableMapInt32Int32().getMutableMap().clear();
        return this;
      }

      /**
       *
       *
       * <pre>
       * Map
       * </pre>
       *
       * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
       */
      public Builder removeMapInt32Int32(int key) {

        internalGetMutableMapInt32Int32().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMutableMapInt32Int32() {
        bitField2_ |= 0x00000010;
        return internalGetMutableMapInt32Int32().getMutableMap();
      }

      /**
       *
       *
       * <pre>
       * Map
       * </pre>
       *
       * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
       */
      public Builder putMapInt32Int32(int key, int value) {

        internalGetMutableMapInt32Int32().getMutableMap().put(key, value);
        bitField2_ |= 0x00000010;
        return this;
      }

      /**
       *
       *
       * <pre>
       * Map
       * </pre>
       *
       * <code>map&lt;int32, int32&gt; map_int32_int32 = 56;</code>
       */
      public Builder putAllMapInt32Int32(
          java.util.Map<java.lang.Integer, java.lang.Integer> values) {
        internalGetMutableMapInt32Int32().getMutableMap().putAll(values);
        bitField2_ |= 0x00000010;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long> mapInt64Int64_;

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
          internalGetMapInt64Int64() {
        if (mapInt64Int64_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapInt64Int64DefaultEntryHolder.defaultEntry);
        }
        return mapInt64Int64_;
      }

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
          internalGetMutableMapInt64Int64() {
        if (mapInt64Int64_ == null) {
          mapInt64Int64_ =
              com.google.protobuf.MapField.newMapField(
                  MapInt64Int64DefaultEntryHolder.defaultEntry);
        }
        if (!mapInt64Int64_.isMutable()) {
          mapInt64Int64_ = mapInt64Int64_.copy();
        }
        bitField2_ |= 0x00000020;
        onChanged();
        return mapInt64Int64_;
      }

      public int getMapInt64Int64Count() {
        return internalGetMapInt64Int64().getMap().size();
      }

      /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
      @java.lang.Override
      public boolean containsMapInt64Int64(long key) {

        return internalGetMapInt64Int64().getMap().containsKey(key);
      }

      /** Use {@link #getMapInt64Int64Map()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Long, java.lang.Long> getMapInt64Int64() {
        return getMapInt64Int64Map();
      }

      /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.Long, java.lang.Long> getMapInt64Int64Map() {
        return internalGetMapInt64Int64().getMap();
      }

      /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
      @java.lang.Override
      public long getMapInt64Int64OrDefault(long key, long defaultValue) {

        java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapInt64Int64().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
      @java.lang.Override
      public long getMapInt64Int64OrThrow(long key) {

        java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapInt64Int64().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapInt64Int64() {
        bitField2_ = (bitField2_ & ~0x00000020);
        internalGetMutableMapInt64Int64().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
      public Builder removeMapInt64Int64(long key) {

        internalGetMutableMapInt64Int64().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Long, java.lang.Long> getMutableMapInt64Int64() {
        bitField2_ |= 0x00000020;
        return internalGetMutableMapInt64Int64().getMutableMap();
      }

      /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
      public Builder putMapInt64Int64(long key, long value) {

        internalGetMutableMapInt64Int64().getMutableMap().put(key, value);
        bitField2_ |= 0x00000020;
        return this;
      }

      /** <code>map&lt;int64, int64&gt; map_int64_int64 = 57;</code> */
      public Builder putAllMapInt64Int64(java.util.Map<java.lang.Long, java.lang.Long> values) {
        internalGetMutableMapInt64Int64().getMutableMap().putAll(values);
        bitField2_ |= 0x00000020;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer> mapUint32Uint32_;

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
          internalGetMapUint32Uint32() {
        if (mapUint32Uint32_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapUint32Uint32DefaultEntryHolder.defaultEntry);
        }
        return mapUint32Uint32_;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
          internalGetMutableMapUint32Uint32() {
        if (mapUint32Uint32_ == null) {
          mapUint32Uint32_ =
              com.google.protobuf.MapField.newMapField(
                  MapUint32Uint32DefaultEntryHolder.defaultEntry);
        }
        if (!mapUint32Uint32_.isMutable()) {
          mapUint32Uint32_ = mapUint32Uint32_.copy();
        }
        bitField2_ |= 0x00000040;
        onChanged();
        return mapUint32Uint32_;
      }

      public int getMapUint32Uint32Count() {
        return internalGetMapUint32Uint32().getMap().size();
      }

      /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
      @java.lang.Override
      public boolean containsMapUint32Uint32(int key) {

        return internalGetMapUint32Uint32().getMap().containsKey(key);
      }

      /** Use {@link #getMapUint32Uint32Map()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMapUint32Uint32() {
        return getMapUint32Uint32Map();
      }

      /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMapUint32Uint32Map() {
        return internalGetMapUint32Uint32().getMap();
      }

      /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
      @java.lang.Override
      public int getMapUint32Uint32OrDefault(int key, int defaultValue) {

        java.util.Map<java.lang.Integer, java.lang.Integer> map =
            internalGetMapUint32Uint32().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
      @java.lang.Override
      public int getMapUint32Uint32OrThrow(int key) {

        java.util.Map<java.lang.Integer, java.lang.Integer> map =
            internalGetMapUint32Uint32().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapUint32Uint32() {
        bitField2_ = (bitField2_ & ~0x00000040);
        internalGetMutableMapUint32Uint32().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
      public Builder removeMapUint32Uint32(int key) {

        internalGetMutableMapUint32Uint32().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMutableMapUint32Uint32() {
        bitField2_ |= 0x00000040;
        return internalGetMutableMapUint32Uint32().getMutableMap();
      }

      /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
      public Builder putMapUint32Uint32(int key, int value) {

        internalGetMutableMapUint32Uint32().getMutableMap().put(key, value);
        bitField2_ |= 0x00000040;
        return this;
      }

      /** <code>map&lt;uint32, uint32&gt; map_uint32_uint32 = 58;</code> */
      public Builder putAllMapUint32Uint32(
          java.util.Map<java.lang.Integer, java.lang.Integer> values) {
        internalGetMutableMapUint32Uint32().getMutableMap().putAll(values);
        bitField2_ |= 0x00000040;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long> mapUint64Uint64_;

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
          internalGetMapUint64Uint64() {
        if (mapUint64Uint64_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapUint64Uint64DefaultEntryHolder.defaultEntry);
        }
        return mapUint64Uint64_;
      }

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
          internalGetMutableMapUint64Uint64() {
        if (mapUint64Uint64_ == null) {
          mapUint64Uint64_ =
              com.google.protobuf.MapField.newMapField(
                  MapUint64Uint64DefaultEntryHolder.defaultEntry);
        }
        if (!mapUint64Uint64_.isMutable()) {
          mapUint64Uint64_ = mapUint64Uint64_.copy();
        }
        bitField2_ |= 0x00000080;
        onChanged();
        return mapUint64Uint64_;
      }

      public int getMapUint64Uint64Count() {
        return internalGetMapUint64Uint64().getMap().size();
      }

      /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
      @java.lang.Override
      public boolean containsMapUint64Uint64(long key) {

        return internalGetMapUint64Uint64().getMap().containsKey(key);
      }

      /** Use {@link #getMapUint64Uint64Map()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Long, java.lang.Long> getMapUint64Uint64() {
        return getMapUint64Uint64Map();
      }

      /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.Long, java.lang.Long> getMapUint64Uint64Map() {
        return internalGetMapUint64Uint64().getMap();
      }

      /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
      @java.lang.Override
      public long getMapUint64Uint64OrDefault(long key, long defaultValue) {

        java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapUint64Uint64().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
      @java.lang.Override
      public long getMapUint64Uint64OrThrow(long key) {

        java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapUint64Uint64().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapUint64Uint64() {
        bitField2_ = (bitField2_ & ~0x00000080);
        internalGetMutableMapUint64Uint64().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
      public Builder removeMapUint64Uint64(long key) {

        internalGetMutableMapUint64Uint64().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Long, java.lang.Long> getMutableMapUint64Uint64() {
        bitField2_ |= 0x00000080;
        return internalGetMutableMapUint64Uint64().getMutableMap();
      }

      /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
      public Builder putMapUint64Uint64(long key, long value) {

        internalGetMutableMapUint64Uint64().getMutableMap().put(key, value);
        bitField2_ |= 0x00000080;
        return this;
      }

      /** <code>map&lt;uint64, uint64&gt; map_uint64_uint64 = 59;</code> */
      public Builder putAllMapUint64Uint64(java.util.Map<java.lang.Long, java.lang.Long> values) {
        internalGetMutableMapUint64Uint64().getMutableMap().putAll(values);
        bitField2_ |= 0x00000080;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer> mapSint32Sint32_;

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
          internalGetMapSint32Sint32() {
        if (mapSint32Sint32_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapSint32Sint32DefaultEntryHolder.defaultEntry);
        }
        return mapSint32Sint32_;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
          internalGetMutableMapSint32Sint32() {
        if (mapSint32Sint32_ == null) {
          mapSint32Sint32_ =
              com.google.protobuf.MapField.newMapField(
                  MapSint32Sint32DefaultEntryHolder.defaultEntry);
        }
        if (!mapSint32Sint32_.isMutable()) {
          mapSint32Sint32_ = mapSint32Sint32_.copy();
        }
        bitField2_ |= 0x00000100;
        onChanged();
        return mapSint32Sint32_;
      }

      public int getMapSint32Sint32Count() {
        return internalGetMapSint32Sint32().getMap().size();
      }

      /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
      @java.lang.Override
      public boolean containsMapSint32Sint32(int key) {

        return internalGetMapSint32Sint32().getMap().containsKey(key);
      }

      /** Use {@link #getMapSint32Sint32Map()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMapSint32Sint32() {
        return getMapSint32Sint32Map();
      }

      /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMapSint32Sint32Map() {
        return internalGetMapSint32Sint32().getMap();
      }

      /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
      @java.lang.Override
      public int getMapSint32Sint32OrDefault(int key, int defaultValue) {

        java.util.Map<java.lang.Integer, java.lang.Integer> map =
            internalGetMapSint32Sint32().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
      @java.lang.Override
      public int getMapSint32Sint32OrThrow(int key) {

        java.util.Map<java.lang.Integer, java.lang.Integer> map =
            internalGetMapSint32Sint32().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapSint32Sint32() {
        bitField2_ = (bitField2_ & ~0x00000100);
        internalGetMutableMapSint32Sint32().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
      public Builder removeMapSint32Sint32(int key) {

        internalGetMutableMapSint32Sint32().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMutableMapSint32Sint32() {
        bitField2_ |= 0x00000100;
        return internalGetMutableMapSint32Sint32().getMutableMap();
      }

      /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
      public Builder putMapSint32Sint32(int key, int value) {

        internalGetMutableMapSint32Sint32().getMutableMap().put(key, value);
        bitField2_ |= 0x00000100;
        return this;
      }

      /** <code>map&lt;sint32, sint32&gt; map_sint32_sint32 = 60;</code> */
      public Builder putAllMapSint32Sint32(
          java.util.Map<java.lang.Integer, java.lang.Integer> values) {
        internalGetMutableMapSint32Sint32().getMutableMap().putAll(values);
        bitField2_ |= 0x00000100;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long> mapSint64Sint64_;

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
          internalGetMapSint64Sint64() {
        if (mapSint64Sint64_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapSint64Sint64DefaultEntryHolder.defaultEntry);
        }
        return mapSint64Sint64_;
      }

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
          internalGetMutableMapSint64Sint64() {
        if (mapSint64Sint64_ == null) {
          mapSint64Sint64_ =
              com.google.protobuf.MapField.newMapField(
                  MapSint64Sint64DefaultEntryHolder.defaultEntry);
        }
        if (!mapSint64Sint64_.isMutable()) {
          mapSint64Sint64_ = mapSint64Sint64_.copy();
        }
        bitField2_ |= 0x00000200;
        onChanged();
        return mapSint64Sint64_;
      }

      public int getMapSint64Sint64Count() {
        return internalGetMapSint64Sint64().getMap().size();
      }

      /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
      @java.lang.Override
      public boolean containsMapSint64Sint64(long key) {

        return internalGetMapSint64Sint64().getMap().containsKey(key);
      }

      /** Use {@link #getMapSint64Sint64Map()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Long, java.lang.Long> getMapSint64Sint64() {
        return getMapSint64Sint64Map();
      }

      /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.Long, java.lang.Long> getMapSint64Sint64Map() {
        return internalGetMapSint64Sint64().getMap();
      }

      /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
      @java.lang.Override
      public long getMapSint64Sint64OrDefault(long key, long defaultValue) {

        java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapSint64Sint64().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
      @java.lang.Override
      public long getMapSint64Sint64OrThrow(long key) {

        java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapSint64Sint64().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapSint64Sint64() {
        bitField2_ = (bitField2_ & ~0x00000200);
        internalGetMutableMapSint64Sint64().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
      public Builder removeMapSint64Sint64(long key) {

        internalGetMutableMapSint64Sint64().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Long, java.lang.Long> getMutableMapSint64Sint64() {
        bitField2_ |= 0x00000200;
        return internalGetMutableMapSint64Sint64().getMutableMap();
      }

      /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
      public Builder putMapSint64Sint64(long key, long value) {

        internalGetMutableMapSint64Sint64().getMutableMap().put(key, value);
        bitField2_ |= 0x00000200;
        return this;
      }

      /** <code>map&lt;sint64, sint64&gt; map_sint64_sint64 = 61;</code> */
      public Builder putAllMapSint64Sint64(java.util.Map<java.lang.Long, java.lang.Long> values) {
        internalGetMutableMapSint64Sint64().getMutableMap().putAll(values);
        bitField2_ |= 0x00000200;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer> mapFixed32Fixed32_;

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
          internalGetMapFixed32Fixed32() {
        if (mapFixed32Fixed32_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapFixed32Fixed32DefaultEntryHolder.defaultEntry);
        }
        return mapFixed32Fixed32_;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
          internalGetMutableMapFixed32Fixed32() {
        if (mapFixed32Fixed32_ == null) {
          mapFixed32Fixed32_ =
              com.google.protobuf.MapField.newMapField(
                  MapFixed32Fixed32DefaultEntryHolder.defaultEntry);
        }
        if (!mapFixed32Fixed32_.isMutable()) {
          mapFixed32Fixed32_ = mapFixed32Fixed32_.copy();
        }
        bitField2_ |= 0x00000400;
        onChanged();
        return mapFixed32Fixed32_;
      }

      public int getMapFixed32Fixed32Count() {
        return internalGetMapFixed32Fixed32().getMap().size();
      }

      /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
      @java.lang.Override
      public boolean containsMapFixed32Fixed32(int key) {

        return internalGetMapFixed32Fixed32().getMap().containsKey(key);
      }

      /** Use {@link #getMapFixed32Fixed32Map()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMapFixed32Fixed32() {
        return getMapFixed32Fixed32Map();
      }

      /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMapFixed32Fixed32Map() {
        return internalGetMapFixed32Fixed32().getMap();
      }

      /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
      @java.lang.Override
      public int getMapFixed32Fixed32OrDefault(int key, int defaultValue) {

        java.util.Map<java.lang.Integer, java.lang.Integer> map =
            internalGetMapFixed32Fixed32().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
      @java.lang.Override
      public int getMapFixed32Fixed32OrThrow(int key) {

        java.util.Map<java.lang.Integer, java.lang.Integer> map =
            internalGetMapFixed32Fixed32().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapFixed32Fixed32() {
        bitField2_ = (bitField2_ & ~0x00000400);
        internalGetMutableMapFixed32Fixed32().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
      public Builder removeMapFixed32Fixed32(int key) {

        internalGetMutableMapFixed32Fixed32().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMutableMapFixed32Fixed32() {
        bitField2_ |= 0x00000400;
        return internalGetMutableMapFixed32Fixed32().getMutableMap();
      }

      /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
      public Builder putMapFixed32Fixed32(int key, int value) {

        internalGetMutableMapFixed32Fixed32().getMutableMap().put(key, value);
        bitField2_ |= 0x00000400;
        return this;
      }

      /** <code>map&lt;fixed32, fixed32&gt; map_fixed32_fixed32 = 62;</code> */
      public Builder putAllMapFixed32Fixed32(
          java.util.Map<java.lang.Integer, java.lang.Integer> values) {
        internalGetMutableMapFixed32Fixed32().getMutableMap().putAll(values);
        bitField2_ |= 0x00000400;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long> mapFixed64Fixed64_;

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
          internalGetMapFixed64Fixed64() {
        if (mapFixed64Fixed64_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapFixed64Fixed64DefaultEntryHolder.defaultEntry);
        }
        return mapFixed64Fixed64_;
      }

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
          internalGetMutableMapFixed64Fixed64() {
        if (mapFixed64Fixed64_ == null) {
          mapFixed64Fixed64_ =
              com.google.protobuf.MapField.newMapField(
                  MapFixed64Fixed64DefaultEntryHolder.defaultEntry);
        }
        if (!mapFixed64Fixed64_.isMutable()) {
          mapFixed64Fixed64_ = mapFixed64Fixed64_.copy();
        }
        bitField2_ |= 0x00000800;
        onChanged();
        return mapFixed64Fixed64_;
      }

      public int getMapFixed64Fixed64Count() {
        return internalGetMapFixed64Fixed64().getMap().size();
      }

      /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
      @java.lang.Override
      public boolean containsMapFixed64Fixed64(long key) {

        return internalGetMapFixed64Fixed64().getMap().containsKey(key);
      }

      /** Use {@link #getMapFixed64Fixed64Map()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Long, java.lang.Long> getMapFixed64Fixed64() {
        return getMapFixed64Fixed64Map();
      }

      /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.Long, java.lang.Long> getMapFixed64Fixed64Map() {
        return internalGetMapFixed64Fixed64().getMap();
      }

      /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
      @java.lang.Override
      public long getMapFixed64Fixed64OrDefault(long key, long defaultValue) {

        java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapFixed64Fixed64().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
      @java.lang.Override
      public long getMapFixed64Fixed64OrThrow(long key) {

        java.util.Map<java.lang.Long, java.lang.Long> map = internalGetMapFixed64Fixed64().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapFixed64Fixed64() {
        bitField2_ = (bitField2_ & ~0x00000800);
        internalGetMutableMapFixed64Fixed64().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
      public Builder removeMapFixed64Fixed64(long key) {

        internalGetMutableMapFixed64Fixed64().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Long, java.lang.Long> getMutableMapFixed64Fixed64() {
        bitField2_ |= 0x00000800;
        return internalGetMutableMapFixed64Fixed64().getMutableMap();
      }

      /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
      public Builder putMapFixed64Fixed64(long key, long value) {

        internalGetMutableMapFixed64Fixed64().getMutableMap().put(key, value);
        bitField2_ |= 0x00000800;
        return this;
      }

      /** <code>map&lt;fixed64, fixed64&gt; map_fixed64_fixed64 = 63;</code> */
      public Builder putAllMapFixed64Fixed64(java.util.Map<java.lang.Long, java.lang.Long> values) {
        internalGetMutableMapFixed64Fixed64().getMutableMap().putAll(values);
        bitField2_ |= 0x00000800;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
          mapSfixed32Sfixed32_;

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
          internalGetMapSfixed32Sfixed32() {
        if (mapSfixed32Sfixed32_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapSfixed32Sfixed32DefaultEntryHolder.defaultEntry);
        }
        return mapSfixed32Sfixed32_;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Integer>
          internalGetMutableMapSfixed32Sfixed32() {
        if (mapSfixed32Sfixed32_ == null) {
          mapSfixed32Sfixed32_ =
              com.google.protobuf.MapField.newMapField(
                  MapSfixed32Sfixed32DefaultEntryHolder.defaultEntry);
        }
        if (!mapSfixed32Sfixed32_.isMutable()) {
          mapSfixed32Sfixed32_ = mapSfixed32Sfixed32_.copy();
        }
        bitField2_ |= 0x00001000;
        onChanged();
        return mapSfixed32Sfixed32_;
      }

      public int getMapSfixed32Sfixed32Count() {
        return internalGetMapSfixed32Sfixed32().getMap().size();
      }

      /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
      @java.lang.Override
      public boolean containsMapSfixed32Sfixed32(int key) {

        return internalGetMapSfixed32Sfixed32().getMap().containsKey(key);
      }

      /** Use {@link #getMapSfixed32Sfixed32Map()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMapSfixed32Sfixed32() {
        return getMapSfixed32Sfixed32Map();
      }

      /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMapSfixed32Sfixed32Map() {
        return internalGetMapSfixed32Sfixed32().getMap();
      }

      /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
      @java.lang.Override
      public int getMapSfixed32Sfixed32OrDefault(int key, int defaultValue) {

        java.util.Map<java.lang.Integer, java.lang.Integer> map =
            internalGetMapSfixed32Sfixed32().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
      @java.lang.Override
      public int getMapSfixed32Sfixed32OrThrow(int key) {

        java.util.Map<java.lang.Integer, java.lang.Integer> map =
            internalGetMapSfixed32Sfixed32().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapSfixed32Sfixed32() {
        bitField2_ = (bitField2_ & ~0x00001000);
        internalGetMutableMapSfixed32Sfixed32().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
      public Builder removeMapSfixed32Sfixed32(int key) {

        internalGetMutableMapSfixed32Sfixed32().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Integer> getMutableMapSfixed32Sfixed32() {
        bitField2_ |= 0x00001000;
        return internalGetMutableMapSfixed32Sfixed32().getMutableMap();
      }

      /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
      public Builder putMapSfixed32Sfixed32(int key, int value) {

        internalGetMutableMapSfixed32Sfixed32().getMutableMap().put(key, value);
        bitField2_ |= 0x00001000;
        return this;
      }

      /** <code>map&lt;sfixed32, sfixed32&gt; map_sfixed32_sfixed32 = 64;</code> */
      public Builder putAllMapSfixed32Sfixed32(
          java.util.Map<java.lang.Integer, java.lang.Integer> values) {
        internalGetMutableMapSfixed32Sfixed32().getMutableMap().putAll(values);
        bitField2_ |= 0x00001000;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long> mapSfixed64Sfixed64_;

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
          internalGetMapSfixed64Sfixed64() {
        if (mapSfixed64Sfixed64_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapSfixed64Sfixed64DefaultEntryHolder.defaultEntry);
        }
        return mapSfixed64Sfixed64_;
      }

      private com.google.protobuf.MapField<java.lang.Long, java.lang.Long>
          internalGetMutableMapSfixed64Sfixed64() {
        if (mapSfixed64Sfixed64_ == null) {
          mapSfixed64Sfixed64_ =
              com.google.protobuf.MapField.newMapField(
                  MapSfixed64Sfixed64DefaultEntryHolder.defaultEntry);
        }
        if (!mapSfixed64Sfixed64_.isMutable()) {
          mapSfixed64Sfixed64_ = mapSfixed64Sfixed64_.copy();
        }
        bitField2_ |= 0x00002000;
        onChanged();
        return mapSfixed64Sfixed64_;
      }

      public int getMapSfixed64Sfixed64Count() {
        return internalGetMapSfixed64Sfixed64().getMap().size();
      }

      /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
      @java.lang.Override
      public boolean containsMapSfixed64Sfixed64(long key) {

        return internalGetMapSfixed64Sfixed64().getMap().containsKey(key);
      }

      /** Use {@link #getMapSfixed64Sfixed64Map()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Long, java.lang.Long> getMapSfixed64Sfixed64() {
        return getMapSfixed64Sfixed64Map();
      }

      /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.Long, java.lang.Long> getMapSfixed64Sfixed64Map() {
        return internalGetMapSfixed64Sfixed64().getMap();
      }

      /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
      @java.lang.Override
      public long getMapSfixed64Sfixed64OrDefault(long key, long defaultValue) {

        java.util.Map<java.lang.Long, java.lang.Long> map =
            internalGetMapSfixed64Sfixed64().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
      @java.lang.Override
      public long getMapSfixed64Sfixed64OrThrow(long key) {

        java.util.Map<java.lang.Long, java.lang.Long> map =
            internalGetMapSfixed64Sfixed64().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapSfixed64Sfixed64() {
        bitField2_ = (bitField2_ & ~0x00002000);
        internalGetMutableMapSfixed64Sfixed64().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
      public Builder removeMapSfixed64Sfixed64(long key) {

        internalGetMutableMapSfixed64Sfixed64().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Long, java.lang.Long> getMutableMapSfixed64Sfixed64() {
        bitField2_ |= 0x00002000;
        return internalGetMutableMapSfixed64Sfixed64().getMutableMap();
      }

      /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
      public Builder putMapSfixed64Sfixed64(long key, long value) {

        internalGetMutableMapSfixed64Sfixed64().getMutableMap().put(key, value);
        bitField2_ |= 0x00002000;
        return this;
      }

      /** <code>map&lt;sfixed64, sfixed64&gt; map_sfixed64_sfixed64 = 65;</code> */
      public Builder putAllMapSfixed64Sfixed64(
          java.util.Map<java.lang.Long, java.lang.Long> values) {
        internalGetMutableMapSfixed64Sfixed64().getMutableMap().putAll(values);
        bitField2_ |= 0x00002000;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Float> mapInt32Float_;

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Float>
          internalGetMapInt32Float() {
        if (mapInt32Float_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapInt32FloatDefaultEntryHolder.defaultEntry);
        }
        return mapInt32Float_;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Float>
          internalGetMutableMapInt32Float() {
        if (mapInt32Float_ == null) {
          mapInt32Float_ =
              com.google.protobuf.MapField.newMapField(
                  MapInt32FloatDefaultEntryHolder.defaultEntry);
        }
        if (!mapInt32Float_.isMutable()) {
          mapInt32Float_ = mapInt32Float_.copy();
        }
        bitField2_ |= 0x00004000;
        onChanged();
        return mapInt32Float_;
      }

      public int getMapInt32FloatCount() {
        return internalGetMapInt32Float().getMap().size();
      }

      /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
      @java.lang.Override
      public boolean containsMapInt32Float(int key) {

        return internalGetMapInt32Float().getMap().containsKey(key);
      }

      /** Use {@link #getMapInt32FloatMap()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Float> getMapInt32Float() {
        return getMapInt32FloatMap();
      }

      /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.Integer, java.lang.Float> getMapInt32FloatMap() {
        return internalGetMapInt32Float().getMap();
      }

      /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
      @java.lang.Override
      public float getMapInt32FloatOrDefault(int key, float defaultValue) {

        java.util.Map<java.lang.Integer, java.lang.Float> map = internalGetMapInt32Float().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
      @java.lang.Override
      public float getMapInt32FloatOrThrow(int key) {

        java.util.Map<java.lang.Integer, java.lang.Float> map = internalGetMapInt32Float().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapInt32Float() {
        bitField2_ = (bitField2_ & ~0x00004000);
        internalGetMutableMapInt32Float().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
      public Builder removeMapInt32Float(int key) {

        internalGetMutableMapInt32Float().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Float> getMutableMapInt32Float() {
        bitField2_ |= 0x00004000;
        return internalGetMutableMapInt32Float().getMutableMap();
      }

      /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
      public Builder putMapInt32Float(int key, float value) {

        internalGetMutableMapInt32Float().getMutableMap().put(key, value);
        bitField2_ |= 0x00004000;
        return this;
      }

      /** <code>map&lt;int32, float&gt; map_int32_float = 66;</code> */
      public Builder putAllMapInt32Float(java.util.Map<java.lang.Integer, java.lang.Float> values) {
        internalGetMutableMapInt32Float().getMutableMap().putAll(values);
        bitField2_ |= 0x00004000;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Double> mapInt32Double_;

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Double>
          internalGetMapInt32Double() {
        if (mapInt32Double_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapInt32DoubleDefaultEntryHolder.defaultEntry);
        }
        return mapInt32Double_;
      }

      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Double>
          internalGetMutableMapInt32Double() {
        if (mapInt32Double_ == null) {
          mapInt32Double_ =
              com.google.protobuf.MapField.newMapField(
                  MapInt32DoubleDefaultEntryHolder.defaultEntry);
        }
        if (!mapInt32Double_.isMutable()) {
          mapInt32Double_ = mapInt32Double_.copy();
        }
        bitField2_ |= 0x00008000;
        onChanged();
        return mapInt32Double_;
      }

      public int getMapInt32DoubleCount() {
        return internalGetMapInt32Double().getMap().size();
      }

      /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
      @java.lang.Override
      public boolean containsMapInt32Double(int key) {

        return internalGetMapInt32Double().getMap().containsKey(key);
      }

      /** Use {@link #getMapInt32DoubleMap()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Double> getMapInt32Double() {
        return getMapInt32DoubleMap();
      }

      /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.Integer, java.lang.Double> getMapInt32DoubleMap() {
        return internalGetMapInt32Double().getMap();
      }

      /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
      @java.lang.Override
      public double getMapInt32DoubleOrDefault(int key, double defaultValue) {

        java.util.Map<java.lang.Integer, java.lang.Double> map =
            internalGetMapInt32Double().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
      @java.lang.Override
      public double getMapInt32DoubleOrThrow(int key) {

        java.util.Map<java.lang.Integer, java.lang.Double> map =
            internalGetMapInt32Double().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapInt32Double() {
        bitField2_ = (bitField2_ & ~0x00008000);
        internalGetMutableMapInt32Double().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
      public Builder removeMapInt32Double(int key) {

        internalGetMutableMapInt32Double().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Double> getMutableMapInt32Double() {
        bitField2_ |= 0x00008000;
        return internalGetMutableMapInt32Double().getMutableMap();
      }

      /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
      public Builder putMapInt32Double(int key, double value) {

        internalGetMutableMapInt32Double().getMutableMap().put(key, value);
        bitField2_ |= 0x00008000;
        return this;
      }

      /** <code>map&lt;int32, double&gt; map_int32_double = 67;</code> */
      public Builder putAllMapInt32Double(
          java.util.Map<java.lang.Integer, java.lang.Double> values) {
        internalGetMutableMapInt32Double().getMutableMap().putAll(values);
        bitField2_ |= 0x00008000;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.Boolean, java.lang.Boolean> mapBoolBool_;

      private com.google.protobuf.MapField<java.lang.Boolean, java.lang.Boolean>
          internalGetMapBoolBool() {
        if (mapBoolBool_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapBoolBoolDefaultEntryHolder.defaultEntry);
        }
        return mapBoolBool_;
      }

      private com.google.protobuf.MapField<java.lang.Boolean, java.lang.Boolean>
          internalGetMutableMapBoolBool() {
        if (mapBoolBool_ == null) {
          mapBoolBool_ =
              com.google.protobuf.MapField.newMapField(MapBoolBoolDefaultEntryHolder.defaultEntry);
        }
        if (!mapBoolBool_.isMutable()) {
          mapBoolBool_ = mapBoolBool_.copy();
        }
        bitField2_ |= 0x00010000;
        onChanged();
        return mapBoolBool_;
      }

      public int getMapBoolBoolCount() {
        return internalGetMapBoolBool().getMap().size();
      }

      /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
      @java.lang.Override
      public boolean containsMapBoolBool(boolean key) {

        return internalGetMapBoolBool().getMap().containsKey(key);
      }

      /** Use {@link #getMapBoolBoolMap()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Boolean, java.lang.Boolean> getMapBoolBool() {
        return getMapBoolBoolMap();
      }

      /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.Boolean, java.lang.Boolean> getMapBoolBoolMap() {
        return internalGetMapBoolBool().getMap();
      }

      /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
      @java.lang.Override
      public boolean getMapBoolBoolOrDefault(boolean key, boolean defaultValue) {

        java.util.Map<java.lang.Boolean, java.lang.Boolean> map = internalGetMapBoolBool().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
      @java.lang.Override
      public boolean getMapBoolBoolOrThrow(boolean key) {

        java.util.Map<java.lang.Boolean, java.lang.Boolean> map = internalGetMapBoolBool().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapBoolBool() {
        bitField2_ = (bitField2_ & ~0x00010000);
        internalGetMutableMapBoolBool().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
      public Builder removeMapBoolBool(boolean key) {

        internalGetMutableMapBoolBool().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Boolean, java.lang.Boolean> getMutableMapBoolBool() {
        bitField2_ |= 0x00010000;
        return internalGetMutableMapBoolBool().getMutableMap();
      }

      /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
      public Builder putMapBoolBool(boolean key, boolean value) {

        internalGetMutableMapBoolBool().getMutableMap().put(key, value);
        bitField2_ |= 0x00010000;
        return this;
      }

      /** <code>map&lt;bool, bool&gt; map_bool_bool = 68;</code> */
      public Builder putAllMapBoolBool(java.util.Map<java.lang.Boolean, java.lang.Boolean> values) {
        internalGetMutableMapBoolBool().getMutableMap().putAll(values);
        bitField2_ |= 0x00010000;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.String, java.lang.String> mapStringString_;

      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMapStringString() {
        if (mapStringString_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapStringStringDefaultEntryHolder.defaultEntry);
        }
        return mapStringString_;
      }

      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableMapStringString() {
        if (mapStringString_ == null) {
          mapStringString_ =
              com.google.protobuf.MapField.newMapField(
                  MapStringStringDefaultEntryHolder.defaultEntry);
        }
        if (!mapStringString_.isMutable()) {
          mapStringString_ = mapStringString_.copy();
        }
        bitField2_ |= 0x00020000;
        onChanged();
        return mapStringString_;
      }

      public int getMapStringStringCount() {
        return internalGetMapStringString().getMap().size();
      }

      /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
      @java.lang.Override
      public boolean containsMapStringString(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        return internalGetMapStringString().getMap().containsKey(key);
      }

      /** Use {@link #getMapStringStringMap()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getMapStringString() {
        return getMapStringStringMap();
      }

      /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getMapStringStringMap() {
        return internalGetMapStringString().getMap();
      }

      /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
      @java.lang.Override
      public /* nullable */ java.lang.String getMapStringStringOrDefault(
          java.lang.String key,
          /* nullable */
          java.lang.String defaultValue) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetMapStringString().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
      @java.lang.Override
      public java.lang.String getMapStringStringOrThrow(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetMapStringString().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapStringString() {
        bitField2_ = (bitField2_ & ~0x00020000);
        internalGetMutableMapStringString().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
      public Builder removeMapStringString(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        internalGetMutableMapStringString().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getMutableMapStringString() {
        bitField2_ |= 0x00020000;
        return internalGetMutableMapStringString().getMutableMap();
      }

      /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
      public Builder putMapStringString(java.lang.String key, java.lang.String value) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        if (value == null) {
          throw new NullPointerException("map value");
        }
        internalGetMutableMapStringString().getMutableMap().put(key, value);
        bitField2_ |= 0x00020000;
        return this;
      }

      /** <code>map&lt;string, string&gt; map_string_string = 69;</code> */
      public Builder putAllMapStringString(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableMapStringString().getMutableMap().putAll(values);
        bitField2_ |= 0x00020000;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
          mapStringBytes_;

      private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
          internalGetMapStringBytes() {
        if (mapStringBytes_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapStringBytesDefaultEntryHolder.defaultEntry);
        }
        return mapStringBytes_;
      }

      private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
          internalGetMutableMapStringBytes() {
        if (mapStringBytes_ == null) {
          mapStringBytes_ =
              com.google.protobuf.MapField.newMapField(
                  MapStringBytesDefaultEntryHolder.defaultEntry);
        }
        if (!mapStringBytes_.isMutable()) {
          mapStringBytes_ = mapStringBytes_.copy();
        }
        bitField2_ |= 0x00040000;
        onChanged();
        return mapStringBytes_;
      }

      public int getMapStringBytesCount() {
        return internalGetMapStringBytes().getMap().size();
      }

      /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
      @java.lang.Override
      public boolean containsMapStringBytes(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        return internalGetMapStringBytes().getMap().containsKey(key);
      }

      /** Use {@link #getMapStringBytesMap()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getMapStringBytes() {
        return getMapStringBytesMap();
      }

      /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
      @java.lang.Override
      public java.util.Map<java.lang.String, com.google.protobuf.ByteString>
          getMapStringBytesMap() {
        return internalGetMapStringBytes().getMap();
      }

      /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
      @java.lang.Override
      public /* nullable */ com.google.protobuf.ByteString getMapStringBytesOrDefault(
          java.lang.String key,
          /* nullable */
          com.google.protobuf.ByteString defaultValue) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
            internalGetMapStringBytes().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
      @java.lang.Override
      public com.google.protobuf.ByteString getMapStringBytesOrThrow(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
            internalGetMapStringBytes().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapStringBytes() {
        bitField2_ = (bitField2_ & ~0x00040000);
        internalGetMutableMapStringBytes().getMutableMap().clear();
        return this;
      }

      /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
      public Builder removeMapStringBytes(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        internalGetMutableMapStringBytes().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.google.protobuf.ByteString>
          getMutableMapStringBytes() {
        bitField2_ |= 0x00040000;
        return internalGetMutableMapStringBytes().getMutableMap();
      }

      /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
      public Builder putMapStringBytes(java.lang.String key, com.google.protobuf.ByteString value) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        if (value == null) {
          throw new NullPointerException("map value");
        }
        internalGetMutableMapStringBytes().getMutableMap().put(key, value);
        bitField2_ |= 0x00040000;
        return this;
      }

      /** <code>map&lt;string, bytes&gt; map_string_bytes = 70;</code> */
      public Builder putAllMapStringBytes(
          java.util.Map<java.lang.String, com.google.protobuf.ByteString> values) {
        internalGetMutableMapStringBytes().getMutableMap().putAll(values);
        bitField2_ |= 0x00040000;
        return this;
      }

      private com.google.protobuf.MapField<
              java.lang.String,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
          mapStringNestedMessage_;

      private com.google.protobuf.MapField<
              java.lang.String,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
          internalGetMapStringNestedMessage() {
        if (mapStringNestedMessage_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapStringNestedMessageDefaultEntryHolder.defaultEntry);
        }
        return mapStringNestedMessage_;
      }

      private com.google.protobuf.MapField<
              java.lang.String,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
          internalGetMutableMapStringNestedMessage() {
        if (mapStringNestedMessage_ == null) {
          mapStringNestedMessage_ =
              com.google.protobuf.MapField.newMapField(
                  MapStringNestedMessageDefaultEntryHolder.defaultEntry);
        }
        if (!mapStringNestedMessage_.isMutable()) {
          mapStringNestedMessage_ = mapStringNestedMessage_.copy();
        }
        bitField2_ |= 0x00080000;
        onChanged();
        return mapStringNestedMessage_;
      }

      public int getMapStringNestedMessageCount() {
        return internalGetMapStringNestedMessage().getMap().size();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
       * </code>
       */
      @java.lang.Override
      public boolean containsMapStringNestedMessage(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        return internalGetMapStringNestedMessage().getMap().containsKey(key);
      }

      /** Use {@link #getMapStringNestedMessageMap()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<
              java.lang.String,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
          getMapStringNestedMessage() {
        return getMapStringNestedMessageMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
       * </code>
       */
      @java.lang.Override
      public java.util.Map<
              java.lang.String,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
          getMapStringNestedMessageMap() {
        return internalGetMapStringNestedMessage().getMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
       * </code>
       */
      @java.lang.Override
      public /* nullable */ legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessage
          getMapStringNestedMessageOrDefault(
              java.lang.String key,
              /* nullable */
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  defaultValue) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<
                java.lang.String,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
            map = internalGetMapStringNestedMessage().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
       * </code>
       */
      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
          getMapStringNestedMessageOrThrow(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<
                java.lang.String,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
            map = internalGetMapStringNestedMessage().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapStringNestedMessage() {
        bitField2_ = (bitField2_ & ~0x00080000);
        internalGetMutableMapStringNestedMessage().getMutableMap().clear();
        return this;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
       * </code>
       */
      public Builder removeMapStringNestedMessage(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        internalGetMutableMapStringNestedMessage().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<
              java.lang.String,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage>
          getMutableMapStringNestedMessage() {
        bitField2_ |= 0x00080000;
        return internalGetMutableMapStringNestedMessage().getMutableMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
       * </code>
       */
      public Builder putMapStringNestedMessage(
          java.lang.String key,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              value) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        if (value == null) {
          throw new NullPointerException("map value");
        }
        internalGetMutableMapStringNestedMessage().getMutableMap().put(key, value);
        bitField2_ |= 0x00080000;
        return this;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage&gt; map_string_nested_message = 71;
       * </code>
       */
      public Builder putAllMapStringNestedMessage(
          java.util.Map<
                  java.lang.String,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessage>
              values) {
        internalGetMutableMapStringNestedMessage().getMutableMap().putAll(values);
        bitField2_ |= 0x00080000;
        return this;
      }

      private com.google.protobuf.MapField<
              java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
          mapStringForeignMessage_;

      private com.google.protobuf.MapField<
              java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
          internalGetMapStringForeignMessage() {
        if (mapStringForeignMessage_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapStringForeignMessageDefaultEntryHolder.defaultEntry);
        }
        return mapStringForeignMessage_;
      }

      private com.google.protobuf.MapField<
              java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
          internalGetMutableMapStringForeignMessage() {
        if (mapStringForeignMessage_ == null) {
          mapStringForeignMessage_ =
              com.google.protobuf.MapField.newMapField(
                  MapStringForeignMessageDefaultEntryHolder.defaultEntry);
        }
        if (!mapStringForeignMessage_.isMutable()) {
          mapStringForeignMessage_ = mapStringForeignMessage_.copy();
        }
        bitField2_ |= 0x00100000;
        onChanged();
        return mapStringForeignMessage_;
      }

      public int getMapStringForeignMessageCount() {
        return internalGetMapStringForeignMessage().getMap().size();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
       * </code>
       */
      @java.lang.Override
      public boolean containsMapStringForeignMessage(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        return internalGetMapStringForeignMessage().getMap().containsKey(key);
      }

      /** Use {@link #getMapStringForeignMessageMap()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<
              java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
          getMapStringForeignMessage() {
        return getMapStringForeignMessageMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
       * </code>
       */
      @java.lang.Override
      public java.util.Map<
              java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
          getMapStringForeignMessageMap() {
        return internalGetMapStringForeignMessage().getMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
       * </code>
       */
      @java.lang.Override
      public /* nullable */ legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
          getMapStringForeignMessageOrDefault(
              java.lang.String key,
              /* nullable */
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage defaultValue) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<
                java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
            map = internalGetMapStringForeignMessage().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
       * </code>
       */
      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
          getMapStringForeignMessageOrThrow(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<
                java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
            map = internalGetMapStringForeignMessage().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapStringForeignMessage() {
        bitField2_ = (bitField2_ & ~0x00100000);
        internalGetMutableMapStringForeignMessage().getMutableMap().clear();
        return this;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
       * </code>
       */
      public Builder removeMapStringForeignMessage(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        internalGetMutableMapStringForeignMessage().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<
              java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
          getMutableMapStringForeignMessage() {
        bitField2_ |= 0x00100000;
        return internalGetMutableMapStringForeignMessage().getMutableMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
       * </code>
       */
      public Builder putMapStringForeignMessage(
          java.lang.String key,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage value) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        if (value == null) {
          throw new NullPointerException("map value");
        }
        internalGetMutableMapStringForeignMessage().getMutableMap().put(key, value);
        bitField2_ |= 0x00100000;
        return this;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignMessage&gt; map_string_foreign_message = 72;
       * </code>
       */
      public Builder putAllMapStringForeignMessage(
          java.util.Map<
                  java.lang.String,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage>
              values) {
        internalGetMutableMapStringForeignMessage().getMutableMap().putAll(values);
        bitField2_ |= 0x00100000;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.String, java.lang.Integer>
          mapStringNestedEnum_;

      private com.google.protobuf.MapField<java.lang.String, java.lang.Integer>
          internalGetMapStringNestedEnum() {
        if (mapStringNestedEnum_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapStringNestedEnumDefaultEntryHolder.defaultEntry);
        }
        return mapStringNestedEnum_;
      }

      private com.google.protobuf.MapField<java.lang.String, java.lang.Integer>
          internalGetMutableMapStringNestedEnum() {
        if (mapStringNestedEnum_ == null) {
          mapStringNestedEnum_ =
              com.google.protobuf.MapField.newMapField(
                  MapStringNestedEnumDefaultEntryHolder.defaultEntry);
        }
        if (!mapStringNestedEnum_.isMutable()) {
          mapStringNestedEnum_ = mapStringNestedEnum_.copy();
        }
        bitField2_ |= 0x00200000;
        onChanged();
        return mapStringNestedEnum_;
      }

      public int getMapStringNestedEnumCount() {
        return internalGetMapStringNestedEnum().getMap().size();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
       * </code>
       */
      @java.lang.Override
      public boolean containsMapStringNestedEnum(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        return internalGetMapStringNestedEnum().getMap().containsKey(key);
      }

      /** Use {@link #getMapStringNestedEnumMap()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<
              java.lang.String,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
          getMapStringNestedEnum() {
        return getMapStringNestedEnumMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
       * </code>
       */
      @java.lang.Override
      public java.util.Map<
              java.lang.String,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
          getMapStringNestedEnumMap() {
        return internalGetAdaptedMapStringNestedEnumMap(internalGetMapStringNestedEnum().getMap());
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
       * </code>
       */
      @java.lang.Override
      public /* nullable */ legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedEnum
          getMapStringNestedEnumOrDefault(
              java.lang.String key,
              /* nullable */
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                  defaultValue) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, java.lang.Integer> map =
            internalGetMapStringNestedEnum().getMap();
        return map.containsKey(key)
            ? mapStringNestedEnumValueConverter.doForward(map.get(key))
            : defaultValue;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
       * </code>
       */
      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
          getMapStringNestedEnumOrThrow(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, java.lang.Integer> map =
            internalGetMapStringNestedEnum().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return mapStringNestedEnumValueConverter.doForward(map.get(key));
      }

      /** Use {@link #getMapStringNestedEnumValueMap()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.Integer> getMapStringNestedEnumValue() {
        return getMapStringNestedEnumValueMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
       * </code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.Integer> getMapStringNestedEnumValueMap() {
        return internalGetMapStringNestedEnum().getMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
       * </code>
       */
      @java.lang.Override
      public int getMapStringNestedEnumValueOrDefault(java.lang.String key, int defaultValue) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, java.lang.Integer> map =
            internalGetMapStringNestedEnum().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
       * </code>
       */
      @java.lang.Override
      public int getMapStringNestedEnumValueOrThrow(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, java.lang.Integer> map =
            internalGetMapStringNestedEnum().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapStringNestedEnum() {
        bitField2_ = (bitField2_ & ~0x00200000);
        internalGetMutableMapStringNestedEnum().getMutableMap().clear();
        return this;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
       * </code>
       */
      public Builder removeMapStringNestedEnum(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        internalGetMutableMapStringNestedEnum().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<
              java.lang.String,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
          getMutableMapStringNestedEnum() {
        bitField2_ |= 0x00200000;
        return internalGetAdaptedMapStringNestedEnumMap(
            internalGetMutableMapStringNestedEnum().getMutableMap());
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
       * </code>
       */
      public Builder putMapStringNestedEnum(
          java.lang.String key,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum value) {
        if (key == null) {
          throw new NullPointerException("map key");
        }

        internalGetMutableMapStringNestedEnum()
            .getMutableMap()
            .put(key, mapStringNestedEnumValueConverter.doBackward(value));
        bitField2_ |= 0x00200000;
        return this;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
       * </code>
       */
      public Builder putAllMapStringNestedEnum(
          java.util.Map<
                  java.lang.String,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum>
              values) {
        internalGetAdaptedMapStringNestedEnumMap(
                internalGetMutableMapStringNestedEnum().getMutableMap())
            .putAll(values);
        bitField2_ |= 0x00200000;
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.Integer>
          getMutableMapStringNestedEnumValue() {
        bitField2_ |= 0x00200000;
        return internalGetMutableMapStringNestedEnum().getMutableMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
       * </code>
       */
      public Builder putMapStringNestedEnumValue(java.lang.String key, int value) {
        if (key == null) {
          throw new NullPointerException("map key");
        }

        internalGetMutableMapStringNestedEnum().getMutableMap().put(key, value);
        bitField2_ |= 0x00200000;
        return this;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum&gt; map_string_nested_enum = 73;
       * </code>
       */
      public Builder putAllMapStringNestedEnumValue(
          java.util.Map<java.lang.String, java.lang.Integer> values) {
        internalGetMutableMapStringNestedEnum().getMutableMap().putAll(values);
        bitField2_ |= 0x00200000;
        return this;
      }

      private com.google.protobuf.MapField<java.lang.String, java.lang.Integer>
          mapStringForeignEnum_;

      private com.google.protobuf.MapField<java.lang.String, java.lang.Integer>
          internalGetMapStringForeignEnum() {
        if (mapStringForeignEnum_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapStringForeignEnumDefaultEntryHolder.defaultEntry);
        }
        return mapStringForeignEnum_;
      }

      private com.google.protobuf.MapField<java.lang.String, java.lang.Integer>
          internalGetMutableMapStringForeignEnum() {
        if (mapStringForeignEnum_ == null) {
          mapStringForeignEnum_ =
              com.google.protobuf.MapField.newMapField(
                  MapStringForeignEnumDefaultEntryHolder.defaultEntry);
        }
        if (!mapStringForeignEnum_.isMutable()) {
          mapStringForeignEnum_ = mapStringForeignEnum_.copy();
        }
        bitField2_ |= 0x00400000;
        onChanged();
        return mapStringForeignEnum_;
      }

      public int getMapStringForeignEnumCount() {
        return internalGetMapStringForeignEnum().getMap().size();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
       * </code>
       */
      @java.lang.Override
      public boolean containsMapStringForeignEnum(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        return internalGetMapStringForeignEnum().getMap().containsKey(key);
      }

      /** Use {@link #getMapStringForeignEnumMap()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<
              java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
          getMapStringForeignEnum() {
        return getMapStringForeignEnumMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
       * </code>
       */
      @java.lang.Override
      public java.util.Map<
              java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
          getMapStringForeignEnumMap() {
        return internalGetAdaptedMapStringForeignEnumMap(
            internalGetMapStringForeignEnum().getMap());
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
       * </code>
       */
      @java.lang.Override
      public /* nullable */ legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum
          getMapStringForeignEnumOrDefault(
              java.lang.String key,
              /* nullable */
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum defaultValue) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, java.lang.Integer> map =
            internalGetMapStringForeignEnum().getMap();
        return map.containsKey(key)
            ? mapStringForeignEnumValueConverter.doForward(map.get(key))
            : defaultValue;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
       * </code>
       */
      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum
          getMapStringForeignEnumOrThrow(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, java.lang.Integer> map =
            internalGetMapStringForeignEnum().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return mapStringForeignEnumValueConverter.doForward(map.get(key));
      }

      /** Use {@link #getMapStringForeignEnumValueMap()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.Integer> getMapStringForeignEnumValue() {
        return getMapStringForeignEnumValueMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
       * </code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.Integer> getMapStringForeignEnumValueMap() {
        return internalGetMapStringForeignEnum().getMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
       * </code>
       */
      @java.lang.Override
      public int getMapStringForeignEnumValueOrDefault(java.lang.String key, int defaultValue) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, java.lang.Integer> map =
            internalGetMapStringForeignEnum().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
       * </code>
       */
      @java.lang.Override
      public int getMapStringForeignEnumValueOrThrow(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, java.lang.Integer> map =
            internalGetMapStringForeignEnum().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapStringForeignEnum() {
        bitField2_ = (bitField2_ & ~0x00400000);
        internalGetMutableMapStringForeignEnum().getMutableMap().clear();
        return this;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
       * </code>
       */
      public Builder removeMapStringForeignEnum(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        internalGetMutableMapStringForeignEnum().getMutableMap().remove(key);
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<
              java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
          getMutableMapStringForeignEnum() {
        bitField2_ |= 0x00400000;
        return internalGetAdaptedMapStringForeignEnumMap(
            internalGetMutableMapStringForeignEnum().getMutableMap());
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
       * </code>
       */
      public Builder putMapStringForeignEnum(
          java.lang.String key,
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum value) {
        if (key == null) {
          throw new NullPointerException("map key");
        }

        internalGetMutableMapStringForeignEnum()
            .getMutableMap()
            .put(key, mapStringForeignEnumValueConverter.doBackward(value));
        bitField2_ |= 0x00400000;
        return this;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
       * </code>
       */
      public Builder putAllMapStringForeignEnum(
          java.util.Map<
                  java.lang.String, legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignEnum>
              values) {
        internalGetAdaptedMapStringForeignEnumMap(
                internalGetMutableMapStringForeignEnum().getMutableMap())
            .putAll(values);
        bitField2_ |= 0x00400000;
        return this;
      }

      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.Integer>
          getMutableMapStringForeignEnumValue() {
        bitField2_ |= 0x00400000;
        return internalGetMutableMapStringForeignEnum().getMutableMap();
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
       * </code>
       */
      public Builder putMapStringForeignEnumValue(java.lang.String key, int value) {
        if (key == null) {
          throw new NullPointerException("map key");
        }

        internalGetMutableMapStringForeignEnum().getMutableMap().put(key, value);
        bitField2_ |= 0x00400000;
        return this;
      }

      /**
       * <code>
       * map&lt;string, .legacy_gencode_test.proto3.ForeignEnum&gt; map_string_foreign_enum = 74;
       * </code>
       */
      public Builder putAllMapStringForeignEnumValue(
          java.util.Map<java.lang.String, java.lang.Integer> values) {
        internalGetMutableMapStringForeignEnum().getMutableMap().putAll(values);
        bitField2_ |= 0x00400000;
        return this;
      }

      /**
       * <code>uint32 oneof_uint32 = 111;</code>
       *
       * @return Whether the oneofUint32 field is set.
       */
      public boolean hasOneofUint32() {
        return oneofFieldCase_ == 111;
      }

      /**
       * <code>uint32 oneof_uint32 = 111;</code>
       *
       * @return The oneofUint32.
       */
      public int getOneofUint32() {
        if (oneofFieldCase_ == 111) {
          return (java.lang.Integer) oneofField_;
        }
        return 0;
      }

      /**
       * <code>uint32 oneof_uint32 = 111;</code>
       *
       * @param value The oneofUint32 to set.
       * @return This builder for chaining.
       */
      public Builder setOneofUint32(int value) {

        oneofFieldCase_ = 111;
        oneofField_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>uint32 oneof_uint32 = 111;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOneofUint32() {
        if (oneofFieldCase_ == 111) {
          oneofFieldCase_ = 0;
          oneofField_ = null;
          onChanged();
        }
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                  .NestedMessageOrBuilder>
          oneofNestedMessageBuilder_;

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
       * </code>
       *
       * @return Whether the oneofNestedMessage field is set.
       */
      @java.lang.Override
      public boolean hasOneofNestedMessage() {
        return oneofFieldCase_ == 112;
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
       * </code>
       *
       * @return The oneofNestedMessage.
       */
      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
          getOneofNestedMessage() {
        if (oneofNestedMessageBuilder_ == null) {
          if (oneofFieldCase_ == 112) {
            return (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                    .NestedMessage)
                oneofField_;
          }
          return legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              .getDefaultInstance();
        } else {
          if (oneofFieldCase_ == 112) {
            return oneofNestedMessageBuilder_.getMessage();
          }
          return legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              .getDefaultInstance();
        }
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
       * </code>
       */
      public Builder setOneofNestedMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              value) {
        if (oneofNestedMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          oneofField_ = value;
          onChanged();
        } else {
          oneofNestedMessageBuilder_.setMessage(value);
        }
        oneofFieldCase_ = 112;
        return this;
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
       * </code>
       */
      public Builder setOneofNestedMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .Builder
              builderForValue) {
        if (oneofNestedMessageBuilder_ == null) {
          oneofField_ = builderForValue.build();
          onChanged();
        } else {
          oneofNestedMessageBuilder_.setMessage(builderForValue.build());
        }
        oneofFieldCase_ = 112;
        return this;
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
       * </code>
       */
      public Builder mergeOneofNestedMessage(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              value) {
        if (oneofNestedMessageBuilder_ == null) {
          if (oneofFieldCase_ == 112
              && oneofField_
                  != legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessage.getDefaultInstance()) {
            oneofField_ =
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                    .newBuilder(
                        (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                                .NestedMessage)
                            oneofField_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            oneofField_ = value;
          }
          onChanged();
        } else {
          if (oneofFieldCase_ == 112) {
            oneofNestedMessageBuilder_.mergeFrom(value);
          } else {
            oneofNestedMessageBuilder_.setMessage(value);
          }
        }
        oneofFieldCase_ = 112;
        return this;
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
       * </code>
       */
      public Builder clearOneofNestedMessage() {
        if (oneofNestedMessageBuilder_ == null) {
          if (oneofFieldCase_ == 112) {
            oneofFieldCase_ = 0;
            oneofField_ = null;
            onChanged();
          }
        } else {
          if (oneofFieldCase_ == 112) {
            oneofFieldCase_ = 0;
            oneofField_ = null;
          }
          oneofNestedMessageBuilder_.clear();
        }
        return this;
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
       * </code>
       */
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              .Builder
          getOneofNestedMessageBuilder() {
        return getOneofNestedMessageFieldBuilder().getBuilder();
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
       * </code>
       */
      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
              .NestedMessageOrBuilder
          getOneofNestedMessageOrBuilder() {
        if ((oneofFieldCase_ == 112) && (oneofNestedMessageBuilder_ != null)) {
          return oneofNestedMessageBuilder_.getMessageOrBuilder();
        } else {
          if (oneofFieldCase_ == 112) {
            return (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                    .NestedMessage)
                oneofField_;
          }
          return legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
              .getDefaultInstance();
        }
      }

      /**
       * <code>
       * .legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage oneof_nested_message = 112;
       * </code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                  .Builder,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                  .NestedMessageOrBuilder>
          getOneofNestedMessageFieldBuilder() {
        if (oneofNestedMessageBuilder_ == null) {
          if (!(oneofFieldCase_ == 112)) {
            oneofField_ =
                legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedMessage
                    .getDefaultInstance();
          }
          oneofNestedMessageBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessage,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessage.Builder,
                  legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                      .NestedMessageOrBuilder>(
                  (legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
                          .NestedMessage)
                      oneofField_,
                  getParentForChildren(),
                  isClean());
          oneofField_ = null;
        }
        oneofFieldCase_ = 112;
        onChanged();
        return oneofNestedMessageBuilder_;
      }

      /**
       * <code>string oneof_string = 113;</code>
       *
       * @return Whether the oneofString field is set.
       */
      @java.lang.Override
      public boolean hasOneofString() {
        return oneofFieldCase_ == 113;
      }

      /**
       * <code>string oneof_string = 113;</code>
       *
       * @return The oneofString.
       */
      @java.lang.Override
      public java.lang.String getOneofString() {
        java.lang.Object ref = "";
        if (oneofFieldCase_ == 113) {
          ref = oneofField_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (oneofFieldCase_ == 113) {
            oneofField_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }

      /**
       * <code>string oneof_string = 113;</code>
       *
       * @return The bytes for oneofString.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getOneofStringBytes() {
        java.lang.Object ref = "";
        if (oneofFieldCase_ == 113) {
          ref = oneofField_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          if (oneofFieldCase_ == 113) {
            oneofField_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      /**
       * <code>string oneof_string = 113;</code>
       *
       * @param value The oneofString to set.
       * @return This builder for chaining.
       */
      public Builder setOneofString(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        oneofFieldCase_ = 113;
        oneofField_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>string oneof_string = 113;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOneofString() {
        if (oneofFieldCase_ == 113) {
          oneofFieldCase_ = 0;
          oneofField_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>string oneof_string = 113;</code>
       *
       * @param value The bytes for oneofString to set.
       * @return This builder for chaining.
       */
      public Builder setOneofStringBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        oneofFieldCase_ = 113;
        oneofField_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>bytes oneof_bytes = 114;</code>
       *
       * @return Whether the oneofBytes field is set.
       */
      public boolean hasOneofBytes() {
        return oneofFieldCase_ == 114;
      }

      /**
       * <code>bytes oneof_bytes = 114;</code>
       *
       * @return The oneofBytes.
       */
      public com.google.protobuf.ByteString getOneofBytes() {
        if (oneofFieldCase_ == 114) {
          return (com.google.protobuf.ByteString) oneofField_;
        }
        return com.google.protobuf.ByteString.EMPTY;
      }

      /**
       * <code>bytes oneof_bytes = 114;</code>
       *
       * @param value The oneofBytes to set.
       * @return This builder for chaining.
       */
      public Builder setOneofBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        oneofFieldCase_ = 114;
        oneofField_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>bytes oneof_bytes = 114;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOneofBytes() {
        if (oneofFieldCase_ == 114) {
          oneofFieldCase_ = 0;
          oneofField_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>bool oneof_bool = 115;</code>
       *
       * @return Whether the oneofBool field is set.
       */
      public boolean hasOneofBool() {
        return oneofFieldCase_ == 115;
      }

      /**
       * <code>bool oneof_bool = 115;</code>
       *
       * @return The oneofBool.
       */
      public boolean getOneofBool() {
        if (oneofFieldCase_ == 115) {
          return (java.lang.Boolean) oneofField_;
        }
        return false;
      }

      /**
       * <code>bool oneof_bool = 115;</code>
       *
       * @param value The oneofBool to set.
       * @return This builder for chaining.
       */
      public Builder setOneofBool(boolean value) {

        oneofFieldCase_ = 115;
        oneofField_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>bool oneof_bool = 115;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOneofBool() {
        if (oneofFieldCase_ == 115) {
          oneofFieldCase_ = 0;
          oneofField_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>uint64 oneof_uint64 = 116;</code>
       *
       * @return Whether the oneofUint64 field is set.
       */
      public boolean hasOneofUint64() {
        return oneofFieldCase_ == 116;
      }

      /**
       * <code>uint64 oneof_uint64 = 116;</code>
       *
       * @return The oneofUint64.
       */
      public long getOneofUint64() {
        if (oneofFieldCase_ == 116) {
          return (java.lang.Long) oneofField_;
        }
        return 0L;
      }

      /**
       * <code>uint64 oneof_uint64 = 116;</code>
       *
       * @param value The oneofUint64 to set.
       * @return This builder for chaining.
       */
      public Builder setOneofUint64(long value) {

        oneofFieldCase_ = 116;
        oneofField_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>uint64 oneof_uint64 = 116;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOneofUint64() {
        if (oneofFieldCase_ == 116) {
          oneofFieldCase_ = 0;
          oneofField_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>float oneof_float = 117;</code>
       *
       * @return Whether the oneofFloat field is set.
       */
      public boolean hasOneofFloat() {
        return oneofFieldCase_ == 117;
      }

      /**
       * <code>float oneof_float = 117;</code>
       *
       * @return The oneofFloat.
       */
      public float getOneofFloat() {
        if (oneofFieldCase_ == 117) {
          return (java.lang.Float) oneofField_;
        }
        return 0F;
      }

      /**
       * <code>float oneof_float = 117;</code>
       *
       * @param value The oneofFloat to set.
       * @return This builder for chaining.
       */
      public Builder setOneofFloat(float value) {

        oneofFieldCase_ = 117;
        oneofField_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>float oneof_float = 117;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOneofFloat() {
        if (oneofFieldCase_ == 117) {
          oneofFieldCase_ = 0;
          oneofField_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>double oneof_double = 118;</code>
       *
       * @return Whether the oneofDouble field is set.
       */
      public boolean hasOneofDouble() {
        return oneofFieldCase_ == 118;
      }

      /**
       * <code>double oneof_double = 118;</code>
       *
       * @return The oneofDouble.
       */
      public double getOneofDouble() {
        if (oneofFieldCase_ == 118) {
          return (java.lang.Double) oneofField_;
        }
        return 0D;
      }

      /**
       * <code>double oneof_double = 118;</code>
       *
       * @param value The oneofDouble to set.
       * @return This builder for chaining.
       */
      public Builder setOneofDouble(double value) {

        oneofFieldCase_ = 118;
        oneofField_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>double oneof_double = 118;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOneofDouble() {
        if (oneofFieldCase_ == 118) {
          oneofFieldCase_ = 0;
          oneofField_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum oneof_enum = 119;</code>
       *
       * @return Whether the oneofEnum field is set.
       */
      @java.lang.Override
      public boolean hasOneofEnum() {
        return oneofFieldCase_ == 119;
      }

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum oneof_enum = 119;</code>
       *
       * @return The enum numeric value on the wire for oneofEnum.
       */
      @java.lang.Override
      public int getOneofEnumValue() {
        if (oneofFieldCase_ == 119) {
          return ((java.lang.Integer) oneofField_).intValue();
        }
        return 0;
      }

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum oneof_enum = 119;</code>
       *
       * @param value The enum numeric value on the wire for oneofEnum to set.
       * @return This builder for chaining.
       */
      public Builder setOneofEnumValue(int value) {
        oneofFieldCase_ = 119;
        oneofField_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum oneof_enum = 119;</code>
       *
       * @return The oneofEnum.
       */
      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
          getOneofEnum() {
        if (oneofFieldCase_ == 119) {
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum result =
              legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                  .forNumber((java.lang.Integer) oneofField_);
          return result == null
              ? legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum
                  .UNRECOGNIZED
              : result;
        }
        return legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum.FOO;
      }

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum oneof_enum = 119;</code>
       *
       * @param value The oneofEnum to set.
       * @return This builder for chaining.
       */
      public Builder setOneofEnum(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3.NestedEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        oneofFieldCase_ = 119;
        oneofField_ = value.getNumber();
        onChanged();
        return this;
      }

      /**
       * <code>.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum oneof_enum = 119;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOneofEnum() {
        if (oneofFieldCase_ == 119) {
          oneofFieldCase_ = 0;
          oneofField_ = null;
          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:legacy_gencode_test.proto3.TestMostTypesProto3)
    }

    // @@protoc_insertion_point(class_scope:legacy_gencode_test.proto3.TestMostTypesProto3)
    private static final legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3();
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.TestMostTypesProto3
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface ForeignMessageOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:legacy_gencode_test.proto3.ForeignMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 c = 1;</code>
     *
     * @return The c.
     */
    int getC();
  }

  /** Protobuf type {@code legacy_gencode_test.proto3.ForeignMessage} */
  public static final class ForeignMessage extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:legacy_gencode_test.proto3.ForeignMessage)
      ForeignMessageOrBuilder {
    private static final long serialVersionUID = 0L;

    // Use ForeignMessage.newBuilder() to construct.
    private ForeignMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private ForeignMessage() {}

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return legacy_gencode_test.proto3.Proto3GencodeTestProto
          .internal_static_legacy_gencode_test_proto3_ForeignMessage_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return legacy_gencode_test.proto3.Proto3GencodeTestProto
          .internal_static_legacy_gencode_test_proto3_ForeignMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.class,
              legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder.class);
    }

    public static final int C_FIELD_NUMBER = 1;
    private int c_ = 0;

    /**
     * <code>int32 c = 1;</code>
     *
     * @return The c.
     */
    @java.lang.Override
    public int getC() {
      return c_;
    }

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

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

      size = 0;
      if (c_ != 0) {
        size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, c_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage)) {
        return super.equals(obj);
      }
      legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage other =
          (legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage) obj;

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

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

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage 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 legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
        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 legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage 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(
        legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage 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 legacy_gencode_test.proto3.ForeignMessage} */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:legacy_gencode_test.proto3.ForeignMessage)
        legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_ForeignMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_ForeignMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.class,
                legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.Builder.class);
      }

      // Construct using
      // legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage.newBuilder()
      private Builder() {}

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto
            .internal_static_legacy_gencode_test_proto3_ForeignMessage_descriptor;
      }

      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
          getDefaultInstanceForType() {
        return legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
            .getDefaultInstance();
      }

      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage build() {
        legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage buildPartial() {
        legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage result =
            new legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.c_ = c_;
        }
      }

      @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 legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage) {
          return mergeFrom(
              (legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage other) {
        if (other
            == legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
                .getDefaultInstance()) return this;
        if (other.getC() != 0) {
          setC(other.getC());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8:
                {
                  c_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private int c_;

      /**
       * <code>int32 c = 1;</code>
       *
       * @return The c.
       */
      @java.lang.Override
      public int getC() {
        return c_;
      }

      /**
       * <code>int32 c = 1;</code>
       *
       * @param value The c to set.
       * @return This builder for chaining.
       */
      public Builder setC(int value) {

        c_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      /**
       * <code>int32 c = 1;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearC() {
        bitField0_ = (bitField0_ & ~0x00000001);
        c_ = 0;
        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:legacy_gencode_test.proto3.ForeignMessage)
    }

    // @@protoc_insertion_point(class_scope:legacy_gencode_test.proto3.ForeignMessage)
    private static final legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage();
    }

    public static legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public legacy_gencode_test.proto3.Proto3GencodeTestProto.ForeignMessage
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMessage_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_NestedTestMessage_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_NestedTestMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_NestedMessage_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_NestedMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32Int32Entry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32Int32Entry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt64Int64Entry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt64Int64Entry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapUint32Uint32Entry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapUint32Uint32Entry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapUint64Uint64Entry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapUint64Uint64Entry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSint32Sint32Entry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSint32Sint32Entry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSint64Sint64Entry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSint64Sint64Entry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapFixed32Fixed32Entry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapFixed32Fixed32Entry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapFixed64Fixed64Entry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapFixed64Fixed64Entry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSfixed32Sfixed32Entry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSfixed32Sfixed32Entry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSfixed64Sfixed64Entry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSfixed64Sfixed64Entry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32FloatEntry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32FloatEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32DoubleEntry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32DoubleEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapBoolBoolEntry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapBoolBoolEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringStringEntry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringStringEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringBytesEntry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringBytesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringNestedMessageEntry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringNestedMessageEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringForeignMessageEntry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringForeignMessageEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringNestedEnumEntry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringNestedEnumEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringForeignEnumEntry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringForeignEnumEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_legacy_gencode_test_proto3_ForeignMessage_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_legacy_gencode_test_proto3_ForeignMessage_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"
          + "\031proto3_gencode_test.proto\022\032legacy_gencode_test.proto3\"R\n"
          + "\013TestMessage\022\t\n"
          + "\001x\030\002 \001(\t\0228\n"
          + "\001y\030\003 \001(\0132-.legacy_gencode_test.proto3.NestedTestMessage\"\036\n"
          + "\021NestedTestMessage\022\t\n"
          + "\001z\030\001 \003(\005\"\2621\n"
          + "\023TestMostTypesProto3\022\026\n"
          + "\016optional_int32\030\001 \001(\005\022\026\n"
          + "\016optional_int64\030\002 \001(\003\022\027\n"
          + "\017optional_uint32\030\003 \001(\r"
          + "\022\027\n"
          + "\017optional_uint64\030\004 \001(\004\022\027\n"
          + "\017optional_sint32\030\005 \001(\021\022\027\n"
          + "\017optional_sint64\030\006 \001(\022\022\030\n"
          + "\020optional_fixed32\030\007 \001(\007\022\030\n"
          + "\020optional_fixed64\030\010 \001(\006\022\031\n"
          + "\021optional_sfixed32\030\t \001(\017\022\031\n"
          + "\021optional_sfixed64\030\n"
          + " \001(\020\022\026\n"
          + "\016optional_float\030\013 \001(\002\022\027\n"
          + "\017optional_double\030\014 \001(\001\022\025\n\r"
          + "optional_bool\030\r"
          + " \001(\010\022\027\n"
          + "\017optional_string\030\016 \001(\t\022\026\n"
          + "\016optional_bytes\030\017 \001(\014\022^\n"
          + "\027optional_nested_message\030\022 "
          + "\001(\0132=.legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage\022L\n"
          + "\030optional_foreign_message\030\023"
          + " \001(\0132*.legacy_gencode_test.proto3.ForeignMessage\022X\n"
          + "\024optional_nested_enum\030\025"
          + " \001(\0162:.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum\022F\n"
          + "\025optional_foreign_enum\030\026"
          + " \001(\0162\'.legacy_gencode_test.proto3.ForeignEnum\022Z\n"
          + "\025optional_aliased_enum\030\027 \001(\0162;.legacy_gencode_test."
          + "proto3.TestMostTypesProto3.AliasedEnum\022J\n"
          + "\021recursive_message\030\033"
          + " \001(\0132/.legacy_gencode_test.proto3.TestMostTypesProto3\022\026\n"
          + "\016repeated_int32\030\037 \003(\005\022\026\n"
          + "\016repeated_int64\030  \003(\003\022\027\n"
          + "\017repeated_uint32\030! \003(\r"
          + "\022\027\n"
          + "\017repeated_uint64\030\" \003(\004\022\027\n"
          + "\017repeated_sint32\030# \003(\021\022\027\n"
          + "\017repeated_sint64\030$ \003(\022\022\030\n"
          + "\020repeated_fixed32\030% \003(\007\022\030\n"
          + "\020repeated_fixed64\030& \003(\006\022\031\n"
          + "\021repeated_sfixed32\030\' \003(\017\022\031\n"
          + "\021repeated_sfixed64\030( \003(\020\022\026\n"
          + "\016repeated_float\030) \003(\002\022\027\n"
          + "\017repeated_double\030* \003(\001\022\025\n\r"
          + "repeated_bool\030+ \003(\010\022\027\n"
          + "\017repeated_string\030, \003(\t\022\026\n"
          + "\016repeated_bytes\030- \003(\014\022^\n"
          + "\027repeated_nested_message\0300 \003"
          + "(\0132=.legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessage\022L\n"
          + "\030repeated_foreign_message\0301"
          + " \003(\0132*.legacy_gencode_test.proto3.ForeignMessage\022X\n"
          + "\024repeated_nested_enum\0303"
          + " \003(\0162:.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum\022F\n"
          + "\025repeated_foreign_enum\0304"
          + " \003(\0162\'.legacy_gencode_test.proto3.ForeignEnum\022\030\n"
          + "\014packed_int32\030K \003(\005B\002\020\001\022\030\n"
          + "\014packed_int64\030L \003(\003B\002\020\001\022\031\n"
          + "\r"
          + "packed_uint32\030M \003(\r"
          + "B\002\020\001\022\031\n\r"
          + "packed_uint64\030N \003(\004B\002\020\001\022\031\n\r"
          + "packed_sint32\030O \003(\021B\002\020\001\022\031\n\r"
          + "packed_sint64\030P \003(\022B\002\020\001\022\032\n"
          + "\016packed_fixed32\030Q \003(\007B\002\020\001\022\032\n"
          + "\016packed_fixed64\030R \003(\006B\002\020\001\022\033\n"
          + "\017packed_sfixed32\030S \003(\017B\002\020\001\022\033\n"
          + "\017packed_sfixed64\030T \003(\020B\002\020\001\022\030\n"
          + "\014packed_float\030U \003(\002B\002\020\001\022\031\n\r"
          + "packed_double\030V \003(\001B\002\020\001\022\027\n"
          + "\013packed_bool\030W \003(\010B\002\020\001\022Z\n"
          + "\022packed_nested_enum\030X"
          + " \003(\0162:.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnumB\002\020\001\022\032\n"
          + "\016unpacked_int32\030Y \003(\005B\002\020\000\022\032\n"
          + "\016unpacked_int64\030Z \003(\003B\002\020\000\022\033\n"
          + "\017unpacked_uint32\030[ \003(\r"
          + "B\002\020\000\022\033\n"
          + "\017unpacked_uint64\030\\ \003(\004B\002\020\000\022\033\n"
          + "\017unpacked_sint32\030] \003(\021B\002\020\000\022\033\n"
          + "\017unpacked_sint64\030^ \003(\022B\002\020\000\022\034\n"
          + "\020unpacked_fixed32\030_ \003(\007B\002\020\000\022\034\n"
          + "\020unpacked_fixed64\030` \003(\006B\002\020\000\022\035\n"
          + "\021unpacked_sfixed32\030a \003(\017B\002\020\000\022\035\n"
          + "\021unpacked_sfixed64\030b \003(\020B\002\020\000\022\032\n"
          + "\016unpacked_float\030c \003(\002B\002\020\000\022\033\n"
          + "\017unpacked_double\030d \003(\001B\002\020\000\022\031\n\r"
          + "unpacked_bool\030e \003(\010B\002\020\000\022\\\n"
          + "\024unpacked_nested_enum\030f \003(\0162:."
          + "legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnumB\002\020\000\022[\n"
          + "\017map_int32_int32\0308"
          + " \003(\0132B.legacy_gencode_test.proto3.TestMostTypesProto3.MapInt32Int32Entry\022[\n"
          + "\017map_int64_int64\0309 \003(\0132B.legacy_gencode_tes"
          + "t.proto3.TestMostTypesProto3.MapInt64Int64Entry\022_\n"
          + "\021map_uint32_uint32\030: \003(\0132D.leg"
          + "acy_gencode_test.proto3.TestMostTypesProto3.MapUint32Uint32Entry\022_\n"
          + "\021map_uint64_uint64\030; \003(\0132D.legacy_gencode_test.proto3"
          + ".TestMostTypesProto3.MapUint64Uint64Entry\022_\n"
          + "\021map_sint32_sint32\030< \003(\0132D.legacy_ge"
          + "ncode_test.proto3.TestMostTypesProto3.MapSint32Sint32Entry\022_\n"
          + "\021map_sint64_sint64\030="
          + " \003(\0132D.legacy_gencode_test.proto3.TestMostTypesProto3.MapSint64Sint64Entry\022c\n"
          + "\023map_fixed32_fixed32\030> \003(\0132F.legacy_gencod"
          + "e_test.proto3.TestMostTypesProto3.MapFixed32Fixed32Entry\022c\n"
          + "\023map_fixed64_fixed64\030?"
          + " \003(\0132F.legacy_gencode_test.proto3.TestMostTypesProto3.MapFixed64Fixed64Entry\022g\n"
          + "\025map_sfixed32_sfixed32\030@ \003(\0132H.legacy_ge"
          + "ncode_test.proto3.TestMostTypesProto3.MapSfixed32Sfixed32Entry\022g\n"
          + "\025map_sfixed64_sfixed64\030A \003(\0132H.legacy_gencode_test.prot"
          + "o3.TestMostTypesProto3.MapSfixed64Sfixed64Entry\022[\n"
          + "\017map_int32_float\030B \003(\0132B.legac"
          + "y_gencode_test.proto3.TestMostTypesProto3.MapInt32FloatEntry\022]\n"
          + "\020map_int32_double\030C"
          + " \003(\0132C.legacy_gencode_test.proto3.TestMostTypesProto3.MapInt32DoubleEntry\022W\n\r"
          + "map_bool_bool\030D \003(\0132@.legacy_gencode_test"
          + ".proto3.TestMostTypesProto3.MapBoolBoolEntry\022_\n"
          + "\021map_string_string\030E \003(\0132D.legacy"
          + "_gencode_test.proto3.TestMostTypesProto3.MapStringStringEntry\022]\n"
          + "\020map_string_bytes\030F"
          + " \003(\0132C.legacy_gencode_test.proto3.TestMostTypesProto3.MapStringBytesEntry\022n\n"
          + "\031map_string_nested_message\030G \003(\0132K.legacy"
          + "_gencode_test.proto3.TestMostTypesProto3.MapStringNestedMessageEntry\022p\n"
          + "\032map_string_foreign_message\030H \003(\0132L.legacy_gencod"
          + "e_test.proto3.TestMostTypesProto3.MapStringForeignMessageEntry\022h\n"
          + "\026map_string_nested_enum\030I \003(\0132H.legacy_gencode_test.pro"
          + "to3.TestMostTypesProto3.MapStringNestedEnumEntry\022j\n"
          + "\027map_string_foreign_enum\030J \003("
          + "\0132I.legacy_gencode_test.proto3.TestMostTypesProto3.MapStringForeignEnumEntry\022\026\n"
          + "\014oneof_uint32\030o \001(\r"
          + "H\000\022]\n"
          + "\024oneof_nested_message\030p"
          + " \001(\0132=.legacy_gencode_test.proto3.TestMostTypesProto3.NestedMessageH\000\022\026\n"
          + "\014oneof_string\030q \001(\tH\000\022\025\n"
          + "\013oneof_bytes\030r \001(\014H\000\022\024\n\n"
          + "oneof_bool\030s \001(\010H\000\022\026\n"
          + "\014oneof_uint64\030t \001(\004H\000\022\025\n"
          + "\013oneof_float\030u \001(\002H\000\022\026\n"
          + "\014oneof_double\030v \001(\001H\000\022P\n\n"
          + "oneof_enum\030w \001(\0162:.le"
          + "gacy_gencode_test.proto3.TestMostTypesProto3.NestedEnumH\000\032`\n\r"
          + "NestedMessage\022\t\n"
          + "\001a\030\001 \001(\005\022D\n"
          + "\013corecursive\030\002"
          + " \001(\0132/.legacy_gencode_test.proto3.TestMostTypesProto3\0324\n"
          + "\022MapInt32Int32Entry\022\013\n"
          + "\003key\030\001 \001(\005\022\r\n"
          + "\005value\030\002 \001(\005:\0028\001\0324\n"
          + "\022MapInt64Int64Entry\022\013\n"
          + "\003key\030\001 \001(\003\022\r\n"
          + "\005value\030\002 \001(\003:\0028\001\0326\n"
          + "\024MapUint32Uint32Entry\022\013\n"
          + "\003key\030\001 \001(\r"
          + "\022\r\n"
          + "\005value\030\002 \001(\r"
          + ":\0028\001\0326\n"
          + "\024MapUint64Uint64Entry\022\013\n"
          + "\003key\030\001 \001(\004\022\r\n"
          + "\005value\030\002 \001(\004:\0028\001\0326\n"
          + "\024MapSint32Sint32Entry\022\013\n"
          + "\003key\030\001 \001(\021\022\r\n"
          + "\005value\030\002 \001(\021:\0028\001\0326\n"
          + "\024MapSint64Sint64Entry\022\013\n"
          + "\003key\030\001 \001(\022\022\r\n"
          + "\005value\030\002 \001(\022:\0028\001\0328\n"
          + "\026MapFixed32Fixed32Entry\022\013\n"
          + "\003key\030\001 \001(\007\022\r\n"
          + "\005value\030\002 \001(\007:\0028\001\0328\n"
          + "\026MapFixed64Fixed64Entry\022\013\n"
          + "\003key\030\001 \001(\006\022\r\n"
          + "\005value\030\002 \001(\006:\0028\001\032:\n"
          + "\030MapSfixed32Sfixed32Entry\022\013\n"
          + "\003key\030\001 \001(\017\022\r\n"
          + "\005value\030\002 \001(\017:\0028\001\032:\n"
          + "\030MapSfixed64Sfixed64Entry\022\013\n"
          + "\003key\030\001 \001(\020\022\r\n"
          + "\005value\030\002 \001(\020:\0028\001\0324\n"
          + "\022MapInt32FloatEntry\022\013\n"
          + "\003key\030\001 \001(\005\022\r"
          + "\n"
          + "\005value\030\002 \001(\002:\0028\001\0325\n"
          + "\023MapInt32DoubleEntry\022\013\n"
          + "\003key\030\001 \001(\005\022\r\n"
          + "\005value\030\002 \001(\001:\0028\001\0322\n"
          + "\020MapBoolBoolEntry\022\013\n"
          + "\003key\030\001 \001(\010\022\r\n"
          + "\005value\030\002 \001(\010:\0028\001\0326\n"
          + "\024MapStringStringEntry\022\013\n"
          + "\003key\030\001 \001(\t\022\r\n"
          + "\005value\030\002 \001(\t:\0028\001\0325\n"
          + "\023MapStringBytesEntry\022\013\n"
          + "\003key\030\001 \001(\t\022\r\n"
          + "\005value\030\002 \001(\014:\0028\001\032|\n"
          + "\033MapStringNestedMessageEntry\022\013\n"
          + "\003key\030\001 \001(\t\022L\n"
          + "\005value\030\002 \001(\0132=.legacy_gencode_test.pro"
          + "to3.TestMostTypesProto3.NestedMessage:\0028\001\032j\n"
          + "\034MapStringForeignMessageEntry\022\013\n"
          + "\003key\030\001 \001(\t\0229\n"
          + "\005value\030\002"
          + " \001(\0132*.legacy_gencode_test.proto3.ForeignMessage:\0028\001\032v\n"
          + "\030MapStringNestedEnumEntry\022\013\n"
          + "\003key\030\001 \001(\t\022I\n"
          + "\005value\030\002"
          + " \001(\0162:.legacy_gencode_test.proto3.TestMostTypesProto3.NestedEnum:\0028\001\032d\n"
          + "\031MapStringForeignEnumEntry\022\013\n"
          + "\003key\030\001 \001(\t\0226\n"
          + "\005value\030\002 \001(\0162\'.legacy_gencode_test.proto3.ForeignEnum:\0028\001\"9\n\n"
          + "NestedEnum\022\007\n"
          + "\003FOO\020\000\022\007\n"
          + "\003BAR\020\001\022\007\n"
          + "\003BAZ\020\002\022\020\n"
          + "\003NEG\020\377\377\377\377\377\377\377\377\377\001\"Y\n"
          + "\013AliasedEnum\022\r\n"
          + "\tALIAS_FOO\020\000\022\r\n"
          + "\tALIAS_BAR\020\001\022\r\n"
          + "\tALIAS_BAZ\020\002\022\007\n"
          + "\003MOO\020\002\022\007\n"
          + "\003moo\020\002\022\007\n"
          + "\003bAz\020\002\032\002\020\001B\r\n"
          + "\013oneof_field\"\033\n"
          + "\016ForeignMessage\022\t\n"
          + "\001c\030\001 \001(\005*@\n"
          + "\013ForeignEnum\022\017\n"
          + "\013FOREIGN_FOO\020\000\022\017\n"
          + "\013FOREIGN_BAR\020\001\022\017\n"
          + "\013FOREIGN_BAZ\020\002B\030B\026Proto3GencodeTestProtob\006proto3"
    };
    descriptor =
        com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
            descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] {});
    internal_static_legacy_gencode_test_proto3_TestMessage_descriptor =
        getDescriptor().getMessageTypes().get(0);
    internal_static_legacy_gencode_test_proto3_TestMessage_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMessage_descriptor,
            new java.lang.String[] {
              "X", "Y",
            });
    internal_static_legacy_gencode_test_proto3_NestedTestMessage_descriptor =
        getDescriptor().getMessageTypes().get(1);
    internal_static_legacy_gencode_test_proto3_NestedTestMessage_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_NestedTestMessage_descriptor,
            new java.lang.String[] {
              "Z",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor =
        getDescriptor().getMessageTypes().get(2);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor,
            new java.lang.String[] {
              "OptionalInt32",
              "OptionalInt64",
              "OptionalUint32",
              "OptionalUint64",
              "OptionalSint32",
              "OptionalSint64",
              "OptionalFixed32",
              "OptionalFixed64",
              "OptionalSfixed32",
              "OptionalSfixed64",
              "OptionalFloat",
              "OptionalDouble",
              "OptionalBool",
              "OptionalString",
              "OptionalBytes",
              "OptionalNestedMessage",
              "OptionalForeignMessage",
              "OptionalNestedEnum",
              "OptionalForeignEnum",
              "OptionalAliasedEnum",
              "RecursiveMessage",
              "RepeatedInt32",
              "RepeatedInt64",
              "RepeatedUint32",
              "RepeatedUint64",
              "RepeatedSint32",
              "RepeatedSint64",
              "RepeatedFixed32",
              "RepeatedFixed64",
              "RepeatedSfixed32",
              "RepeatedSfixed64",
              "RepeatedFloat",
              "RepeatedDouble",
              "RepeatedBool",
              "RepeatedString",
              "RepeatedBytes",
              "RepeatedNestedMessage",
              "RepeatedForeignMessage",
              "RepeatedNestedEnum",
              "RepeatedForeignEnum",
              "PackedInt32",
              "PackedInt64",
              "PackedUint32",
              "PackedUint64",
              "PackedSint32",
              "PackedSint64",
              "PackedFixed32",
              "PackedFixed64",
              "PackedSfixed32",
              "PackedSfixed64",
              "PackedFloat",
              "PackedDouble",
              "PackedBool",
              "PackedNestedEnum",
              "UnpackedInt32",
              "UnpackedInt64",
              "UnpackedUint32",
              "UnpackedUint64",
              "UnpackedSint32",
              "UnpackedSint64",
              "UnpackedFixed32",
              "UnpackedFixed64",
              "UnpackedSfixed32",
              "UnpackedSfixed64",
              "UnpackedFloat",
              "UnpackedDouble",
              "UnpackedBool",
              "UnpackedNestedEnum",
              "MapInt32Int32",
              "MapInt64Int64",
              "MapUint32Uint32",
              "MapUint64Uint64",
              "MapSint32Sint32",
              "MapSint64Sint64",
              "MapFixed32Fixed32",
              "MapFixed64Fixed64",
              "MapSfixed32Sfixed32",
              "MapSfixed64Sfixed64",
              "MapInt32Float",
              "MapInt32Double",
              "MapBoolBool",
              "MapStringString",
              "MapStringBytes",
              "MapStringNestedMessage",
              "MapStringForeignMessage",
              "MapStringNestedEnum",
              "MapStringForeignEnum",
              "OneofUint32",
              "OneofNestedMessage",
              "OneofString",
              "OneofBytes",
              "OneofBool",
              "OneofUint64",
              "OneofFloat",
              "OneofDouble",
              "OneofEnum",
              "OneofField",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_NestedMessage_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(0);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_NestedMessage_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_NestedMessage_descriptor,
            new java.lang.String[] {
              "A", "Corecursive",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32Int32Entry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(1);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32Int32Entry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32Int32Entry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt64Int64Entry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(2);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt64Int64Entry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt64Int64Entry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapUint32Uint32Entry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(3);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapUint32Uint32Entry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapUint32Uint32Entry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapUint64Uint64Entry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(4);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapUint64Uint64Entry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapUint64Uint64Entry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSint32Sint32Entry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(5);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSint32Sint32Entry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSint32Sint32Entry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSint64Sint64Entry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(6);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSint64Sint64Entry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSint64Sint64Entry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapFixed32Fixed32Entry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(7);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapFixed32Fixed32Entry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapFixed32Fixed32Entry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapFixed64Fixed64Entry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(8);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapFixed64Fixed64Entry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapFixed64Fixed64Entry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSfixed32Sfixed32Entry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(9);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSfixed32Sfixed32Entry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSfixed32Sfixed32Entry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSfixed64Sfixed64Entry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(10);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSfixed64Sfixed64Entry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapSfixed64Sfixed64Entry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32FloatEntry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(11);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32FloatEntry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32FloatEntry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32DoubleEntry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(12);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32DoubleEntry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapInt32DoubleEntry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapBoolBoolEntry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(13);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapBoolBoolEntry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapBoolBoolEntry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringStringEntry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(14);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringStringEntry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringStringEntry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringBytesEntry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(15);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringBytesEntry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringBytesEntry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringNestedMessageEntry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(16);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringNestedMessageEntry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringNestedMessageEntry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringForeignMessageEntry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(17);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringForeignMessageEntry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringForeignMessageEntry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringNestedEnumEntry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(18);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringNestedEnumEntry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringNestedEnumEntry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringForeignEnumEntry_descriptor =
        internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_descriptor
            .getNestedTypes()
            .get(19);
    internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringForeignEnumEntry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_TestMostTypesProto3_MapStringForeignEnumEntry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_legacy_gencode_test_proto3_ForeignMessage_descriptor =
        getDescriptor().getMessageTypes().get(3);
    internal_static_legacy_gencode_test_proto3_ForeignMessage_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_legacy_gencode_test_proto3_ForeignMessage_descriptor,
            new java.lang.String[] {
              "C",
            });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
