TestFull.java

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: test-full.proto

package foo;

public final class TestFull {
  private TestFull() {}
  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 foo.TestEnumSmall}
   */
  public enum TestEnumSmall
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>NEG_VALUE = -1;</code>
     */
    NEG_VALUE(-1),
    /**
     * <code>VALUE = 0;</code>
     */
    VALUE(0),
    /**
     * <code>OTHER_VALUE = 1;</code>
     */
    OTHER_VALUE(1),
    ;

    /**
     * <code>NEG_VALUE = -1;</code>
     */
    public static final int NEG_VALUE_VALUE = -1;
    /**
     * <code>VALUE = 0;</code>
     */
    public static final int VALUE_VALUE = 0;
    /**
     * <code>OTHER_VALUE = 1;</code>
     */
    public static final int OTHER_VALUE_VALUE = 1;


    public final int getNumber() {
      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 TestEnumSmall 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 TestEnumSmall forNumber(int value) {
      switch (value) {
        case -1: return NEG_VALUE;
        case 0: return VALUE;
        case 1: return OTHER_VALUE;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return foo.TestFull.getDescriptor().getEnumTypes().get(0);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:foo.TestEnumSmall)
  }

  /**
   * <pre>
   * these number are specifically chosen to test the
   * boundaries of when an enum requires a certain number of bytes.
   * e.g. 16383 requires 3 bytes; 16384 requires 4.
   * </pre>
   *
   * Protobuf enum {@code foo.TestEnum}
   */
  public enum TestEnum
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>VALUENEG123456 = -123456;</code>
     */
    VALUENEG123456(-123456),
    /**
     * <code>VALUENEG1 = -1;</code>
     */
    VALUENEG1(-1),
    /**
     * <code>VALUE0 = 0;</code>
     */
    VALUE0(0),
    /**
     * <code>VALUE1 = 1;</code>
     */
    VALUE1(1),
    /**
     * <code>VALUE127 = 127;</code>
     */
    VALUE127(127),
    /**
     * <code>VALUE128 = 128;</code>
     */
    VALUE128(128),
    /**
     * <code>VALUE16383 = 16383;</code>
     */
    VALUE16383(16383),
    /**
     * <code>VALUE16384 = 16384;</code>
     */
    VALUE16384(16384),
    /**
     * <code>VALUE2097151 = 2097151;</code>
     */
    VALUE2097151(2097151),
    /**
     * <code>VALUE2097152 = 2097152;</code>
     */
    VALUE2097152(2097152),
    /**
     * <code>VALUE268435455 = 268435455;</code>
     */
    VALUE268435455(268435455),
    /**
     * <code>VALUE268435456 = 268435456;</code>
     */
    VALUE268435456(268435456),
    ;

    /**
     * <code>VALUENEG123456 = -123456;</code>
     */
    public static final int VALUENEG123456_VALUE = -123456;
    /**
     * <code>VALUENEG1 = -1;</code>
     */
    public static final int VALUENEG1_VALUE = -1;
    /**
     * <code>VALUE0 = 0;</code>
     */
    public static final int VALUE0_VALUE = 0;
    /**
     * <code>VALUE1 = 1;</code>
     */
    public static final int VALUE1_VALUE = 1;
    /**
     * <code>VALUE127 = 127;</code>
     */
    public static final int VALUE127_VALUE = 127;
    /**
     * <code>VALUE128 = 128;</code>
     */
    public static final int VALUE128_VALUE = 128;
    /**
     * <code>VALUE16383 = 16383;</code>
     */
    public static final int VALUE16383_VALUE = 16383;
    /**
     * <code>VALUE16384 = 16384;</code>
     */
    public static final int VALUE16384_VALUE = 16384;
    /**
     * <code>VALUE2097151 = 2097151;</code>
     */
    public static final int VALUE2097151_VALUE = 2097151;
    /**
     * <code>VALUE2097152 = 2097152;</code>
     */
    public static final int VALUE2097152_VALUE = 2097152;
    /**
     * <code>VALUE268435455 = 268435455;</code>
     */
    public static final int VALUE268435455_VALUE = 268435455;
    /**
     * <code>VALUE268435456 = 268435456;</code>
     */
    public static final int VALUE268435456_VALUE = 268435456;


    public final int getNumber() {
      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 TestEnum 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 TestEnum forNumber(int value) {
      switch (value) {
        case -123456: return VALUENEG123456;
        case -1: return VALUENEG1;
        case 0: return VALUE0;
        case 1: return VALUE1;
        case 127: return VALUE127;
        case 128: return VALUE128;
        case 16383: return VALUE16383;
        case 16384: return VALUE16384;
        case 2097151: return VALUE2097151;
        case 2097152: return VALUE2097152;
        case 268435455: return VALUE268435455;
        case 268435456: return VALUE268435456;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return foo.TestFull.getDescriptor().getEnumTypes().get(1);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:foo.TestEnum)
  }

  /**
   * Protobuf enum {@code foo.TestEnumDupValues}
   */
  public enum TestEnumDupValues
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>VALUE_A = 42;</code>
     */
    VALUE_A(0, 42),
    /**
     * <code>VALUE_D = 666;</code>
     */
    VALUE_D(3, 666),
    /**
     * <code>VALUE_F = 1000;</code>
     */
    VALUE_F(5, 1000),
    /**
     * <code>VALUE_BB = 1001;</code>
     */
    VALUE_BB(7, 1001),
    ;

    /**
     * <code>VALUE_B = 42;</code>
     */
    public static final TestEnumDupValues VALUE_B = VALUE_A;
    /**
     * <code>VALUE_C = 42;</code>
     */
    public static final TestEnumDupValues VALUE_C = VALUE_A;
    /**
     * <code>VALUE_E = 666;</code>
     */
    public static final TestEnumDupValues VALUE_E = VALUE_D;
    /**
     * <code>VALUE_AA = 1000;</code>
     */
    public static final TestEnumDupValues VALUE_AA = VALUE_F;
    /**
     * <code>VALUE_A = 42;</code>
     */
    public static final int VALUE_A_VALUE = 42;
    /**
     * <code>VALUE_B = 42;</code>
     */
    public static final int VALUE_B_VALUE = 42;
    /**
     * <code>VALUE_C = 42;</code>
     */
    public static final int VALUE_C_VALUE = 42;
    /**
     * <code>VALUE_D = 666;</code>
     */
    public static final int VALUE_D_VALUE = 666;
    /**
     * <code>VALUE_E = 666;</code>
     */
    public static final int VALUE_E_VALUE = 666;
    /**
     * <code>VALUE_F = 1000;</code>
     */
    public static final int VALUE_F_VALUE = 1000;
    /**
     * <code>VALUE_AA = 1000;</code>
     */
    public static final int VALUE_AA_VALUE = 1000;
    /**
     * <code>VALUE_BB = 1001;</code>
     */
    public static final int VALUE_BB_VALUE = 1001;


    public final int getNumber() {
      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 TestEnumDupValues 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 TestEnumDupValues forNumber(int value) {
      switch (value) {
        case 42: return VALUE_A;
        case 666: return VALUE_D;
        case 1000: return VALUE_F;
        case 1001: return VALUE_BB;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return foo.TestFull.getDescriptor().getEnumTypes().get(2);
    }

    private static final TestEnumDupValues[] VALUES = getStaticValuesArray();
    private static TestEnumDupValues[] getStaticValuesArray() {
      return new TestEnumDupValues[] {
      VALUE_A, VALUE_B, VALUE_C, VALUE_D, VALUE_E, VALUE_F, VALUE_AA, VALUE_BB, 
      };
    }
    public static TestEnumDupValues valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }

    private final int index;
    private final int value;

    private TestEnumDupValues(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:foo.TestEnumDupValues)
  }

  public interface SubMessOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.SubMess)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required int32 test = 4;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required int32 test = 4;</code>
     * @return The test.
     */
    int getTest();

    /**
     * <code>optional int32 val1 = 6;</code>
     * @return Whether the val1 field is set.
     */
    boolean hasVal1();
    /**
     * <code>optional int32 val1 = 6;</code>
     * @return The val1.
     */
    int getVal1();

    /**
     * <code>optional int32 val2 = 7;</code>
     * @return Whether the val2 field is set.
     */
    boolean hasVal2();
    /**
     * <code>optional int32 val2 = 7;</code>
     * @return The val2.
     */
    int getVal2();

    /**
     * <code>repeated int32 rep = 8;</code>
     * @return A list containing the rep.
     */
    java.util.List<java.lang.Integer> getRepList();
    /**
     * <code>repeated int32 rep = 8;</code>
     * @return The count of rep.
     */
    int getRepCount();
    /**
     * <code>repeated int32 rep = 8;</code>
     * @param index The index of the element to return.
     * @return The rep at the given index.
     */
    int getRep(int index);

    /**
     * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
     * @return Whether the sub1 field is set.
     */
    boolean hasSub1();
    /**
     * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
     * @return The sub1.
     */
    foo.TestFull.SubMess.SubSubMess getSub1();
    /**
     * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
     */
    foo.TestFull.SubMess.SubSubMessOrBuilder getSub1OrBuilder();

    /**
     * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
     * @return Whether the sub2 field is set.
     */
    boolean hasSub2();
    /**
     * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
     * @return The sub2.
     */
    foo.TestFull.SubMess.SubSubMess getSub2();
    /**
     * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
     */
    foo.TestFull.SubMess.SubSubMessOrBuilder getSub2OrBuilder();
  }
  /**
   * Protobuf type {@code foo.SubMess}
   */
  public static final class SubMess extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.SubMess)
      SubMessOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SubMess.newBuilder() to construct.
    private SubMess(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SubMess() {
      rep_ = emptyIntList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_SubMess_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_SubMess_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.SubMess.class, foo.TestFull.SubMess.Builder.class);
    }

    public interface SubSubMessOrBuilder extends
        // @@protoc_insertion_point(interface_extends:foo.SubMess.SubSubMess)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>optional int32 val1 = 1 [default = 100];</code>
       * @return Whether the val1 field is set.
       */
      boolean hasVal1();
      /**
       * <code>optional int32 val1 = 1 [default = 100];</code>
       * @return The val1.
       */
      int getVal1();

      /**
       * <code>repeated int32 rep = 4;</code>
       * @return A list containing the rep.
       */
      java.util.List<java.lang.Integer> getRepList();
      /**
       * <code>repeated int32 rep = 4;</code>
       * @return The count of rep.
       */
      int getRepCount();
      /**
       * <code>repeated int32 rep = 4;</code>
       * @param index The index of the element to return.
       * @return The rep at the given index.
       */
      int getRep(int index);

      /**
       * <code>optional bytes bytes1 = 2 [default = "a &#92;000 char"];</code>
       * @return Whether the bytes1 field is set.
       */
      boolean hasBytes1();
      /**
       * <code>optional bytes bytes1 = 2 [default = "a &#92;000 char"];</code>
       * @return The bytes1.
       */
      com.google.protobuf.ByteString getBytes1();

      /**
       * <code>optional string str1 = 3 [default = "hello world&#92;n"];</code>
       * @return Whether the str1 field is set.
       */
      boolean hasStr1();
      /**
       * <code>optional string str1 = 3 [default = "hello world&#92;n"];</code>
       * @return The str1.
       */
      java.lang.String getStr1();
      /**
       * <code>optional string str1 = 3 [default = "hello world&#92;n"];</code>
       * @return The bytes for str1.
       */
      com.google.protobuf.ByteString
          getStr1Bytes();
    }
    /**
     * Protobuf type {@code foo.SubMess.SubSubMess}
     */
    public static final class SubSubMess extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:foo.SubMess.SubSubMess)
        SubSubMessOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SubSubMess.newBuilder() to construct.
      private SubSubMess(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SubSubMess() {
        val1_ = 100;
        rep_ = emptyIntList();
        bytes1_ = com.google.protobuf.Internal.bytesDefaultValue("a \000 char");
        str1_ = "hello world\n";
      }

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return foo.TestFull.internal_static_foo_SubMess_SubSubMess_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_SubMess_SubSubMess_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.SubMess.SubSubMess.class, foo.TestFull.SubMess.SubSubMess.Builder.class);
      }

      private int bitField0_;
      public static final int VAL1_FIELD_NUMBER = 1;
      private int val1_ = 100;
      /**
       * <code>optional int32 val1 = 1 [default = 100];</code>
       * @return Whether the val1 field is set.
       */
      @java.lang.Override
      public boolean hasVal1() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional int32 val1 = 1 [default = 100];</code>
       * @return The val1.
       */
      @java.lang.Override
      public int getVal1() {
        return val1_;
      }

      public static final int REP_FIELD_NUMBER = 4;
      @SuppressWarnings("serial")
      private com.google.protobuf.Internal.IntList rep_ =
          emptyIntList();
      /**
       * <code>repeated int32 rep = 4;</code>
       * @return A list containing the rep.
       */
      @java.lang.Override
      public java.util.List<java.lang.Integer>
          getRepList() {
        return rep_;
      }
      /**
       * <code>repeated int32 rep = 4;</code>
       * @return The count of rep.
       */
      public int getRepCount() {
        return rep_.size();
      }
      /**
       * <code>repeated int32 rep = 4;</code>
       * @param index The index of the element to return.
       * @return The rep at the given index.
       */
      public int getRep(int index) {
        return rep_.getInt(index);
      }

      public static final int BYTES1_FIELD_NUMBER = 2;
      private com.google.protobuf.ByteString bytes1_ = com.google.protobuf.Internal.bytesDefaultValue("a \000 char");
      /**
       * <code>optional bytes bytes1 = 2 [default = "a &#92;000 char"];</code>
       * @return Whether the bytes1 field is set.
       */
      @java.lang.Override
      public boolean hasBytes1() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional bytes bytes1 = 2 [default = "a &#92;000 char"];</code>
       * @return The bytes1.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getBytes1() {
        return bytes1_;
      }

      public static final int STR1_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private volatile java.lang.Object str1_ = "hello world\n";
      /**
       * <code>optional string str1 = 3 [default = "hello world&#92;n"];</code>
       * @return Whether the str1 field is set.
       */
      @java.lang.Override
      public boolean hasStr1() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string str1 = 3 [default = "hello world&#92;n"];</code>
       * @return The str1.
       */
      @java.lang.Override
      public java.lang.String getStr1() {
        java.lang.Object ref = str1_;
        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 (bs.isValidUtf8()) {
            str1_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string str1 = 3 [default = "hello world&#92;n"];</code>
       * @return The bytes for str1.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getStr1Bytes() {
        java.lang.Object ref = str1_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          str1_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, val1_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeBytes(2, bytes1_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, str1_);
        }
        for (int i = 0; i < rep_.size(); i++) {
          output.writeInt32(4, rep_.getInt(i));
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, val1_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, bytes1_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, str1_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < rep_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(rep_.getInt(i));
          }
          size += dataSize;
          size += 1 * getRepList().size();
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof foo.TestFull.SubMess.SubSubMess)) {
          return super.equals(obj);
        }
        foo.TestFull.SubMess.SubSubMess other = (foo.TestFull.SubMess.SubSubMess) obj;

        if (hasVal1() != other.hasVal1()) return false;
        if (hasVal1()) {
          if (getVal1()
              != other.getVal1()) return false;
        }
        if (!getRepList()
            .equals(other.getRepList())) return false;
        if (hasBytes1() != other.hasBytes1()) return false;
        if (hasBytes1()) {
          if (!getBytes1()
              .equals(other.getBytes1())) return false;
        }
        if (hasStr1() != other.hasStr1()) return false;
        if (hasStr1()) {
          if (!getStr1()
              .equals(other.getStr1())) 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 (hasVal1()) {
          hash = (37 * hash) + VAL1_FIELD_NUMBER;
          hash = (53 * hash) + getVal1();
        }
        if (getRepCount() > 0) {
          hash = (37 * hash) + REP_FIELD_NUMBER;
          hash = (53 * hash) + getRepList().hashCode();
        }
        if (hasBytes1()) {
          hash = (37 * hash) + BYTES1_FIELD_NUMBER;
          hash = (53 * hash) + getBytes1().hashCode();
        }
        if (hasStr1()) {
          hash = (37 * hash) + STR1_FIELD_NUMBER;
          hash = (53 * hash) + getStr1().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static foo.TestFull.SubMess.SubSubMess parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static foo.TestFull.SubMess.SubSubMess parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static foo.TestFull.SubMess.SubSubMess parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static foo.TestFull.SubMess.SubSubMess parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static foo.TestFull.SubMess.SubSubMess parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static foo.TestFull.SubMess.SubSubMess parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static foo.TestFull.SubMess.SubSubMess parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static foo.TestFull.SubMess.SubSubMess 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 foo.TestFull.SubMess.SubSubMess parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static foo.TestFull.SubMess.SubSubMess 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 foo.TestFull.SubMess.SubSubMess parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static foo.TestFull.SubMess.SubSubMess 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(foo.TestFull.SubMess.SubSubMess 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 foo.SubMess.SubSubMess}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:foo.SubMess.SubSubMess)
          foo.TestFull.SubMess.SubSubMessOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return foo.TestFull.internal_static_foo_SubMess_SubSubMess_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return foo.TestFull.internal_static_foo_SubMess_SubSubMess_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  foo.TestFull.SubMess.SubSubMess.class, foo.TestFull.SubMess.SubSubMess.Builder.class);
        }

        // Construct using foo.TestFull.SubMess.SubSubMess.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          val1_ = 100;
          rep_ = emptyIntList();
          bytes1_ = com.google.protobuf.Internal.bytesDefaultValue("a \000 char");
          str1_ = "hello world\n";
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return foo.TestFull.internal_static_foo_SubMess_SubSubMess_descriptor;
        }

        @java.lang.Override
        public foo.TestFull.SubMess.SubSubMess getDefaultInstanceForType() {
          return foo.TestFull.SubMess.SubSubMess.getDefaultInstance();
        }

        @java.lang.Override
        public foo.TestFull.SubMess.SubSubMess build() {
          foo.TestFull.SubMess.SubSubMess result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public foo.TestFull.SubMess.SubSubMess buildPartial() {
          foo.TestFull.SubMess.SubSubMess result = new foo.TestFull.SubMess.SubSubMess(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(foo.TestFull.SubMess.SubSubMess result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.val1_ = val1_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            rep_.makeImmutable();
            result.rep_ = rep_;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.bytes1_ = bytes1_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.str1_ = str1_;
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ |= to_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 foo.TestFull.SubMess.SubSubMess) {
            return mergeFrom((foo.TestFull.SubMess.SubSubMess)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(foo.TestFull.SubMess.SubSubMess other) {
          if (other == foo.TestFull.SubMess.SubSubMess.getDefaultInstance()) return this;
          if (other.hasVal1()) {
            setVal1(other.getVal1());
          }
          if (!other.rep_.isEmpty()) {
            if (rep_.isEmpty()) {
              rep_ = other.rep_;
              rep_.makeImmutable();
              bitField0_ |= 0x00000002;
            } else {
              ensureRepIsMutable();
              rep_.addAll(other.rep_);
            }
            onChanged();
          }
          if (other.hasBytes1()) {
            setBytes1(other.getBytes1());
          }
          if (other.hasStr1()) {
            str1_ = other.str1_;
            bitField0_ |= 0x00000008;
            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: {
                  val1_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 18: {
                  bytes1_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 18
                case 26: {
                  str1_ = input.readBytes();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 26
                case 32: {
                  int v = input.readInt32();
                  ensureRepIsMutable();
                  rep_.addInt(v);
                  break;
                } // case 32
                case 34: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureRepIsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    rep_.addInt(input.readInt32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 34
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private int val1_ = 100;
        /**
         * <code>optional int32 val1 = 1 [default = 100];</code>
         * @return Whether the val1 field is set.
         */
        @java.lang.Override
        public boolean hasVal1() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional int32 val1 = 1 [default = 100];</code>
         * @return The val1.
         */
        @java.lang.Override
        public int getVal1() {
          return val1_;
        }
        /**
         * <code>optional int32 val1 = 1 [default = 100];</code>
         * @param value The val1 to set.
         * @return This builder for chaining.
         */
        public Builder setVal1(int value) {

          val1_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>optional int32 val1 = 1 [default = 100];</code>
         * @return This builder for chaining.
         */
        public Builder clearVal1() {
          bitField0_ = (bitField0_ & ~0x00000001);
          val1_ = 100;
          onChanged();
          return this;
        }

        private com.google.protobuf.Internal.IntList rep_ = emptyIntList();
        private void ensureRepIsMutable() {
          if (!rep_.isModifiable()) {
            rep_ = mutableCopy(rep_);
          }
          bitField0_ |= 0x00000002;
        }
        /**
         * <code>repeated int32 rep = 4;</code>
         * @return A list containing the rep.
         */
        public java.util.List<java.lang.Integer>
            getRepList() {
          rep_.makeImmutable();
          return rep_;
        }
        /**
         * <code>repeated int32 rep = 4;</code>
         * @return The count of rep.
         */
        public int getRepCount() {
          return rep_.size();
        }
        /**
         * <code>repeated int32 rep = 4;</code>
         * @param index The index of the element to return.
         * @return The rep at the given index.
         */
        public int getRep(int index) {
          return rep_.getInt(index);
        }
        /**
         * <code>repeated int32 rep = 4;</code>
         * @param index The index to set the value at.
         * @param value The rep to set.
         * @return This builder for chaining.
         */
        public Builder setRep(
            int index, int value) {

          ensureRepIsMutable();
          rep_.setInt(index, value);
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 rep = 4;</code>
         * @param value The rep to add.
         * @return This builder for chaining.
         */
        public Builder addRep(int value) {

          ensureRepIsMutable();
          rep_.addInt(value);
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 rep = 4;</code>
         * @param values The rep to add.
         * @return This builder for chaining.
         */
        public Builder addAllRep(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureRepIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, rep_);
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 rep = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearRep() {
          rep_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }

        private com.google.protobuf.ByteString bytes1_ = com.google.protobuf.Internal.bytesDefaultValue("a \000 char");
        /**
         * <code>optional bytes bytes1 = 2 [default = "a &#92;000 char"];</code>
         * @return Whether the bytes1 field is set.
         */
        @java.lang.Override
        public boolean hasBytes1() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional bytes bytes1 = 2 [default = "a &#92;000 char"];</code>
         * @return The bytes1.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getBytes1() {
          return bytes1_;
        }
        /**
         * <code>optional bytes bytes1 = 2 [default = "a &#92;000 char"];</code>
         * @param value The bytes1 to set.
         * @return This builder for chaining.
         */
        public Builder setBytes1(com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          bytes1_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes bytes1 = 2 [default = "a &#92;000 char"];</code>
         * @return This builder for chaining.
         */
        public Builder clearBytes1() {
          bitField0_ = (bitField0_ & ~0x00000004);
          bytes1_ = getDefaultInstance().getBytes1();
          onChanged();
          return this;
        }

        private java.lang.Object str1_ = "hello world\n";
        /**
         * <code>optional string str1 = 3 [default = "hello world&#92;n"];</code>
         * @return Whether the str1 field is set.
         */
        public boolean hasStr1() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <code>optional string str1 = 3 [default = "hello world&#92;n"];</code>
         * @return The str1.
         */
        public java.lang.String getStr1() {
          java.lang.Object ref = str1_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              str1_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string str1 = 3 [default = "hello world&#92;n"];</code>
         * @return The bytes for str1.
         */
        public com.google.protobuf.ByteString
            getStr1Bytes() {
          java.lang.Object ref = str1_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            str1_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string str1 = 3 [default = "hello world&#92;n"];</code>
         * @param value The str1 to set.
         * @return This builder for chaining.
         */
        public Builder setStr1(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          str1_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <code>optional string str1 = 3 [default = "hello world&#92;n"];</code>
         * @return This builder for chaining.
         */
        public Builder clearStr1() {
          str1_ = getDefaultInstance().getStr1();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
          return this;
        }
        /**
         * <code>optional string str1 = 3 [default = "hello world&#92;n"];</code>
         * @param value The bytes for str1 to set.
         * @return This builder for chaining.
         */
        public Builder setStr1Bytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          str1_ = value;
          bitField0_ |= 0x00000008;
          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:foo.SubMess.SubSubMess)
      }

      // @@protoc_insertion_point(class_scope:foo.SubMess.SubSubMess)
      private static final foo.TestFull.SubMess.SubSubMess DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new foo.TestFull.SubMess.SubSubMess();
      }

      public static foo.TestFull.SubMess.SubSubMess getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

      @java.lang.Override
      public foo.TestFull.SubMess.SubSubMess getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 4;
    private int test_ = 0;
    /**
     * <code>required int32 test = 4;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required int32 test = 4;</code>
     * @return The test.
     */
    @java.lang.Override
    public int getTest() {
      return test_;
    }

    public static final int VAL1_FIELD_NUMBER = 6;
    private int val1_ = 0;
    /**
     * <code>optional int32 val1 = 6;</code>
     * @return Whether the val1 field is set.
     */
    @java.lang.Override
    public boolean hasVal1() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional int32 val1 = 6;</code>
     * @return The val1.
     */
    @java.lang.Override
    public int getVal1() {
      return val1_;
    }

    public static final int VAL2_FIELD_NUMBER = 7;
    private int val2_ = 0;
    /**
     * <code>optional int32 val2 = 7;</code>
     * @return Whether the val2 field is set.
     */
    @java.lang.Override
    public boolean hasVal2() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional int32 val2 = 7;</code>
     * @return The val2.
     */
    @java.lang.Override
    public int getVal2() {
      return val2_;
    }

    public static final int REP_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList rep_ =
        emptyIntList();
    /**
     * <code>repeated int32 rep = 8;</code>
     * @return A list containing the rep.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getRepList() {
      return rep_;
    }
    /**
     * <code>repeated int32 rep = 8;</code>
     * @return The count of rep.
     */
    public int getRepCount() {
      return rep_.size();
    }
    /**
     * <code>repeated int32 rep = 8;</code>
     * @param index The index of the element to return.
     * @return The rep at the given index.
     */
    public int getRep(int index) {
      return rep_.getInt(index);
    }

    public static final int SUB1_FIELD_NUMBER = 9;
    private foo.TestFull.SubMess.SubSubMess sub1_;
    /**
     * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
     * @return Whether the sub1 field is set.
     */
    @java.lang.Override
    public boolean hasSub1() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
     * @return The sub1.
     */
    @java.lang.Override
    public foo.TestFull.SubMess.SubSubMess getSub1() {
      return sub1_ == null ? foo.TestFull.SubMess.SubSubMess.getDefaultInstance() : sub1_;
    }
    /**
     * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
     */
    @java.lang.Override
    public foo.TestFull.SubMess.SubSubMessOrBuilder getSub1OrBuilder() {
      return sub1_ == null ? foo.TestFull.SubMess.SubSubMess.getDefaultInstance() : sub1_;
    }

    public static final int SUB2_FIELD_NUMBER = 10;
    private foo.TestFull.SubMess.SubSubMess sub2_;
    /**
     * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
     * @return Whether the sub2 field is set.
     */
    @java.lang.Override
    public boolean hasSub2() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
     * @return The sub2.
     */
    @java.lang.Override
    public foo.TestFull.SubMess.SubSubMess getSub2() {
      return sub2_ == null ? foo.TestFull.SubMess.SubSubMess.getDefaultInstance() : sub2_;
    }
    /**
     * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
     */
    @java.lang.Override
    public foo.TestFull.SubMess.SubSubMessOrBuilder getSub2OrBuilder() {
      return sub2_ == null ? foo.TestFull.SubMess.SubSubMess.getDefaultInstance() : sub2_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(4, test_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(6, val1_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(7, val2_);
      }
      for (int i = 0; i < rep_.size(); i++) {
        output.writeInt32(8, rep_.getInt(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(9, getSub1());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(10, getSub2());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, test_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, val1_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, val2_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < rep_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(rep_.getInt(i));
        }
        size += dataSize;
        size += 1 * getRepList().size();
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getSub1());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getSub2());
      }
      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 foo.TestFull.SubMess)) {
        return super.equals(obj);
      }
      foo.TestFull.SubMess other = (foo.TestFull.SubMess) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (getTest()
            != other.getTest()) return false;
      }
      if (hasVal1() != other.hasVal1()) return false;
      if (hasVal1()) {
        if (getVal1()
            != other.getVal1()) return false;
      }
      if (hasVal2() != other.hasVal2()) return false;
      if (hasVal2()) {
        if (getVal2()
            != other.getVal2()) return false;
      }
      if (!getRepList()
          .equals(other.getRepList())) return false;
      if (hasSub1() != other.hasSub1()) return false;
      if (hasSub1()) {
        if (!getSub1()
            .equals(other.getSub1())) return false;
      }
      if (hasSub2() != other.hasSub2()) return false;
      if (hasSub2()) {
        if (!getSub2()
            .equals(other.getSub2())) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + getTest();
      }
      if (hasVal1()) {
        hash = (37 * hash) + VAL1_FIELD_NUMBER;
        hash = (53 * hash) + getVal1();
      }
      if (hasVal2()) {
        hash = (37 * hash) + VAL2_FIELD_NUMBER;
        hash = (53 * hash) + getVal2();
      }
      if (getRepCount() > 0) {
        hash = (37 * hash) + REP_FIELD_NUMBER;
        hash = (53 * hash) + getRepList().hashCode();
      }
      if (hasSub1()) {
        hash = (37 * hash) + SUB1_FIELD_NUMBER;
        hash = (53 * hash) + getSub1().hashCode();
      }
      if (hasSub2()) {
        hash = (37 * hash) + SUB2_FIELD_NUMBER;
        hash = (53 * hash) + getSub2().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_SubMess_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.SubMess.class, foo.TestFull.SubMess.Builder.class);
      }

      // Construct using foo.TestFull.SubMess.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSub1FieldBuilder();
          getSub2FieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        test_ = 0;
        val1_ = 0;
        val2_ = 0;
        rep_ = emptyIntList();
        sub1_ = null;
        if (sub1Builder_ != null) {
          sub1Builder_.dispose();
          sub1Builder_ = null;
        }
        sub2_ = null;
        if (sub2Builder_ != null) {
          sub2Builder_.dispose();
          sub2Builder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_SubMess_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.SubMess getDefaultInstanceForType() {
        return foo.TestFull.SubMess.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.SubMess build() {
        foo.TestFull.SubMess result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.SubMess buildPartial() {
        foo.TestFull.SubMess result = new foo.TestFull.SubMess(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.SubMess result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.val1_ = val1_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.val2_ = val2_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          rep_.makeImmutable();
          result.rep_ = rep_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.sub1_ = sub1Builder_ == null
              ? sub1_
              : sub1Builder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.sub2_ = sub2Builder_ == null
              ? sub2_
              : sub2Builder_.build();
          to_bitField0_ |= 0x00000010;
        }
        result.bitField0_ |= to_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 foo.TestFull.SubMess) {
          return mergeFrom((foo.TestFull.SubMess)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.SubMess other) {
        if (other == foo.TestFull.SubMess.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        if (other.hasVal1()) {
          setVal1(other.getVal1());
        }
        if (other.hasVal2()) {
          setVal2(other.getVal2());
        }
        if (!other.rep_.isEmpty()) {
          if (rep_.isEmpty()) {
            rep_ = other.rep_;
            rep_.makeImmutable();
            bitField0_ |= 0x00000008;
          } else {
            ensureRepIsMutable();
            rep_.addAll(other.rep_);
          }
          onChanged();
        }
        if (other.hasSub1()) {
          mergeSub1(other.getSub1());
        }
        if (other.hasSub2()) {
          mergeSub2(other.getSub2());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 32: {
                test_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 32
              case 48: {
                val1_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 48
              case 56: {
                val2_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 56
              case 64: {
                int v = input.readInt32();
                ensureRepIsMutable();
                rep_.addInt(v);
                break;
              } // case 64
              case 66: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureRepIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  rep_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getSub1FieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getSub2FieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 82
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int test_ ;
      /**
       * <code>required int32 test = 4;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required int32 test = 4;</code>
       * @return The test.
       */
      @java.lang.Override
      public int getTest() {
        return test_;
      }
      /**
       * <code>required int32 test = 4;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(int value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 test = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = 0;
        onChanged();
        return this;
      }

      private int val1_ ;
      /**
       * <code>optional int32 val1 = 6;</code>
       * @return Whether the val1 field is set.
       */
      @java.lang.Override
      public boolean hasVal1() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional int32 val1 = 6;</code>
       * @return The val1.
       */
      @java.lang.Override
      public int getVal1() {
        return val1_;
      }
      /**
       * <code>optional int32 val1 = 6;</code>
       * @param value The val1 to set.
       * @return This builder for chaining.
       */
      public Builder setVal1(int value) {

        val1_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 val1 = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearVal1() {
        bitField0_ = (bitField0_ & ~0x00000002);
        val1_ = 0;
        onChanged();
        return this;
      }

      private int val2_ ;
      /**
       * <code>optional int32 val2 = 7;</code>
       * @return Whether the val2 field is set.
       */
      @java.lang.Override
      public boolean hasVal2() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional int32 val2 = 7;</code>
       * @return The val2.
       */
      @java.lang.Override
      public int getVal2() {
        return val2_;
      }
      /**
       * <code>optional int32 val2 = 7;</code>
       * @param value The val2 to set.
       * @return This builder for chaining.
       */
      public Builder setVal2(int value) {

        val2_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 val2 = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearVal2() {
        bitField0_ = (bitField0_ & ~0x00000004);
        val2_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList rep_ = emptyIntList();
      private void ensureRepIsMutable() {
        if (!rep_.isModifiable()) {
          rep_ = mutableCopy(rep_);
        }
        bitField0_ |= 0x00000008;
      }
      /**
       * <code>repeated int32 rep = 8;</code>
       * @return A list containing the rep.
       */
      public java.util.List<java.lang.Integer>
          getRepList() {
        rep_.makeImmutable();
        return rep_;
      }
      /**
       * <code>repeated int32 rep = 8;</code>
       * @return The count of rep.
       */
      public int getRepCount() {
        return rep_.size();
      }
      /**
       * <code>repeated int32 rep = 8;</code>
       * @param index The index of the element to return.
       * @return The rep at the given index.
       */
      public int getRep(int index) {
        return rep_.getInt(index);
      }
      /**
       * <code>repeated int32 rep = 8;</code>
       * @param index The index to set the value at.
       * @param value The rep to set.
       * @return This builder for chaining.
       */
      public Builder setRep(
          int index, int value) {

        ensureRepIsMutable();
        rep_.setInt(index, value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 rep = 8;</code>
       * @param value The rep to add.
       * @return This builder for chaining.
       */
      public Builder addRep(int value) {

        ensureRepIsMutable();
        rep_.addInt(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 rep = 8;</code>
       * @param values The rep to add.
       * @return This builder for chaining.
       */
      public Builder addAllRep(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureRepIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, rep_);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 rep = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearRep() {
        rep_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      private foo.TestFull.SubMess.SubSubMess sub1_;
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.SubMess.SubSubMess, foo.TestFull.SubMess.SubSubMess.Builder, foo.TestFull.SubMess.SubSubMessOrBuilder> sub1Builder_;
      /**
       * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
       * @return Whether the sub1 field is set.
       */
      public boolean hasSub1() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
       * @return The sub1.
       */
      public foo.TestFull.SubMess.SubSubMess getSub1() {
        if (sub1Builder_ == null) {
          return sub1_ == null ? foo.TestFull.SubMess.SubSubMess.getDefaultInstance() : sub1_;
        } else {
          return sub1Builder_.getMessage();
        }
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
       */
      public Builder setSub1(foo.TestFull.SubMess.SubSubMess value) {
        if (sub1Builder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sub1_ = value;
        } else {
          sub1Builder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
       */
      public Builder setSub1(
          foo.TestFull.SubMess.SubSubMess.Builder builderForValue) {
        if (sub1Builder_ == null) {
          sub1_ = builderForValue.build();
        } else {
          sub1Builder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
       */
      public Builder mergeSub1(foo.TestFull.SubMess.SubSubMess value) {
        if (sub1Builder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            sub1_ != null &&
            sub1_ != foo.TestFull.SubMess.SubSubMess.getDefaultInstance()) {
            getSub1Builder().mergeFrom(value);
          } else {
            sub1_ = value;
          }
        } else {
          sub1Builder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
       */
      public Builder clearSub1() {
        bitField0_ = (bitField0_ & ~0x00000010);
        sub1_ = null;
        if (sub1Builder_ != null) {
          sub1Builder_.dispose();
          sub1Builder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
       */
      public foo.TestFull.SubMess.SubSubMess.Builder getSub1Builder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getSub1FieldBuilder().getBuilder();
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
       */
      public foo.TestFull.SubMess.SubSubMessOrBuilder getSub1OrBuilder() {
        if (sub1Builder_ != null) {
          return sub1Builder_.getMessageOrBuilder();
        } else {
          return sub1_ == null ?
              foo.TestFull.SubMess.SubSubMess.getDefaultInstance() : sub1_;
        }
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub1 = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.SubMess.SubSubMess, foo.TestFull.SubMess.SubSubMess.Builder, foo.TestFull.SubMess.SubSubMessOrBuilder> 
          getSub1FieldBuilder() {
        if (sub1Builder_ == null) {
          sub1Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
              foo.TestFull.SubMess.SubSubMess, foo.TestFull.SubMess.SubSubMess.Builder, foo.TestFull.SubMess.SubSubMessOrBuilder>(
                  getSub1(),
                  getParentForChildren(),
                  isClean());
          sub1_ = null;
        }
        return sub1Builder_;
      }

      private foo.TestFull.SubMess.SubSubMess sub2_;
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.SubMess.SubSubMess, foo.TestFull.SubMess.SubSubMess.Builder, foo.TestFull.SubMess.SubSubMessOrBuilder> sub2Builder_;
      /**
       * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
       * @return Whether the sub2 field is set.
       */
      public boolean hasSub2() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
       * @return The sub2.
       */
      public foo.TestFull.SubMess.SubSubMess getSub2() {
        if (sub2Builder_ == null) {
          return sub2_ == null ? foo.TestFull.SubMess.SubSubMess.getDefaultInstance() : sub2_;
        } else {
          return sub2Builder_.getMessage();
        }
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
       */
      public Builder setSub2(foo.TestFull.SubMess.SubSubMess value) {
        if (sub2Builder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sub2_ = value;
        } else {
          sub2Builder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
       */
      public Builder setSub2(
          foo.TestFull.SubMess.SubSubMess.Builder builderForValue) {
        if (sub2Builder_ == null) {
          sub2_ = builderForValue.build();
        } else {
          sub2Builder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
       */
      public Builder mergeSub2(foo.TestFull.SubMess.SubSubMess value) {
        if (sub2Builder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            sub2_ != null &&
            sub2_ != foo.TestFull.SubMess.SubSubMess.getDefaultInstance()) {
            getSub2Builder().mergeFrom(value);
          } else {
            sub2_ = value;
          }
        } else {
          sub2Builder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
       */
      public Builder clearSub2() {
        bitField0_ = (bitField0_ & ~0x00000020);
        sub2_ = null;
        if (sub2Builder_ != null) {
          sub2Builder_.dispose();
          sub2Builder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
       */
      public foo.TestFull.SubMess.SubSubMess.Builder getSub2Builder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getSub2FieldBuilder().getBuilder();
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
       */
      public foo.TestFull.SubMess.SubSubMessOrBuilder getSub2OrBuilder() {
        if (sub2Builder_ != null) {
          return sub2Builder_.getMessageOrBuilder();
        } else {
          return sub2_ == null ?
              foo.TestFull.SubMess.SubSubMess.getDefaultInstance() : sub2_;
        }
      }
      /**
       * <code>optional .foo.SubMess.SubSubMess sub2 = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.SubMess.SubSubMess, foo.TestFull.SubMess.SubSubMess.Builder, foo.TestFull.SubMess.SubSubMessOrBuilder> 
          getSub2FieldBuilder() {
        if (sub2Builder_ == null) {
          sub2Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
              foo.TestFull.SubMess.SubSubMess, foo.TestFull.SubMess.SubSubMess.Builder, foo.TestFull.SubMess.SubSubMessOrBuilder>(
                  getSub2(),
                  getParentForChildren(),
                  isClean());
          sub2_ = null;
        }
        return sub2Builder_;
      }
      @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:foo.SubMess)
    }

    // @@protoc_insertion_point(class_scope:foo.SubMess)
    private static final foo.TestFull.SubMess DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.SubMess();
    }

    public static foo.TestFull.SubMess getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.SubMess getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestFieldNo15OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestFieldNo15)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string test = 15;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required string test = 15;</code>
     * @return The test.
     */
    java.lang.String getTest();
    /**
     * <code>required string test = 15;</code>
     * @return The bytes for test.
     */
    com.google.protobuf.ByteString
        getTestBytes();
  }
  /**
   * <pre>
   * should use 1 byte header
   * </pre>
   *
   * Protobuf type {@code foo.TestFieldNo15}
   */
  public static final class TestFieldNo15 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestFieldNo15)
      TestFieldNo15OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestFieldNo15.newBuilder() to construct.
    private TestFieldNo15(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestFieldNo15() {
      test_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestFieldNo15_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestFieldNo15_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestFieldNo15.class, foo.TestFull.TestFieldNo15.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 15;
    @SuppressWarnings("serial")
    private volatile java.lang.Object test_ = "";
    /**
     * <code>required string test = 15;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required string test = 15;</code>
     * @return The test.
     */
    @java.lang.Override
    public java.lang.String getTest() {
      java.lang.Object ref = test_;
      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 (bs.isValidUtf8()) {
          test_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string test = 15;</code>
     * @return The bytes for test.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTestBytes() {
      java.lang.Object ref = test_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        test_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 15, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, test_);
      }
      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 foo.TestFull.TestFieldNo15)) {
        return super.equals(obj);
      }
      foo.TestFull.TestFieldNo15 other = (foo.TestFull.TestFieldNo15) obj;

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

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

    public static foo.TestFull.TestFieldNo15 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 foo.TestFull.TestFieldNo15 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static foo.TestFull.TestFieldNo15 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(foo.TestFull.TestFieldNo15 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>
     * should use 1 byte header
     * </pre>
     *
     * Protobuf type {@code foo.TestFieldNo15}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:foo.TestFieldNo15)
        foo.TestFull.TestFieldNo15OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return foo.TestFull.internal_static_foo_TestFieldNo15_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestFieldNo15_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestFieldNo15.class, foo.TestFull.TestFieldNo15.Builder.class);
      }

      // Construct using foo.TestFull.TestFieldNo15.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestFieldNo15_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo15 getDefaultInstanceForType() {
        return foo.TestFull.TestFieldNo15.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo15 build() {
        foo.TestFull.TestFieldNo15 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo15 buildPartial() {
        foo.TestFull.TestFieldNo15 result = new foo.TestFull.TestFieldNo15(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestFieldNo15 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestFieldNo15) {
          return mergeFrom((foo.TestFull.TestFieldNo15)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestFieldNo15 other) {
        if (other == foo.TestFull.TestFieldNo15.getDefaultInstance()) return this;
        if (other.hasTest()) {
          test_ = other.test_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 122: {
                test_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 122
              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 test_ = "";
      /**
       * <code>required string test = 15;</code>
       * @return Whether the test field is set.
       */
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string test = 15;</code>
       * @return The test.
       */
      public java.lang.String getTest() {
        java.lang.Object ref = test_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            test_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string test = 15;</code>
       * @return The bytes for test.
       */
      public com.google.protobuf.ByteString
          getTestBytes() {
        java.lang.Object ref = test_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          test_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string test = 15;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        test_ = getDefaultInstance().getTest();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 15;</code>
       * @param value The bytes for test to set.
       * @return This builder for chaining.
       */
      public Builder setTestBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        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:foo.TestFieldNo15)
    }

    // @@protoc_insertion_point(class_scope:foo.TestFieldNo15)
    private static final foo.TestFull.TestFieldNo15 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestFieldNo15();
    }

    public static foo.TestFull.TestFieldNo15 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestFieldNo15 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestFieldNo16OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestFieldNo16)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string test = 16;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required string test = 16;</code>
     * @return The test.
     */
    java.lang.String getTest();
    /**
     * <code>required string test = 16;</code>
     * @return The bytes for test.
     */
    com.google.protobuf.ByteString
        getTestBytes();
  }
  /**
   * <pre>
   * requires 2 byte header
   * </pre>
   *
   * Protobuf type {@code foo.TestFieldNo16}
   */
  public static final class TestFieldNo16 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestFieldNo16)
      TestFieldNo16OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestFieldNo16.newBuilder() to construct.
    private TestFieldNo16(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestFieldNo16() {
      test_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestFieldNo16_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestFieldNo16_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestFieldNo16.class, foo.TestFull.TestFieldNo16.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 16;
    @SuppressWarnings("serial")
    private volatile java.lang.Object test_ = "";
    /**
     * <code>required string test = 16;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required string test = 16;</code>
     * @return The test.
     */
    @java.lang.Override
    public java.lang.String getTest() {
      java.lang.Object ref = test_;
      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 (bs.isValidUtf8()) {
          test_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string test = 16;</code>
     * @return The bytes for test.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTestBytes() {
      java.lang.Object ref = test_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        test_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 16, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, test_);
      }
      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 foo.TestFull.TestFieldNo16)) {
        return super.equals(obj);
      }
      foo.TestFull.TestFieldNo16 other = (foo.TestFull.TestFieldNo16) obj;

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

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

    public static foo.TestFull.TestFieldNo16 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 foo.TestFull.TestFieldNo16 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static foo.TestFull.TestFieldNo16 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(foo.TestFull.TestFieldNo16 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>
     * requires 2 byte header
     * </pre>
     *
     * Protobuf type {@code foo.TestFieldNo16}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:foo.TestFieldNo16)
        foo.TestFull.TestFieldNo16OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return foo.TestFull.internal_static_foo_TestFieldNo16_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestFieldNo16_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestFieldNo16.class, foo.TestFull.TestFieldNo16.Builder.class);
      }

      // Construct using foo.TestFull.TestFieldNo16.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestFieldNo16_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo16 getDefaultInstanceForType() {
        return foo.TestFull.TestFieldNo16.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo16 build() {
        foo.TestFull.TestFieldNo16 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo16 buildPartial() {
        foo.TestFull.TestFieldNo16 result = new foo.TestFull.TestFieldNo16(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestFieldNo16 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestFieldNo16) {
          return mergeFrom((foo.TestFull.TestFieldNo16)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestFieldNo16 other) {
        if (other == foo.TestFull.TestFieldNo16.getDefaultInstance()) return this;
        if (other.hasTest()) {
          test_ = other.test_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 130: {
                test_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 130
              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 test_ = "";
      /**
       * <code>required string test = 16;</code>
       * @return Whether the test field is set.
       */
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string test = 16;</code>
       * @return The test.
       */
      public java.lang.String getTest() {
        java.lang.Object ref = test_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            test_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string test = 16;</code>
       * @return The bytes for test.
       */
      public com.google.protobuf.ByteString
          getTestBytes() {
        java.lang.Object ref = test_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          test_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string test = 16;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        test_ = getDefaultInstance().getTest();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 16;</code>
       * @param value The bytes for test to set.
       * @return This builder for chaining.
       */
      public Builder setTestBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        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:foo.TestFieldNo16)
    }

    // @@protoc_insertion_point(class_scope:foo.TestFieldNo16)
    private static final foo.TestFull.TestFieldNo16 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestFieldNo16();
    }

    public static foo.TestFull.TestFieldNo16 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestFieldNo16 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestFieldNo2047OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestFieldNo2047)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string test = 2047;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required string test = 2047;</code>
     * @return The test.
     */
    java.lang.String getTest();
    /**
     * <code>required string test = 2047;</code>
     * @return The bytes for test.
     */
    com.google.protobuf.ByteString
        getTestBytes();
  }
  /**
   * <pre>
   * should use 2 byte header
   * </pre>
   *
   * Protobuf type {@code foo.TestFieldNo2047}
   */
  public static final class TestFieldNo2047 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestFieldNo2047)
      TestFieldNo2047OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestFieldNo2047.newBuilder() to construct.
    private TestFieldNo2047(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestFieldNo2047() {
      test_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestFieldNo2047_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestFieldNo2047_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestFieldNo2047.class, foo.TestFull.TestFieldNo2047.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 2047;
    @SuppressWarnings("serial")
    private volatile java.lang.Object test_ = "";
    /**
     * <code>required string test = 2047;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required string test = 2047;</code>
     * @return The test.
     */
    @java.lang.Override
    public java.lang.String getTest() {
      java.lang.Object ref = test_;
      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 (bs.isValidUtf8()) {
          test_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string test = 2047;</code>
     * @return The bytes for test.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTestBytes() {
      java.lang.Object ref = test_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        test_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2047, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2047, test_);
      }
      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 foo.TestFull.TestFieldNo2047)) {
        return super.equals(obj);
      }
      foo.TestFull.TestFieldNo2047 other = (foo.TestFull.TestFieldNo2047) obj;

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

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

    public static foo.TestFull.TestFieldNo2047 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 foo.TestFull.TestFieldNo2047 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static foo.TestFull.TestFieldNo2047 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(foo.TestFull.TestFieldNo2047 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>
     * should use 2 byte header
     * </pre>
     *
     * Protobuf type {@code foo.TestFieldNo2047}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:foo.TestFieldNo2047)
        foo.TestFull.TestFieldNo2047OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return foo.TestFull.internal_static_foo_TestFieldNo2047_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestFieldNo2047_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestFieldNo2047.class, foo.TestFull.TestFieldNo2047.Builder.class);
      }

      // Construct using foo.TestFull.TestFieldNo2047.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestFieldNo2047_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo2047 getDefaultInstanceForType() {
        return foo.TestFull.TestFieldNo2047.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo2047 build() {
        foo.TestFull.TestFieldNo2047 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo2047 buildPartial() {
        foo.TestFull.TestFieldNo2047 result = new foo.TestFull.TestFieldNo2047(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestFieldNo2047 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestFieldNo2047) {
          return mergeFrom((foo.TestFull.TestFieldNo2047)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestFieldNo2047 other) {
        if (other == foo.TestFull.TestFieldNo2047.getDefaultInstance()) return this;
        if (other.hasTest()) {
          test_ = other.test_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 16378: {
                test_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 16378
              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 test_ = "";
      /**
       * <code>required string test = 2047;</code>
       * @return Whether the test field is set.
       */
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string test = 2047;</code>
       * @return The test.
       */
      public java.lang.String getTest() {
        java.lang.Object ref = test_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            test_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string test = 2047;</code>
       * @return The bytes for test.
       */
      public com.google.protobuf.ByteString
          getTestBytes() {
        java.lang.Object ref = test_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          test_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string test = 2047;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 2047;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        test_ = getDefaultInstance().getTest();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 2047;</code>
       * @param value The bytes for test to set.
       * @return This builder for chaining.
       */
      public Builder setTestBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        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:foo.TestFieldNo2047)
    }

    // @@protoc_insertion_point(class_scope:foo.TestFieldNo2047)
    private static final foo.TestFull.TestFieldNo2047 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestFieldNo2047();
    }

    public static foo.TestFull.TestFieldNo2047 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestFieldNo2047 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestFieldNo2048OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestFieldNo2048)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string test = 2048;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required string test = 2048;</code>
     * @return The test.
     */
    java.lang.String getTest();
    /**
     * <code>required string test = 2048;</code>
     * @return The bytes for test.
     */
    com.google.protobuf.ByteString
        getTestBytes();
  }
  /**
   * <pre>
   * requires 3 byte header
   * </pre>
   *
   * Protobuf type {@code foo.TestFieldNo2048}
   */
  public static final class TestFieldNo2048 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestFieldNo2048)
      TestFieldNo2048OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestFieldNo2048.newBuilder() to construct.
    private TestFieldNo2048(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestFieldNo2048() {
      test_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestFieldNo2048_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestFieldNo2048_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestFieldNo2048.class, foo.TestFull.TestFieldNo2048.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 2048;
    @SuppressWarnings("serial")
    private volatile java.lang.Object test_ = "";
    /**
     * <code>required string test = 2048;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required string test = 2048;</code>
     * @return The test.
     */
    @java.lang.Override
    public java.lang.String getTest() {
      java.lang.Object ref = test_;
      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 (bs.isValidUtf8()) {
          test_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string test = 2048;</code>
     * @return The bytes for test.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTestBytes() {
      java.lang.Object ref = test_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        test_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2048, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2048, test_);
      }
      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 foo.TestFull.TestFieldNo2048)) {
        return super.equals(obj);
      }
      foo.TestFull.TestFieldNo2048 other = (foo.TestFull.TestFieldNo2048) obj;

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

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

    public static foo.TestFull.TestFieldNo2048 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 foo.TestFull.TestFieldNo2048 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static foo.TestFull.TestFieldNo2048 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(foo.TestFull.TestFieldNo2048 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>
     * requires 3 byte header
     * </pre>
     *
     * Protobuf type {@code foo.TestFieldNo2048}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:foo.TestFieldNo2048)
        foo.TestFull.TestFieldNo2048OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return foo.TestFull.internal_static_foo_TestFieldNo2048_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestFieldNo2048_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestFieldNo2048.class, foo.TestFull.TestFieldNo2048.Builder.class);
      }

      // Construct using foo.TestFull.TestFieldNo2048.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestFieldNo2048_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo2048 getDefaultInstanceForType() {
        return foo.TestFull.TestFieldNo2048.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo2048 build() {
        foo.TestFull.TestFieldNo2048 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo2048 buildPartial() {
        foo.TestFull.TestFieldNo2048 result = new foo.TestFull.TestFieldNo2048(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestFieldNo2048 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestFieldNo2048) {
          return mergeFrom((foo.TestFull.TestFieldNo2048)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestFieldNo2048 other) {
        if (other == foo.TestFull.TestFieldNo2048.getDefaultInstance()) return this;
        if (other.hasTest()) {
          test_ = other.test_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 16386: {
                test_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 16386
              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 test_ = "";
      /**
       * <code>required string test = 2048;</code>
       * @return Whether the test field is set.
       */
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string test = 2048;</code>
       * @return The test.
       */
      public java.lang.String getTest() {
        java.lang.Object ref = test_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            test_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string test = 2048;</code>
       * @return The bytes for test.
       */
      public com.google.protobuf.ByteString
          getTestBytes() {
        java.lang.Object ref = test_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          test_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string test = 2048;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 2048;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        test_ = getDefaultInstance().getTest();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 2048;</code>
       * @param value The bytes for test to set.
       * @return This builder for chaining.
       */
      public Builder setTestBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        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:foo.TestFieldNo2048)
    }

    // @@protoc_insertion_point(class_scope:foo.TestFieldNo2048)
    private static final foo.TestFull.TestFieldNo2048 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestFieldNo2048();
    }

    public static foo.TestFull.TestFieldNo2048 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestFieldNo2048 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestFieldNo262143OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestFieldNo262143)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string test = 262143;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required string test = 262143;</code>
     * @return The test.
     */
    java.lang.String getTest();
    /**
     * <code>required string test = 262143;</code>
     * @return The bytes for test.
     */
    com.google.protobuf.ByteString
        getTestBytes();
  }
  /**
   * <pre>
   * should use 3 byte header
   * </pre>
   *
   * Protobuf type {@code foo.TestFieldNo262143}
   */
  public static final class TestFieldNo262143 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestFieldNo262143)
      TestFieldNo262143OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestFieldNo262143.newBuilder() to construct.
    private TestFieldNo262143(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestFieldNo262143() {
      test_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestFieldNo262143_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestFieldNo262143_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestFieldNo262143.class, foo.TestFull.TestFieldNo262143.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 262143;
    @SuppressWarnings("serial")
    private volatile java.lang.Object test_ = "";
    /**
     * <code>required string test = 262143;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required string test = 262143;</code>
     * @return The test.
     */
    @java.lang.Override
    public java.lang.String getTest() {
      java.lang.Object ref = test_;
      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 (bs.isValidUtf8()) {
          test_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string test = 262143;</code>
     * @return The bytes for test.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTestBytes() {
      java.lang.Object ref = test_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        test_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 262143, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(262143, test_);
      }
      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 foo.TestFull.TestFieldNo262143)) {
        return super.equals(obj);
      }
      foo.TestFull.TestFieldNo262143 other = (foo.TestFull.TestFieldNo262143) obj;

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

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

    public static foo.TestFull.TestFieldNo262143 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 foo.TestFull.TestFieldNo262143 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static foo.TestFull.TestFieldNo262143 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(foo.TestFull.TestFieldNo262143 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>
     * should use 3 byte header
     * </pre>
     *
     * Protobuf type {@code foo.TestFieldNo262143}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:foo.TestFieldNo262143)
        foo.TestFull.TestFieldNo262143OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return foo.TestFull.internal_static_foo_TestFieldNo262143_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestFieldNo262143_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestFieldNo262143.class, foo.TestFull.TestFieldNo262143.Builder.class);
      }

      // Construct using foo.TestFull.TestFieldNo262143.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestFieldNo262143_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo262143 getDefaultInstanceForType() {
        return foo.TestFull.TestFieldNo262143.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo262143 build() {
        foo.TestFull.TestFieldNo262143 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo262143 buildPartial() {
        foo.TestFull.TestFieldNo262143 result = new foo.TestFull.TestFieldNo262143(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestFieldNo262143 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestFieldNo262143) {
          return mergeFrom((foo.TestFull.TestFieldNo262143)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestFieldNo262143 other) {
        if (other == foo.TestFull.TestFieldNo262143.getDefaultInstance()) return this;
        if (other.hasTest()) {
          test_ = other.test_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 2097146: {
                test_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 2097146
              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 test_ = "";
      /**
       * <code>required string test = 262143;</code>
       * @return Whether the test field is set.
       */
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string test = 262143;</code>
       * @return The test.
       */
      public java.lang.String getTest() {
        java.lang.Object ref = test_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            test_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string test = 262143;</code>
       * @return The bytes for test.
       */
      public com.google.protobuf.ByteString
          getTestBytes() {
        java.lang.Object ref = test_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          test_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string test = 262143;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 262143;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        test_ = getDefaultInstance().getTest();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 262143;</code>
       * @param value The bytes for test to set.
       * @return This builder for chaining.
       */
      public Builder setTestBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        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:foo.TestFieldNo262143)
    }

    // @@protoc_insertion_point(class_scope:foo.TestFieldNo262143)
    private static final foo.TestFull.TestFieldNo262143 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestFieldNo262143();
    }

    public static foo.TestFull.TestFieldNo262143 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestFieldNo262143 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestFieldNo262144OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestFieldNo262144)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string test = 262144;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required string test = 262144;</code>
     * @return The test.
     */
    java.lang.String getTest();
    /**
     * <code>required string test = 262144;</code>
     * @return The bytes for test.
     */
    com.google.protobuf.ByteString
        getTestBytes();
  }
  /**
   * <pre>
   * requires 4 byte header
   * </pre>
   *
   * Protobuf type {@code foo.TestFieldNo262144}
   */
  public static final class TestFieldNo262144 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestFieldNo262144)
      TestFieldNo262144OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestFieldNo262144.newBuilder() to construct.
    private TestFieldNo262144(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestFieldNo262144() {
      test_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestFieldNo262144_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestFieldNo262144_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestFieldNo262144.class, foo.TestFull.TestFieldNo262144.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 262144;
    @SuppressWarnings("serial")
    private volatile java.lang.Object test_ = "";
    /**
     * <code>required string test = 262144;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required string test = 262144;</code>
     * @return The test.
     */
    @java.lang.Override
    public java.lang.String getTest() {
      java.lang.Object ref = test_;
      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 (bs.isValidUtf8()) {
          test_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string test = 262144;</code>
     * @return The bytes for test.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTestBytes() {
      java.lang.Object ref = test_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        test_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 262144, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(262144, test_);
      }
      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 foo.TestFull.TestFieldNo262144)) {
        return super.equals(obj);
      }
      foo.TestFull.TestFieldNo262144 other = (foo.TestFull.TestFieldNo262144) obj;

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

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

    public static foo.TestFull.TestFieldNo262144 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 foo.TestFull.TestFieldNo262144 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static foo.TestFull.TestFieldNo262144 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(foo.TestFull.TestFieldNo262144 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>
     * requires 4 byte header
     * </pre>
     *
     * Protobuf type {@code foo.TestFieldNo262144}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:foo.TestFieldNo262144)
        foo.TestFull.TestFieldNo262144OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return foo.TestFull.internal_static_foo_TestFieldNo262144_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestFieldNo262144_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestFieldNo262144.class, foo.TestFull.TestFieldNo262144.Builder.class);
      }

      // Construct using foo.TestFull.TestFieldNo262144.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestFieldNo262144_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo262144 getDefaultInstanceForType() {
        return foo.TestFull.TestFieldNo262144.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo262144 build() {
        foo.TestFull.TestFieldNo262144 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo262144 buildPartial() {
        foo.TestFull.TestFieldNo262144 result = new foo.TestFull.TestFieldNo262144(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestFieldNo262144 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestFieldNo262144) {
          return mergeFrom((foo.TestFull.TestFieldNo262144)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestFieldNo262144 other) {
        if (other == foo.TestFull.TestFieldNo262144.getDefaultInstance()) return this;
        if (other.hasTest()) {
          test_ = other.test_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 2097154: {
                test_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 2097154
              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 test_ = "";
      /**
       * <code>required string test = 262144;</code>
       * @return Whether the test field is set.
       */
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string test = 262144;</code>
       * @return The test.
       */
      public java.lang.String getTest() {
        java.lang.Object ref = test_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            test_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string test = 262144;</code>
       * @return The bytes for test.
       */
      public com.google.protobuf.ByteString
          getTestBytes() {
        java.lang.Object ref = test_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          test_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string test = 262144;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 262144;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        test_ = getDefaultInstance().getTest();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 262144;</code>
       * @param value The bytes for test to set.
       * @return This builder for chaining.
       */
      public Builder setTestBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        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:foo.TestFieldNo262144)
    }

    // @@protoc_insertion_point(class_scope:foo.TestFieldNo262144)
    private static final foo.TestFull.TestFieldNo262144 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestFieldNo262144();
    }

    public static foo.TestFull.TestFieldNo262144 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestFieldNo262144 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestFieldNo33554431OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestFieldNo33554431)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string test = 33554431;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required string test = 33554431;</code>
     * @return The test.
     */
    java.lang.String getTest();
    /**
     * <code>required string test = 33554431;</code>
     * @return The bytes for test.
     */
    com.google.protobuf.ByteString
        getTestBytes();
  }
  /**
   * <pre>
   * should use 4 byte header
   * </pre>
   *
   * Protobuf type {@code foo.TestFieldNo33554431}
   */
  public static final class TestFieldNo33554431 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestFieldNo33554431)
      TestFieldNo33554431OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestFieldNo33554431.newBuilder() to construct.
    private TestFieldNo33554431(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestFieldNo33554431() {
      test_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestFieldNo33554431_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestFieldNo33554431_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestFieldNo33554431.class, foo.TestFull.TestFieldNo33554431.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 33554431;
    @SuppressWarnings("serial")
    private volatile java.lang.Object test_ = "";
    /**
     * <code>required string test = 33554431;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required string test = 33554431;</code>
     * @return The test.
     */
    @java.lang.Override
    public java.lang.String getTest() {
      java.lang.Object ref = test_;
      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 (bs.isValidUtf8()) {
          test_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string test = 33554431;</code>
     * @return The bytes for test.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTestBytes() {
      java.lang.Object ref = test_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        test_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 33554431, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(33554431, test_);
      }
      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 foo.TestFull.TestFieldNo33554431)) {
        return super.equals(obj);
      }
      foo.TestFull.TestFieldNo33554431 other = (foo.TestFull.TestFieldNo33554431) obj;

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

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

    public static foo.TestFull.TestFieldNo33554431 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 foo.TestFull.TestFieldNo33554431 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static foo.TestFull.TestFieldNo33554431 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(foo.TestFull.TestFieldNo33554431 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>
     * should use 4 byte header
     * </pre>
     *
     * Protobuf type {@code foo.TestFieldNo33554431}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:foo.TestFieldNo33554431)
        foo.TestFull.TestFieldNo33554431OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return foo.TestFull.internal_static_foo_TestFieldNo33554431_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestFieldNo33554431_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestFieldNo33554431.class, foo.TestFull.TestFieldNo33554431.Builder.class);
      }

      // Construct using foo.TestFull.TestFieldNo33554431.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestFieldNo33554431_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo33554431 getDefaultInstanceForType() {
        return foo.TestFull.TestFieldNo33554431.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo33554431 build() {
        foo.TestFull.TestFieldNo33554431 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo33554431 buildPartial() {
        foo.TestFull.TestFieldNo33554431 result = new foo.TestFull.TestFieldNo33554431(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestFieldNo33554431 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestFieldNo33554431) {
          return mergeFrom((foo.TestFull.TestFieldNo33554431)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestFieldNo33554431 other) {
        if (other == foo.TestFull.TestFieldNo33554431.getDefaultInstance()) return this;
        if (other.hasTest()) {
          test_ = other.test_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 268435450: {
                test_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 268435450
              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 test_ = "";
      /**
       * <code>required string test = 33554431;</code>
       * @return Whether the test field is set.
       */
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string test = 33554431;</code>
       * @return The test.
       */
      public java.lang.String getTest() {
        java.lang.Object ref = test_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            test_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string test = 33554431;</code>
       * @return The bytes for test.
       */
      public com.google.protobuf.ByteString
          getTestBytes() {
        java.lang.Object ref = test_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          test_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string test = 33554431;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 33554431;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        test_ = getDefaultInstance().getTest();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 33554431;</code>
       * @param value The bytes for test to set.
       * @return This builder for chaining.
       */
      public Builder setTestBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        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:foo.TestFieldNo33554431)
    }

    // @@protoc_insertion_point(class_scope:foo.TestFieldNo33554431)
    private static final foo.TestFull.TestFieldNo33554431 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestFieldNo33554431();
    }

    public static foo.TestFull.TestFieldNo33554431 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestFieldNo33554431 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestFieldNo33554432OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestFieldNo33554432)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string test = 33554432;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required string test = 33554432;</code>
     * @return The test.
     */
    java.lang.String getTest();
    /**
     * <code>required string test = 33554432;</code>
     * @return The bytes for test.
     */
    com.google.protobuf.ByteString
        getTestBytes();
  }
  /**
   * <pre>
   * requires 5 byte header
   * </pre>
   *
   * Protobuf type {@code foo.TestFieldNo33554432}
   */
  public static final class TestFieldNo33554432 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestFieldNo33554432)
      TestFieldNo33554432OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestFieldNo33554432.newBuilder() to construct.
    private TestFieldNo33554432(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestFieldNo33554432() {
      test_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestFieldNo33554432_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestFieldNo33554432_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestFieldNo33554432.class, foo.TestFull.TestFieldNo33554432.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 33554432;
    @SuppressWarnings("serial")
    private volatile java.lang.Object test_ = "";
    /**
     * <code>required string test = 33554432;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required string test = 33554432;</code>
     * @return The test.
     */
    @java.lang.Override
    public java.lang.String getTest() {
      java.lang.Object ref = test_;
      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 (bs.isValidUtf8()) {
          test_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string test = 33554432;</code>
     * @return The bytes for test.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTestBytes() {
      java.lang.Object ref = test_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        test_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 33554432, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(33554432, test_);
      }
      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 foo.TestFull.TestFieldNo33554432)) {
        return super.equals(obj);
      }
      foo.TestFull.TestFieldNo33554432 other = (foo.TestFull.TestFieldNo33554432) obj;

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

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

    public static foo.TestFull.TestFieldNo33554432 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 foo.TestFull.TestFieldNo33554432 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static foo.TestFull.TestFieldNo33554432 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(foo.TestFull.TestFieldNo33554432 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>
     * requires 5 byte header
     * </pre>
     *
     * Protobuf type {@code foo.TestFieldNo33554432}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:foo.TestFieldNo33554432)
        foo.TestFull.TestFieldNo33554432OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return foo.TestFull.internal_static_foo_TestFieldNo33554432_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestFieldNo33554432_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestFieldNo33554432.class, foo.TestFull.TestFieldNo33554432.Builder.class);
      }

      // Construct using foo.TestFull.TestFieldNo33554432.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestFieldNo33554432_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo33554432 getDefaultInstanceForType() {
        return foo.TestFull.TestFieldNo33554432.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo33554432 build() {
        foo.TestFull.TestFieldNo33554432 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldNo33554432 buildPartial() {
        foo.TestFull.TestFieldNo33554432 result = new foo.TestFull.TestFieldNo33554432(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestFieldNo33554432 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestFieldNo33554432) {
          return mergeFrom((foo.TestFull.TestFieldNo33554432)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestFieldNo33554432 other) {
        if (other == foo.TestFull.TestFieldNo33554432.getDefaultInstance()) return this;
        if (other.hasTest()) {
          test_ = other.test_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 268435458: {
                test_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 268435458
              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 test_ = "";
      /**
       * <code>required string test = 33554432;</code>
       * @return Whether the test field is set.
       */
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string test = 33554432;</code>
       * @return The test.
       */
      public java.lang.String getTest() {
        java.lang.Object ref = test_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            test_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string test = 33554432;</code>
       * @return The bytes for test.
       */
      public com.google.protobuf.ByteString
          getTestBytes() {
        java.lang.Object ref = test_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          test_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string test = 33554432;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 33554432;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        test_ = getDefaultInstance().getTest();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 33554432;</code>
       * @param value The bytes for test to set.
       * @return This builder for chaining.
       */
      public Builder setTestBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        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:foo.TestFieldNo33554432)
    }

    // @@protoc_insertion_point(class_scope:foo.TestFieldNo33554432)
    private static final foo.TestFull.TestFieldNo33554432 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestFieldNo33554432();
    }

    public static foo.TestFull.TestFieldNo33554432 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestFieldNo33554432 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMess)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated int32 test_int32 = 1;</code>
     * @return A list containing the testInt32.
     */
    java.util.List<java.lang.Integer> getTestInt32List();
    /**
     * <code>repeated int32 test_int32 = 1;</code>
     * @return The count of testInt32.
     */
    int getTestInt32Count();
    /**
     * <code>repeated int32 test_int32 = 1;</code>
     * @param index The index of the element to return.
     * @return The testInt32 at the given index.
     */
    int getTestInt32(int index);

    /**
     * <code>repeated sint32 test_sint32 = 2;</code>
     * @return A list containing the testSint32.
     */
    java.util.List<java.lang.Integer> getTestSint32List();
    /**
     * <code>repeated sint32 test_sint32 = 2;</code>
     * @return The count of testSint32.
     */
    int getTestSint32Count();
    /**
     * <code>repeated sint32 test_sint32 = 2;</code>
     * @param index The index of the element to return.
     * @return The testSint32 at the given index.
     */
    int getTestSint32(int index);

    /**
     * <code>repeated sfixed32 test_sfixed32 = 3;</code>
     * @return A list containing the testSfixed32.
     */
    java.util.List<java.lang.Integer> getTestSfixed32List();
    /**
     * <code>repeated sfixed32 test_sfixed32 = 3;</code>
     * @return The count of testSfixed32.
     */
    int getTestSfixed32Count();
    /**
     * <code>repeated sfixed32 test_sfixed32 = 3;</code>
     * @param index The index of the element to return.
     * @return The testSfixed32 at the given index.
     */
    int getTestSfixed32(int index);

    /**
     * <code>repeated int64 test_int64 = 4;</code>
     * @return A list containing the testInt64.
     */
    java.util.List<java.lang.Long> getTestInt64List();
    /**
     * <code>repeated int64 test_int64 = 4;</code>
     * @return The count of testInt64.
     */
    int getTestInt64Count();
    /**
     * <code>repeated int64 test_int64 = 4;</code>
     * @param index The index of the element to return.
     * @return The testInt64 at the given index.
     */
    long getTestInt64(int index);

    /**
     * <code>repeated sint64 test_sint64 = 5;</code>
     * @return A list containing the testSint64.
     */
    java.util.List<java.lang.Long> getTestSint64List();
    /**
     * <code>repeated sint64 test_sint64 = 5;</code>
     * @return The count of testSint64.
     */
    int getTestSint64Count();
    /**
     * <code>repeated sint64 test_sint64 = 5;</code>
     * @param index The index of the element to return.
     * @return The testSint64 at the given index.
     */
    long getTestSint64(int index);

    /**
     * <code>repeated sfixed64 test_sfixed64 = 6;</code>
     * @return A list containing the testSfixed64.
     */
    java.util.List<java.lang.Long> getTestSfixed64List();
    /**
     * <code>repeated sfixed64 test_sfixed64 = 6;</code>
     * @return The count of testSfixed64.
     */
    int getTestSfixed64Count();
    /**
     * <code>repeated sfixed64 test_sfixed64 = 6;</code>
     * @param index The index of the element to return.
     * @return The testSfixed64 at the given index.
     */
    long getTestSfixed64(int index);

    /**
     * <code>repeated uint32 test_uint32 = 7;</code>
     * @return A list containing the testUint32.
     */
    java.util.List<java.lang.Integer> getTestUint32List();
    /**
     * <code>repeated uint32 test_uint32 = 7;</code>
     * @return The count of testUint32.
     */
    int getTestUint32Count();
    /**
     * <code>repeated uint32 test_uint32 = 7;</code>
     * @param index The index of the element to return.
     * @return The testUint32 at the given index.
     */
    int getTestUint32(int index);

    /**
     * <code>repeated fixed32 test_fixed32 = 8;</code>
     * @return A list containing the testFixed32.
     */
    java.util.List<java.lang.Integer> getTestFixed32List();
    /**
     * <code>repeated fixed32 test_fixed32 = 8;</code>
     * @return The count of testFixed32.
     */
    int getTestFixed32Count();
    /**
     * <code>repeated fixed32 test_fixed32 = 8;</code>
     * @param index The index of the element to return.
     * @return The testFixed32 at the given index.
     */
    int getTestFixed32(int index);

    /**
     * <code>repeated uint64 test_uint64 = 9;</code>
     * @return A list containing the testUint64.
     */
    java.util.List<java.lang.Long> getTestUint64List();
    /**
     * <code>repeated uint64 test_uint64 = 9;</code>
     * @return The count of testUint64.
     */
    int getTestUint64Count();
    /**
     * <code>repeated uint64 test_uint64 = 9;</code>
     * @param index The index of the element to return.
     * @return The testUint64 at the given index.
     */
    long getTestUint64(int index);

    /**
     * <code>repeated fixed64 test_fixed64 = 10;</code>
     * @return A list containing the testFixed64.
     */
    java.util.List<java.lang.Long> getTestFixed64List();
    /**
     * <code>repeated fixed64 test_fixed64 = 10;</code>
     * @return The count of testFixed64.
     */
    int getTestFixed64Count();
    /**
     * <code>repeated fixed64 test_fixed64 = 10;</code>
     * @param index The index of the element to return.
     * @return The testFixed64 at the given index.
     */
    long getTestFixed64(int index);

    /**
     * <code>repeated float test_float = 11;</code>
     * @return A list containing the testFloat.
     */
    java.util.List<java.lang.Float> getTestFloatList();
    /**
     * <code>repeated float test_float = 11;</code>
     * @return The count of testFloat.
     */
    int getTestFloatCount();
    /**
     * <code>repeated float test_float = 11;</code>
     * @param index The index of the element to return.
     * @return The testFloat at the given index.
     */
    float getTestFloat(int index);

    /**
     * <code>repeated double test_double = 12;</code>
     * @return A list containing the testDouble.
     */
    java.util.List<java.lang.Double> getTestDoubleList();
    /**
     * <code>repeated double test_double = 12;</code>
     * @return The count of testDouble.
     */
    int getTestDoubleCount();
    /**
     * <code>repeated double test_double = 12;</code>
     * @param index The index of the element to return.
     * @return The testDouble at the given index.
     */
    double getTestDouble(int index);

    /**
     * <code>repeated bool test_boolean = 13;</code>
     * @return A list containing the testBoolean.
     */
    java.util.List<java.lang.Boolean> getTestBooleanList();
    /**
     * <code>repeated bool test_boolean = 13;</code>
     * @return The count of testBoolean.
     */
    int getTestBooleanCount();
    /**
     * <code>repeated bool test_boolean = 13;</code>
     * @param index The index of the element to return.
     * @return The testBoolean at the given index.
     */
    boolean getTestBoolean(int index);

    /**
     * <code>repeated .foo.TestEnumSmall test_enum_small = 14;</code>
     * @return A list containing the testEnumSmall.
     */
    java.util.List<foo.TestFull.TestEnumSmall> getTestEnumSmallList();
    /**
     * <code>repeated .foo.TestEnumSmall test_enum_small = 14;</code>
     * @return The count of testEnumSmall.
     */
    int getTestEnumSmallCount();
    /**
     * <code>repeated .foo.TestEnumSmall test_enum_small = 14;</code>
     * @param index The index of the element to return.
     * @return The testEnumSmall at the given index.
     */
    foo.TestFull.TestEnumSmall getTestEnumSmall(int index);

    /**
     * <code>repeated .foo.TestEnum test_enum = 15;</code>
     * @return A list containing the testEnum.
     */
    java.util.List<foo.TestFull.TestEnum> getTestEnumList();
    /**
     * <code>repeated .foo.TestEnum test_enum = 15;</code>
     * @return The count of testEnum.
     */
    int getTestEnumCount();
    /**
     * <code>repeated .foo.TestEnum test_enum = 15;</code>
     * @param index The index of the element to return.
     * @return The testEnum at the given index.
     */
    foo.TestFull.TestEnum getTestEnum(int index);

    /**
     * <code>repeated string test_string = 16;</code>
     * @return A list containing the testString.
     */
    java.util.List<java.lang.String>
        getTestStringList();
    /**
     * <code>repeated string test_string = 16;</code>
     * @return The count of testString.
     */
    int getTestStringCount();
    /**
     * <code>repeated string test_string = 16;</code>
     * @param index The index of the element to return.
     * @return The testString at the given index.
     */
    java.lang.String getTestString(int index);
    /**
     * <code>repeated string test_string = 16;</code>
     * @param index The index of the value to return.
     * @return The bytes of the testString at the given index.
     */
    com.google.protobuf.ByteString
        getTestStringBytes(int index);

    /**
     * <code>repeated bytes test_bytes = 17;</code>
     * @return A list containing the testBytes.
     */
    java.util.List<com.google.protobuf.ByteString> getTestBytesList();
    /**
     * <code>repeated bytes test_bytes = 17;</code>
     * @return The count of testBytes.
     */
    int getTestBytesCount();
    /**
     * <code>repeated bytes test_bytes = 17;</code>
     * @param index The index of the element to return.
     * @return The testBytes at the given index.
     */
    com.google.protobuf.ByteString getTestBytes(int index);

    /**
     * <code>repeated .foo.SubMess test_message = 18;</code>
     */
    java.util.List<foo.TestFull.SubMess> 
        getTestMessageList();
    /**
     * <code>repeated .foo.SubMess test_message = 18;</code>
     */
    foo.TestFull.SubMess getTestMessage(int index);
    /**
     * <code>repeated .foo.SubMess test_message = 18;</code>
     */
    int getTestMessageCount();
    /**
     * <code>repeated .foo.SubMess test_message = 18;</code>
     */
    java.util.List<? extends foo.TestFull.SubMessOrBuilder> 
        getTestMessageOrBuilderList();
    /**
     * <code>repeated .foo.SubMess test_message = 18;</code>
     */
    foo.TestFull.SubMessOrBuilder getTestMessageOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code foo.TestMess}
   */
  public static final class TestMess extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMess)
      TestMessOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMess.newBuilder() to construct.
    private TestMess(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMess() {
      testInt32_ = emptyIntList();
      testSint32_ = emptyIntList();
      testSfixed32_ = emptyIntList();
      testInt64_ = emptyLongList();
      testSint64_ = emptyLongList();
      testSfixed64_ = emptyLongList();
      testUint32_ = emptyIntList();
      testFixed32_ = emptyIntList();
      testUint64_ = emptyLongList();
      testFixed64_ = emptyLongList();
      testFloat_ = emptyFloatList();
      testDouble_ = emptyDoubleList();
      testBoolean_ = emptyBooleanList();
      testEnumSmall_ = java.util.Collections.emptyList();
      testEnum_ = java.util.Collections.emptyList();
      testString_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      testBytes_ = java.util.Collections.emptyList();
      testMessage_ = java.util.Collections.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMess_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMess_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMess.class, foo.TestFull.TestMess.Builder.class);
    }

    public static final int TEST_INT32_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList testInt32_ =
        emptyIntList();
    /**
     * <code>repeated int32 test_int32 = 1;</code>
     * @return A list containing the testInt32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTestInt32List() {
      return testInt32_;
    }
    /**
     * <code>repeated int32 test_int32 = 1;</code>
     * @return The count of testInt32.
     */
    public int getTestInt32Count() {
      return testInt32_.size();
    }
    /**
     * <code>repeated int32 test_int32 = 1;</code>
     * @param index The index of the element to return.
     * @return The testInt32 at the given index.
     */
    public int getTestInt32(int index) {
      return testInt32_.getInt(index);
    }

    public static final int TEST_SINT32_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList testSint32_ =
        emptyIntList();
    /**
     * <code>repeated sint32 test_sint32 = 2;</code>
     * @return A list containing the testSint32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTestSint32List() {
      return testSint32_;
    }
    /**
     * <code>repeated sint32 test_sint32 = 2;</code>
     * @return The count of testSint32.
     */
    public int getTestSint32Count() {
      return testSint32_.size();
    }
    /**
     * <code>repeated sint32 test_sint32 = 2;</code>
     * @param index The index of the element to return.
     * @return The testSint32 at the given index.
     */
    public int getTestSint32(int index) {
      return testSint32_.getInt(index);
    }

    public static final int TEST_SFIXED32_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList testSfixed32_ =
        emptyIntList();
    /**
     * <code>repeated sfixed32 test_sfixed32 = 3;</code>
     * @return A list containing the testSfixed32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTestSfixed32List() {
      return testSfixed32_;
    }
    /**
     * <code>repeated sfixed32 test_sfixed32 = 3;</code>
     * @return The count of testSfixed32.
     */
    public int getTestSfixed32Count() {
      return testSfixed32_.size();
    }
    /**
     * <code>repeated sfixed32 test_sfixed32 = 3;</code>
     * @param index The index of the element to return.
     * @return The testSfixed32 at the given index.
     */
    public int getTestSfixed32(int index) {
      return testSfixed32_.getInt(index);
    }

    public static final int TEST_INT64_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList testInt64_ =
        emptyLongList();
    /**
     * <code>repeated int64 test_int64 = 4;</code>
     * @return A list containing the testInt64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getTestInt64List() {
      return testInt64_;
    }
    /**
     * <code>repeated int64 test_int64 = 4;</code>
     * @return The count of testInt64.
     */
    public int getTestInt64Count() {
      return testInt64_.size();
    }
    /**
     * <code>repeated int64 test_int64 = 4;</code>
     * @param index The index of the element to return.
     * @return The testInt64 at the given index.
     */
    public long getTestInt64(int index) {
      return testInt64_.getLong(index);
    }

    public static final int TEST_SINT64_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList testSint64_ =
        emptyLongList();
    /**
     * <code>repeated sint64 test_sint64 = 5;</code>
     * @return A list containing the testSint64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getTestSint64List() {
      return testSint64_;
    }
    /**
     * <code>repeated sint64 test_sint64 = 5;</code>
     * @return The count of testSint64.
     */
    public int getTestSint64Count() {
      return testSint64_.size();
    }
    /**
     * <code>repeated sint64 test_sint64 = 5;</code>
     * @param index The index of the element to return.
     * @return The testSint64 at the given index.
     */
    public long getTestSint64(int index) {
      return testSint64_.getLong(index);
    }

    public static final int TEST_SFIXED64_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList testSfixed64_ =
        emptyLongList();
    /**
     * <code>repeated sfixed64 test_sfixed64 = 6;</code>
     * @return A list containing the testSfixed64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getTestSfixed64List() {
      return testSfixed64_;
    }
    /**
     * <code>repeated sfixed64 test_sfixed64 = 6;</code>
     * @return The count of testSfixed64.
     */
    public int getTestSfixed64Count() {
      return testSfixed64_.size();
    }
    /**
     * <code>repeated sfixed64 test_sfixed64 = 6;</code>
     * @param index The index of the element to return.
     * @return The testSfixed64 at the given index.
     */
    public long getTestSfixed64(int index) {
      return testSfixed64_.getLong(index);
    }

    public static final int TEST_UINT32_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList testUint32_ =
        emptyIntList();
    /**
     * <code>repeated uint32 test_uint32 = 7;</code>
     * @return A list containing the testUint32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTestUint32List() {
      return testUint32_;
    }
    /**
     * <code>repeated uint32 test_uint32 = 7;</code>
     * @return The count of testUint32.
     */
    public int getTestUint32Count() {
      return testUint32_.size();
    }
    /**
     * <code>repeated uint32 test_uint32 = 7;</code>
     * @param index The index of the element to return.
     * @return The testUint32 at the given index.
     */
    public int getTestUint32(int index) {
      return testUint32_.getInt(index);
    }

    public static final int TEST_FIXED32_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList testFixed32_ =
        emptyIntList();
    /**
     * <code>repeated fixed32 test_fixed32 = 8;</code>
     * @return A list containing the testFixed32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTestFixed32List() {
      return testFixed32_;
    }
    /**
     * <code>repeated fixed32 test_fixed32 = 8;</code>
     * @return The count of testFixed32.
     */
    public int getTestFixed32Count() {
      return testFixed32_.size();
    }
    /**
     * <code>repeated fixed32 test_fixed32 = 8;</code>
     * @param index The index of the element to return.
     * @return The testFixed32 at the given index.
     */
    public int getTestFixed32(int index) {
      return testFixed32_.getInt(index);
    }

    public static final int TEST_UINT64_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList testUint64_ =
        emptyLongList();
    /**
     * <code>repeated uint64 test_uint64 = 9;</code>
     * @return A list containing the testUint64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getTestUint64List() {
      return testUint64_;
    }
    /**
     * <code>repeated uint64 test_uint64 = 9;</code>
     * @return The count of testUint64.
     */
    public int getTestUint64Count() {
      return testUint64_.size();
    }
    /**
     * <code>repeated uint64 test_uint64 = 9;</code>
     * @param index The index of the element to return.
     * @return The testUint64 at the given index.
     */
    public long getTestUint64(int index) {
      return testUint64_.getLong(index);
    }

    public static final int TEST_FIXED64_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList testFixed64_ =
        emptyLongList();
    /**
     * <code>repeated fixed64 test_fixed64 = 10;</code>
     * @return A list containing the testFixed64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getTestFixed64List() {
      return testFixed64_;
    }
    /**
     * <code>repeated fixed64 test_fixed64 = 10;</code>
     * @return The count of testFixed64.
     */
    public int getTestFixed64Count() {
      return testFixed64_.size();
    }
    /**
     * <code>repeated fixed64 test_fixed64 = 10;</code>
     * @param index The index of the element to return.
     * @return The testFixed64 at the given index.
     */
    public long getTestFixed64(int index) {
      return testFixed64_.getLong(index);
    }

    public static final int TEST_FLOAT_FIELD_NUMBER = 11;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.FloatList testFloat_ =
        emptyFloatList();
    /**
     * <code>repeated float test_float = 11;</code>
     * @return A list containing the testFloat.
     */
    @java.lang.Override
    public java.util.List<java.lang.Float>
        getTestFloatList() {
      return testFloat_;
    }
    /**
     * <code>repeated float test_float = 11;</code>
     * @return The count of testFloat.
     */
    public int getTestFloatCount() {
      return testFloat_.size();
    }
    /**
     * <code>repeated float test_float = 11;</code>
     * @param index The index of the element to return.
     * @return The testFloat at the given index.
     */
    public float getTestFloat(int index) {
      return testFloat_.getFloat(index);
    }

    public static final int TEST_DOUBLE_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.DoubleList testDouble_ =
        emptyDoubleList();
    /**
     * <code>repeated double test_double = 12;</code>
     * @return A list containing the testDouble.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getTestDoubleList() {
      return testDouble_;
    }
    /**
     * <code>repeated double test_double = 12;</code>
     * @return The count of testDouble.
     */
    public int getTestDoubleCount() {
      return testDouble_.size();
    }
    /**
     * <code>repeated double test_double = 12;</code>
     * @param index The index of the element to return.
     * @return The testDouble at the given index.
     */
    public double getTestDouble(int index) {
      return testDouble_.getDouble(index);
    }

    public static final int TEST_BOOLEAN_FIELD_NUMBER = 13;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.BooleanList testBoolean_ =
        emptyBooleanList();
    /**
     * <code>repeated bool test_boolean = 13;</code>
     * @return A list containing the testBoolean.
     */
    @java.lang.Override
    public java.util.List<java.lang.Boolean>
        getTestBooleanList() {
      return testBoolean_;
    }
    /**
     * <code>repeated bool test_boolean = 13;</code>
     * @return The count of testBoolean.
     */
    public int getTestBooleanCount() {
      return testBoolean_.size();
    }
    /**
     * <code>repeated bool test_boolean = 13;</code>
     * @param index The index of the element to return.
     * @return The testBoolean at the given index.
     */
    public boolean getTestBoolean(int index) {
      return testBoolean_.getBoolean(index);
    }

    public static final int TEST_ENUM_SMALL_FIELD_NUMBER = 14;
    @SuppressWarnings("serial")
    private java.util.List<java.lang.Integer> testEnumSmall_;
    private static final com.google.protobuf.Internal.ListAdapter.Converter<
        java.lang.Integer, foo.TestFull.TestEnumSmall> testEnumSmall_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer, foo.TestFull.TestEnumSmall>() {
              public foo.TestFull.TestEnumSmall convert(java.lang.Integer from) {
                foo.TestFull.TestEnumSmall result = foo.TestFull.TestEnumSmall.forNumber(from);
                return result == null ? foo.TestFull.TestEnumSmall.NEG_VALUE : result;
              }
            };
    /**
     * <code>repeated .foo.TestEnumSmall test_enum_small = 14;</code>
     * @return A list containing the testEnumSmall.
     */
    @java.lang.Override
    public java.util.List<foo.TestFull.TestEnumSmall> getTestEnumSmallList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, foo.TestFull.TestEnumSmall>(testEnumSmall_, testEnumSmall_converter_);
    }
    /**
     * <code>repeated .foo.TestEnumSmall test_enum_small = 14;</code>
     * @return The count of testEnumSmall.
     */
    @java.lang.Override
    public int getTestEnumSmallCount() {
      return testEnumSmall_.size();
    }
    /**
     * <code>repeated .foo.TestEnumSmall test_enum_small = 14;</code>
     * @param index The index of the element to return.
     * @return The testEnumSmall at the given index.
     */
    @java.lang.Override
    public foo.TestFull.TestEnumSmall getTestEnumSmall(int index) {
      return testEnumSmall_converter_.convert(testEnumSmall_.get(index));
    }

    public static final int TEST_ENUM_FIELD_NUMBER = 15;
    @SuppressWarnings("serial")
    private java.util.List<java.lang.Integer> testEnum_;
    private static final com.google.protobuf.Internal.ListAdapter.Converter<
        java.lang.Integer, foo.TestFull.TestEnum> testEnum_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer, foo.TestFull.TestEnum>() {
              public foo.TestFull.TestEnum convert(java.lang.Integer from) {
                foo.TestFull.TestEnum result = foo.TestFull.TestEnum.forNumber(from);
                return result == null ? foo.TestFull.TestEnum.VALUENEG123456 : result;
              }
            };
    /**
     * <code>repeated .foo.TestEnum test_enum = 15;</code>
     * @return A list containing the testEnum.
     */
    @java.lang.Override
    public java.util.List<foo.TestFull.TestEnum> getTestEnumList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, foo.TestFull.TestEnum>(testEnum_, testEnum_converter_);
    }
    /**
     * <code>repeated .foo.TestEnum test_enum = 15;</code>
     * @return The count of testEnum.
     */
    @java.lang.Override
    public int getTestEnumCount() {
      return testEnum_.size();
    }
    /**
     * <code>repeated .foo.TestEnum test_enum = 15;</code>
     * @param index The index of the element to return.
     * @return The testEnum at the given index.
     */
    @java.lang.Override
    public foo.TestFull.TestEnum getTestEnum(int index) {
      return testEnum_converter_.convert(testEnum_.get(index));
    }

    public static final int TEST_STRING_FIELD_NUMBER = 16;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList testString_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <code>repeated string test_string = 16;</code>
     * @return A list containing the testString.
     */
    public com.google.protobuf.ProtocolStringList
        getTestStringList() {
      return testString_;
    }
    /**
     * <code>repeated string test_string = 16;</code>
     * @return The count of testString.
     */
    public int getTestStringCount() {
      return testString_.size();
    }
    /**
     * <code>repeated string test_string = 16;</code>
     * @param index The index of the element to return.
     * @return The testString at the given index.
     */
    public java.lang.String getTestString(int index) {
      return testString_.get(index);
    }
    /**
     * <code>repeated string test_string = 16;</code>
     * @param index The index of the value to return.
     * @return The bytes of the testString at the given index.
     */
    public com.google.protobuf.ByteString
        getTestStringBytes(int index) {
      return testString_.getByteString(index);
    }

    public static final int TEST_BYTES_FIELD_NUMBER = 17;
    @SuppressWarnings("serial")
    private java.util.List<com.google.protobuf.ByteString> testBytes_ =
        java.util.Collections.emptyList();
    /**
     * <code>repeated bytes test_bytes = 17;</code>
     * @return A list containing the testBytes.
     */
    @java.lang.Override
    public java.util.List<com.google.protobuf.ByteString>
        getTestBytesList() {
      return testBytes_;
    }
    /**
     * <code>repeated bytes test_bytes = 17;</code>
     * @return The count of testBytes.
     */
    public int getTestBytesCount() {
      return testBytes_.size();
    }
    /**
     * <code>repeated bytes test_bytes = 17;</code>
     * @param index The index of the element to return.
     * @return The testBytes at the given index.
     */
    public com.google.protobuf.ByteString getTestBytes(int index) {
      return testBytes_.get(index);
    }

    public static final int TEST_MESSAGE_FIELD_NUMBER = 18;
    @SuppressWarnings("serial")
    private java.util.List<foo.TestFull.SubMess> testMessage_;
    /**
     * <code>repeated .foo.SubMess test_message = 18;</code>
     */
    @java.lang.Override
    public java.util.List<foo.TestFull.SubMess> getTestMessageList() {
      return testMessage_;
    }
    /**
     * <code>repeated .foo.SubMess test_message = 18;</code>
     */
    @java.lang.Override
    public java.util.List<? extends foo.TestFull.SubMessOrBuilder> 
        getTestMessageOrBuilderList() {
      return testMessage_;
    }
    /**
     * <code>repeated .foo.SubMess test_message = 18;</code>
     */
    @java.lang.Override
    public int getTestMessageCount() {
      return testMessage_.size();
    }
    /**
     * <code>repeated .foo.SubMess test_message = 18;</code>
     */
    @java.lang.Override
    public foo.TestFull.SubMess getTestMessage(int index) {
      return testMessage_.get(index);
    }
    /**
     * <code>repeated .foo.SubMess test_message = 18;</code>
     */
    @java.lang.Override
    public foo.TestFull.SubMessOrBuilder getTestMessageOrBuilder(
        int index) {
      return testMessage_.get(index);
    }

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

      for (int i = 0; i < getTestMessageCount(); i++) {
        if (!getTestMessage(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < testInt32_.size(); i++) {
        output.writeInt32(1, testInt32_.getInt(i));
      }
      for (int i = 0; i < testSint32_.size(); i++) {
        output.writeSInt32(2, testSint32_.getInt(i));
      }
      for (int i = 0; i < testSfixed32_.size(); i++) {
        output.writeSFixed32(3, testSfixed32_.getInt(i));
      }
      for (int i = 0; i < testInt64_.size(); i++) {
        output.writeInt64(4, testInt64_.getLong(i));
      }
      for (int i = 0; i < testSint64_.size(); i++) {
        output.writeSInt64(5, testSint64_.getLong(i));
      }
      for (int i = 0; i < testSfixed64_.size(); i++) {
        output.writeSFixed64(6, testSfixed64_.getLong(i));
      }
      for (int i = 0; i < testUint32_.size(); i++) {
        output.writeUInt32(7, testUint32_.getInt(i));
      }
      for (int i = 0; i < testFixed32_.size(); i++) {
        output.writeFixed32(8, testFixed32_.getInt(i));
      }
      for (int i = 0; i < testUint64_.size(); i++) {
        output.writeUInt64(9, testUint64_.getLong(i));
      }
      for (int i = 0; i < testFixed64_.size(); i++) {
        output.writeFixed64(10, testFixed64_.getLong(i));
      }
      for (int i = 0; i < testFloat_.size(); i++) {
        output.writeFloat(11, testFloat_.getFloat(i));
      }
      for (int i = 0; i < testDouble_.size(); i++) {
        output.writeDouble(12, testDouble_.getDouble(i));
      }
      for (int i = 0; i < testBoolean_.size(); i++) {
        output.writeBool(13, testBoolean_.getBoolean(i));
      }
      for (int i = 0; i < testEnumSmall_.size(); i++) {
        output.writeEnum(14, testEnumSmall_.get(i));
      }
      for (int i = 0; i < testEnum_.size(); i++) {
        output.writeEnum(15, testEnum_.get(i));
      }
      for (int i = 0; i < testString_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 16, testString_.getRaw(i));
      }
      for (int i = 0; i < testBytes_.size(); i++) {
        output.writeBytes(17, testBytes_.get(i));
      }
      for (int i = 0; i < testMessage_.size(); i++) {
        output.writeMessage(18, testMessage_.get(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 < testInt32_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(testInt32_.getInt(i));
        }
        size += dataSize;
        size += 1 * getTestInt32List().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testSint32_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeSInt32SizeNoTag(testSint32_.getInt(i));
        }
        size += dataSize;
        size += 1 * getTestSint32List().size();
      }
      {
        int dataSize = 0;
        dataSize = 4 * getTestSfixed32List().size();
        size += dataSize;
        size += 1 * getTestSfixed32List().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testInt64_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt64SizeNoTag(testInt64_.getLong(i));
        }
        size += dataSize;
        size += 1 * getTestInt64List().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testSint64_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeSInt64SizeNoTag(testSint64_.getLong(i));
        }
        size += dataSize;
        size += 1 * getTestSint64List().size();
      }
      {
        int dataSize = 0;
        dataSize = 8 * getTestSfixed64List().size();
        size += dataSize;
        size += 1 * getTestSfixed64List().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testUint32_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(testUint32_.getInt(i));
        }
        size += dataSize;
        size += 1 * getTestUint32List().size();
      }
      {
        int dataSize = 0;
        dataSize = 4 * getTestFixed32List().size();
        size += dataSize;
        size += 1 * getTestFixed32List().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testUint64_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt64SizeNoTag(testUint64_.getLong(i));
        }
        size += dataSize;
        size += 1 * getTestUint64List().size();
      }
      {
        int dataSize = 0;
        dataSize = 8 * getTestFixed64List().size();
        size += dataSize;
        size += 1 * getTestFixed64List().size();
      }
      {
        int dataSize = 0;
        dataSize = 4 * getTestFloatList().size();
        size += dataSize;
        size += 1 * getTestFloatList().size();
      }
      {
        int dataSize = 0;
        dataSize = 8 * getTestDoubleList().size();
        size += dataSize;
        size += 1 * getTestDoubleList().size();
      }
      {
        int dataSize = 0;
        dataSize = 1 * getTestBooleanList().size();
        size += dataSize;
        size += 1 * getTestBooleanList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testEnumSmall_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(testEnumSmall_.get(i));
        }
        size += dataSize;
        size += 1 * testEnumSmall_.size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testEnum_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(testEnum_.get(i));
        }
        size += dataSize;
        size += 1 * testEnum_.size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testString_.size(); i++) {
          dataSize += computeStringSizeNoTag(testString_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getTestStringList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testBytes_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(testBytes_.get(i));
        }
        size += dataSize;
        size += 2 * getTestBytesList().size();
      }
      for (int i = 0; i < testMessage_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, testMessage_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof foo.TestFull.TestMess)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMess other = (foo.TestFull.TestMess) obj;

      if (!getTestInt32List()
          .equals(other.getTestInt32List())) return false;
      if (!getTestSint32List()
          .equals(other.getTestSint32List())) return false;
      if (!getTestSfixed32List()
          .equals(other.getTestSfixed32List())) return false;
      if (!getTestInt64List()
          .equals(other.getTestInt64List())) return false;
      if (!getTestSint64List()
          .equals(other.getTestSint64List())) return false;
      if (!getTestSfixed64List()
          .equals(other.getTestSfixed64List())) return false;
      if (!getTestUint32List()
          .equals(other.getTestUint32List())) return false;
      if (!getTestFixed32List()
          .equals(other.getTestFixed32List())) return false;
      if (!getTestUint64List()
          .equals(other.getTestUint64List())) return false;
      if (!getTestFixed64List()
          .equals(other.getTestFixed64List())) return false;
      if (!getTestFloatList()
          .equals(other.getTestFloatList())) return false;
      if (!getTestDoubleList()
          .equals(other.getTestDoubleList())) return false;
      if (!getTestBooleanList()
          .equals(other.getTestBooleanList())) return false;
      if (!testEnumSmall_.equals(other.testEnumSmall_)) return false;
      if (!testEnum_.equals(other.testEnum_)) return false;
      if (!getTestStringList()
          .equals(other.getTestStringList())) return false;
      if (!getTestBytesList()
          .equals(other.getTestBytesList())) return false;
      if (!getTestMessageList()
          .equals(other.getTestMessageList())) 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 (getTestInt32Count() > 0) {
        hash = (37 * hash) + TEST_INT32_FIELD_NUMBER;
        hash = (53 * hash) + getTestInt32List().hashCode();
      }
      if (getTestSint32Count() > 0) {
        hash = (37 * hash) + TEST_SINT32_FIELD_NUMBER;
        hash = (53 * hash) + getTestSint32List().hashCode();
      }
      if (getTestSfixed32Count() > 0) {
        hash = (37 * hash) + TEST_SFIXED32_FIELD_NUMBER;
        hash = (53 * hash) + getTestSfixed32List().hashCode();
      }
      if (getTestInt64Count() > 0) {
        hash = (37 * hash) + TEST_INT64_FIELD_NUMBER;
        hash = (53 * hash) + getTestInt64List().hashCode();
      }
      if (getTestSint64Count() > 0) {
        hash = (37 * hash) + TEST_SINT64_FIELD_NUMBER;
        hash = (53 * hash) + getTestSint64List().hashCode();
      }
      if (getTestSfixed64Count() > 0) {
        hash = (37 * hash) + TEST_SFIXED64_FIELD_NUMBER;
        hash = (53 * hash) + getTestSfixed64List().hashCode();
      }
      if (getTestUint32Count() > 0) {
        hash = (37 * hash) + TEST_UINT32_FIELD_NUMBER;
        hash = (53 * hash) + getTestUint32List().hashCode();
      }
      if (getTestFixed32Count() > 0) {
        hash = (37 * hash) + TEST_FIXED32_FIELD_NUMBER;
        hash = (53 * hash) + getTestFixed32List().hashCode();
      }
      if (getTestUint64Count() > 0) {
        hash = (37 * hash) + TEST_UINT64_FIELD_NUMBER;
        hash = (53 * hash) + getTestUint64List().hashCode();
      }
      if (getTestFixed64Count() > 0) {
        hash = (37 * hash) + TEST_FIXED64_FIELD_NUMBER;
        hash = (53 * hash) + getTestFixed64List().hashCode();
      }
      if (getTestFloatCount() > 0) {
        hash = (37 * hash) + TEST_FLOAT_FIELD_NUMBER;
        hash = (53 * hash) + getTestFloatList().hashCode();
      }
      if (getTestDoubleCount() > 0) {
        hash = (37 * hash) + TEST_DOUBLE_FIELD_NUMBER;
        hash = (53 * hash) + getTestDoubleList().hashCode();
      }
      if (getTestBooleanCount() > 0) {
        hash = (37 * hash) + TEST_BOOLEAN_FIELD_NUMBER;
        hash = (53 * hash) + getTestBooleanList().hashCode();
      }
      if (getTestEnumSmallCount() > 0) {
        hash = (37 * hash) + TEST_ENUM_SMALL_FIELD_NUMBER;
        hash = (53 * hash) + testEnumSmall_.hashCode();
      }
      if (getTestEnumCount() > 0) {
        hash = (37 * hash) + TEST_ENUM_FIELD_NUMBER;
        hash = (53 * hash) + testEnum_.hashCode();
      }
      if (getTestStringCount() > 0) {
        hash = (37 * hash) + TEST_STRING_FIELD_NUMBER;
        hash = (53 * hash) + getTestStringList().hashCode();
      }
      if (getTestBytesCount() > 0) {
        hash = (37 * hash) + TEST_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + getTestBytesList().hashCode();
      }
      if (getTestMessageCount() > 0) {
        hash = (37 * hash) + TEST_MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getTestMessageList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMess_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMess.class, foo.TestFull.TestMess.Builder.class);
      }

      // Construct using foo.TestFull.TestMess.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        testInt32_ = emptyIntList();
        testSint32_ = emptyIntList();
        testSfixed32_ = emptyIntList();
        testInt64_ = emptyLongList();
        testSint64_ = emptyLongList();
        testSfixed64_ = emptyLongList();
        testUint32_ = emptyIntList();
        testFixed32_ = emptyIntList();
        testUint64_ = emptyLongList();
        testFixed64_ = emptyLongList();
        testFloat_ = emptyFloatList();
        testDouble_ = emptyDoubleList();
        testBoolean_ = emptyBooleanList();
        testEnumSmall_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00002000);
        testEnum_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00004000);
        testString_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        testBytes_ = java.util.Collections.emptyList();
        if (testMessageBuilder_ == null) {
          testMessage_ = java.util.Collections.emptyList();
        } else {
          testMessage_ = null;
          testMessageBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00020000);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMess_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMess getDefaultInstanceForType() {
        return foo.TestFull.TestMess.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMess build() {
        foo.TestFull.TestMess result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMess buildPartial() {
        foo.TestFull.TestMess result = new foo.TestFull.TestMess(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(foo.TestFull.TestMess result) {
        if (((bitField0_ & 0x00002000) != 0)) {
          testEnumSmall_ = java.util.Collections.unmodifiableList(testEnumSmall_);
          bitField0_ = (bitField0_ & ~0x00002000);
        }
        result.testEnumSmall_ = testEnumSmall_;
        if (((bitField0_ & 0x00004000) != 0)) {
          testEnum_ = java.util.Collections.unmodifiableList(testEnum_);
          bitField0_ = (bitField0_ & ~0x00004000);
        }
        result.testEnum_ = testEnum_;
        if (((bitField0_ & 0x00010000) != 0)) {
          testBytes_ = java.util.Collections.unmodifiableList(testBytes_);
          bitField0_ = (bitField0_ & ~0x00010000);
        }
        result.testBytes_ = testBytes_;
        if (testMessageBuilder_ == null) {
          if (((bitField0_ & 0x00020000) != 0)) {
            testMessage_ = java.util.Collections.unmodifiableList(testMessage_);
            bitField0_ = (bitField0_ & ~0x00020000);
          }
          result.testMessage_ = testMessage_;
        } else {
          result.testMessage_ = testMessageBuilder_.build();
        }
      }

      private void buildPartial0(foo.TestFull.TestMess result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          testInt32_.makeImmutable();
          result.testInt32_ = testInt32_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          testSint32_.makeImmutable();
          result.testSint32_ = testSint32_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          testSfixed32_.makeImmutable();
          result.testSfixed32_ = testSfixed32_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          testInt64_.makeImmutable();
          result.testInt64_ = testInt64_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          testSint64_.makeImmutable();
          result.testSint64_ = testSint64_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          testSfixed64_.makeImmutable();
          result.testSfixed64_ = testSfixed64_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          testUint32_.makeImmutable();
          result.testUint32_ = testUint32_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          testFixed32_.makeImmutable();
          result.testFixed32_ = testFixed32_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          testUint64_.makeImmutable();
          result.testUint64_ = testUint64_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          testFixed64_.makeImmutable();
          result.testFixed64_ = testFixed64_;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          testFloat_.makeImmutable();
          result.testFloat_ = testFloat_;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          testDouble_.makeImmutable();
          result.testDouble_ = testDouble_;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          testBoolean_.makeImmutable();
          result.testBoolean_ = testBoolean_;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          testString_.makeImmutable();
          result.testString_ = testString_;
        }
      }

      @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 foo.TestFull.TestMess) {
          return mergeFrom((foo.TestFull.TestMess)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMess other) {
        if (other == foo.TestFull.TestMess.getDefaultInstance()) return this;
        if (!other.testInt32_.isEmpty()) {
          if (testInt32_.isEmpty()) {
            testInt32_ = other.testInt32_;
            testInt32_.makeImmutable();
            bitField0_ |= 0x00000001;
          } else {
            ensureTestInt32IsMutable();
            testInt32_.addAll(other.testInt32_);
          }
          onChanged();
        }
        if (!other.testSint32_.isEmpty()) {
          if (testSint32_.isEmpty()) {
            testSint32_ = other.testSint32_;
            testSint32_.makeImmutable();
            bitField0_ |= 0x00000002;
          } else {
            ensureTestSint32IsMutable();
            testSint32_.addAll(other.testSint32_);
          }
          onChanged();
        }
        if (!other.testSfixed32_.isEmpty()) {
          if (testSfixed32_.isEmpty()) {
            testSfixed32_ = other.testSfixed32_;
            testSfixed32_.makeImmutable();
            bitField0_ |= 0x00000004;
          } else {
            ensureTestSfixed32IsMutable();
            testSfixed32_.addAll(other.testSfixed32_);
          }
          onChanged();
        }
        if (!other.testInt64_.isEmpty()) {
          if (testInt64_.isEmpty()) {
            testInt64_ = other.testInt64_;
            testInt64_.makeImmutable();
            bitField0_ |= 0x00000008;
          } else {
            ensureTestInt64IsMutable();
            testInt64_.addAll(other.testInt64_);
          }
          onChanged();
        }
        if (!other.testSint64_.isEmpty()) {
          if (testSint64_.isEmpty()) {
            testSint64_ = other.testSint64_;
            testSint64_.makeImmutable();
            bitField0_ |= 0x00000010;
          } else {
            ensureTestSint64IsMutable();
            testSint64_.addAll(other.testSint64_);
          }
          onChanged();
        }
        if (!other.testSfixed64_.isEmpty()) {
          if (testSfixed64_.isEmpty()) {
            testSfixed64_ = other.testSfixed64_;
            testSfixed64_.makeImmutable();
            bitField0_ |= 0x00000020;
          } else {
            ensureTestSfixed64IsMutable();
            testSfixed64_.addAll(other.testSfixed64_);
          }
          onChanged();
        }
        if (!other.testUint32_.isEmpty()) {
          if (testUint32_.isEmpty()) {
            testUint32_ = other.testUint32_;
            testUint32_.makeImmutable();
            bitField0_ |= 0x00000040;
          } else {
            ensureTestUint32IsMutable();
            testUint32_.addAll(other.testUint32_);
          }
          onChanged();
        }
        if (!other.testFixed32_.isEmpty()) {
          if (testFixed32_.isEmpty()) {
            testFixed32_ = other.testFixed32_;
            testFixed32_.makeImmutable();
            bitField0_ |= 0x00000080;
          } else {
            ensureTestFixed32IsMutable();
            testFixed32_.addAll(other.testFixed32_);
          }
          onChanged();
        }
        if (!other.testUint64_.isEmpty()) {
          if (testUint64_.isEmpty()) {
            testUint64_ = other.testUint64_;
            testUint64_.makeImmutable();
            bitField0_ |= 0x00000100;
          } else {
            ensureTestUint64IsMutable();
            testUint64_.addAll(other.testUint64_);
          }
          onChanged();
        }
        if (!other.testFixed64_.isEmpty()) {
          if (testFixed64_.isEmpty()) {
            testFixed64_ = other.testFixed64_;
            testFixed64_.makeImmutable();
            bitField0_ |= 0x00000200;
          } else {
            ensureTestFixed64IsMutable();
            testFixed64_.addAll(other.testFixed64_);
          }
          onChanged();
        }
        if (!other.testFloat_.isEmpty()) {
          if (testFloat_.isEmpty()) {
            testFloat_ = other.testFloat_;
            testFloat_.makeImmutable();
            bitField0_ |= 0x00000400;
          } else {
            ensureTestFloatIsMutable();
            testFloat_.addAll(other.testFloat_);
          }
          onChanged();
        }
        if (!other.testDouble_.isEmpty()) {
          if (testDouble_.isEmpty()) {
            testDouble_ = other.testDouble_;
            testDouble_.makeImmutable();
            bitField0_ |= 0x00000800;
          } else {
            ensureTestDoubleIsMutable();
            testDouble_.addAll(other.testDouble_);
          }
          onChanged();
        }
        if (!other.testBoolean_.isEmpty()) {
          if (testBoolean_.isEmpty()) {
            testBoolean_ = other.testBoolean_;
            testBoolean_.makeImmutable();
            bitField0_ |= 0x00001000;
          } else {
            ensureTestBooleanIsMutable();
            testBoolean_.addAll(other.testBoolean_);
          }
          onChanged();
        }
        if (!other.testEnumSmall_.isEmpty()) {
          if (testEnumSmall_.isEmpty()) {
            testEnumSmall_ = other.testEnumSmall_;
            bitField0_ = (bitField0_ & ~0x00002000);
          } else {
            ensureTestEnumSmallIsMutable();
            testEnumSmall_.addAll(other.testEnumSmall_);
          }
          onChanged();
        }
        if (!other.testEnum_.isEmpty()) {
          if (testEnum_.isEmpty()) {
            testEnum_ = other.testEnum_;
            bitField0_ = (bitField0_ & ~0x00004000);
          } else {
            ensureTestEnumIsMutable();
            testEnum_.addAll(other.testEnum_);
          }
          onChanged();
        }
        if (!other.testString_.isEmpty()) {
          if (testString_.isEmpty()) {
            testString_ = other.testString_;
            bitField0_ |= 0x00008000;
          } else {
            ensureTestStringIsMutable();
            testString_.addAll(other.testString_);
          }
          onChanged();
        }
        if (!other.testBytes_.isEmpty()) {
          if (testBytes_.isEmpty()) {
            testBytes_ = other.testBytes_;
            bitField0_ = (bitField0_ & ~0x00010000);
          } else {
            ensureTestBytesIsMutable();
            testBytes_.addAll(other.testBytes_);
          }
          onChanged();
        }
        if (testMessageBuilder_ == null) {
          if (!other.testMessage_.isEmpty()) {
            if (testMessage_.isEmpty()) {
              testMessage_ = other.testMessage_;
              bitField0_ = (bitField0_ & ~0x00020000);
            } else {
              ensureTestMessageIsMutable();
              testMessage_.addAll(other.testMessage_);
            }
            onChanged();
          }
        } else {
          if (!other.testMessage_.isEmpty()) {
            if (testMessageBuilder_.isEmpty()) {
              testMessageBuilder_.dispose();
              testMessageBuilder_ = null;
              testMessage_ = other.testMessage_;
              bitField0_ = (bitField0_ & ~0x00020000);
              testMessageBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTestMessageFieldBuilder() : null;
            } else {
              testMessageBuilder_.addAllMessages(other.testMessage_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getTestMessageCount(); i++) {
          if (!getTestMessage(i).isInitialized()) {
            return false;
          }
        }
        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();
                ensureTestInt32IsMutable();
                testInt32_.addInt(v);
                break;
              } // case 8
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestInt32IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testInt32_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 10
              case 16: {
                int v = input.readSInt32();
                ensureTestSint32IsMutable();
                testSint32_.addInt(v);
                break;
              } // case 16
              case 18: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestSint32IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testSint32_.addInt(input.readSInt32());
                }
                input.popLimit(limit);
                break;
              } // case 18
              case 29: {
                int v = input.readSFixed32();
                ensureTestSfixed32IsMutable();
                testSfixed32_.addInt(v);
                break;
              } // case 29
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestSfixed32IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testSfixed32_.addInt(input.readSFixed32());
                }
                input.popLimit(limit);
                break;
              } // case 26
              case 32: {
                long v = input.readInt64();
                ensureTestInt64IsMutable();
                testInt64_.addLong(v);
                break;
              } // case 32
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestInt64IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testInt64_.addLong(input.readInt64());
                }
                input.popLimit(limit);
                break;
              } // case 34
              case 40: {
                long v = input.readSInt64();
                ensureTestSint64IsMutable();
                testSint64_.addLong(v);
                break;
              } // case 40
              case 42: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestSint64IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testSint64_.addLong(input.readSInt64());
                }
                input.popLimit(limit);
                break;
              } // case 42
              case 49: {
                long v = input.readSFixed64();
                ensureTestSfixed64IsMutable();
                testSfixed64_.addLong(v);
                break;
              } // case 49
              case 50: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestSfixed64IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testSfixed64_.addLong(input.readSFixed64());
                }
                input.popLimit(limit);
                break;
              } // case 50
              case 56: {
                int v = input.readUInt32();
                ensureTestUint32IsMutable();
                testUint32_.addInt(v);
                break;
              } // case 56
              case 58: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestUint32IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testUint32_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 58
              case 69: {
                int v = input.readFixed32();
                ensureTestFixed32IsMutable();
                testFixed32_.addInt(v);
                break;
              } // case 69
              case 66: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestFixed32IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testFixed32_.addInt(input.readFixed32());
                }
                input.popLimit(limit);
                break;
              } // case 66
              case 72: {
                long v = input.readUInt64();
                ensureTestUint64IsMutable();
                testUint64_.addLong(v);
                break;
              } // case 72
              case 74: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestUint64IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testUint64_.addLong(input.readUInt64());
                }
                input.popLimit(limit);
                break;
              } // case 74
              case 81: {
                long v = input.readFixed64();
                ensureTestFixed64IsMutable();
                testFixed64_.addLong(v);
                break;
              } // case 81
              case 82: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestFixed64IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testFixed64_.addLong(input.readFixed64());
                }
                input.popLimit(limit);
                break;
              } // case 82
              case 93: {
                float v = input.readFloat();
                ensureTestFloatIsMutable();
                testFloat_.addFloat(v);
                break;
              } // case 93
              case 90: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestFloatIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testFloat_.addFloat(input.readFloat());
                }
                input.popLimit(limit);
                break;
              } // case 90
              case 97: {
                double v = input.readDouble();
                ensureTestDoubleIsMutable();
                testDouble_.addDouble(v);
                break;
              } // case 97
              case 98: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestDoubleIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testDouble_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 98
              case 104: {
                boolean v = input.readBool();
                ensureTestBooleanIsMutable();
                testBoolean_.addBoolean(v);
                break;
              } // case 104
              case 106: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestBooleanIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testBoolean_.addBoolean(input.readBool());
                }
                input.popLimit(limit);
                break;
              } // case 106
              case 112: {
                int tmpRaw = input.readEnum();
                foo.TestFull.TestEnumSmall tmpValue =
                    foo.TestFull.TestEnumSmall.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(14, tmpRaw);
                } else {
                  ensureTestEnumSmallIsMutable();
                  testEnumSmall_.add(tmpRaw);
                }
                break;
              } // case 112
              case 114: {
                int length = input.readRawVarint32();
                int oldLimit = input.pushLimit(length);
                while(input.getBytesUntilLimit() > 0) {
                  int tmpRaw = input.readEnum();
                  foo.TestFull.TestEnumSmall tmpValue =
                      foo.TestFull.TestEnumSmall.forNumber(tmpRaw);
                  if (tmpValue == null) {
                    mergeUnknownVarintField(14, tmpRaw);
                  } else {
                    ensureTestEnumSmallIsMutable();
                    testEnumSmall_.add(tmpRaw);
                  }
                }
                input.popLimit(oldLimit);
                break;
              } // case 114
              case 120: {
                int tmpRaw = input.readEnum();
                foo.TestFull.TestEnum tmpValue =
                    foo.TestFull.TestEnum.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(15, tmpRaw);
                } else {
                  ensureTestEnumIsMutable();
                  testEnum_.add(tmpRaw);
                }
                break;
              } // case 120
              case 122: {
                int length = input.readRawVarint32();
                int oldLimit = input.pushLimit(length);
                while(input.getBytesUntilLimit() > 0) {
                  int tmpRaw = input.readEnum();
                  foo.TestFull.TestEnum tmpValue =
                      foo.TestFull.TestEnum.forNumber(tmpRaw);
                  if (tmpValue == null) {
                    mergeUnknownVarintField(15, tmpRaw);
                  } else {
                    ensureTestEnumIsMutable();
                    testEnum_.add(tmpRaw);
                  }
                }
                input.popLimit(oldLimit);
                break;
              } // case 122
              case 130: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureTestStringIsMutable();
                testString_.add(bs);
                break;
              } // case 130
              case 138: {
                com.google.protobuf.ByteString v = input.readBytes();
                ensureTestBytesIsMutable();
                testBytes_.add(v);
                break;
              } // case 138
              case 146: {
                foo.TestFull.SubMess m =
                    input.readMessage(
                        foo.TestFull.SubMess.PARSER,
                        extensionRegistry);
                if (testMessageBuilder_ == null) {
                  ensureTestMessageIsMutable();
                  testMessage_.add(m);
                } else {
                  testMessageBuilder_.addMessage(m);
                }
                break;
              } // case 146
              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 testInt32_ = emptyIntList();
      private void ensureTestInt32IsMutable() {
        if (!testInt32_.isModifiable()) {
          testInt32_ = mutableCopy(testInt32_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <code>repeated int32 test_int32 = 1;</code>
       * @return A list containing the testInt32.
       */
      public java.util.List<java.lang.Integer>
          getTestInt32List() {
        testInt32_.makeImmutable();
        return testInt32_;
      }
      /**
       * <code>repeated int32 test_int32 = 1;</code>
       * @return The count of testInt32.
       */
      public int getTestInt32Count() {
        return testInt32_.size();
      }
      /**
       * <code>repeated int32 test_int32 = 1;</code>
       * @param index The index of the element to return.
       * @return The testInt32 at the given index.
       */
      public int getTestInt32(int index) {
        return testInt32_.getInt(index);
      }
      /**
       * <code>repeated int32 test_int32 = 1;</code>
       * @param index The index to set the value at.
       * @param value The testInt32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestInt32(
          int index, int value) {

        ensureTestInt32IsMutable();
        testInt32_.setInt(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 test_int32 = 1;</code>
       * @param value The testInt32 to add.
       * @return This builder for chaining.
       */
      public Builder addTestInt32(int value) {

        ensureTestInt32IsMutable();
        testInt32_.addInt(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 test_int32 = 1;</code>
       * @param values The testInt32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestInt32(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTestInt32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testInt32_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 test_int32 = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestInt32() {
        testInt32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList testSint32_ = emptyIntList();
      private void ensureTestSint32IsMutable() {
        if (!testSint32_.isModifiable()) {
          testSint32_ = mutableCopy(testSint32_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <code>repeated sint32 test_sint32 = 2;</code>
       * @return A list containing the testSint32.
       */
      public java.util.List<java.lang.Integer>
          getTestSint32List() {
        testSint32_.makeImmutable();
        return testSint32_;
      }
      /**
       * <code>repeated sint32 test_sint32 = 2;</code>
       * @return The count of testSint32.
       */
      public int getTestSint32Count() {
        return testSint32_.size();
      }
      /**
       * <code>repeated sint32 test_sint32 = 2;</code>
       * @param index The index of the element to return.
       * @return The testSint32 at the given index.
       */
      public int getTestSint32(int index) {
        return testSint32_.getInt(index);
      }
      /**
       * <code>repeated sint32 test_sint32 = 2;</code>
       * @param index The index to set the value at.
       * @param value The testSint32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSint32(
          int index, int value) {

        ensureTestSint32IsMutable();
        testSint32_.setInt(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint32 test_sint32 = 2;</code>
       * @param value The testSint32 to add.
       * @return This builder for chaining.
       */
      public Builder addTestSint32(int value) {

        ensureTestSint32IsMutable();
        testSint32_.addInt(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint32 test_sint32 = 2;</code>
       * @param values The testSint32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestSint32(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTestSint32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testSint32_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint32 test_sint32 = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSint32() {
        testSint32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList testSfixed32_ = emptyIntList();
      private void ensureTestSfixed32IsMutable() {
        if (!testSfixed32_.isModifiable()) {
          testSfixed32_ = mutableCopy(testSfixed32_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3;</code>
       * @return A list containing the testSfixed32.
       */
      public java.util.List<java.lang.Integer>
          getTestSfixed32List() {
        testSfixed32_.makeImmutable();
        return testSfixed32_;
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3;</code>
       * @return The count of testSfixed32.
       */
      public int getTestSfixed32Count() {
        return testSfixed32_.size();
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3;</code>
       * @param index The index of the element to return.
       * @return The testSfixed32 at the given index.
       */
      public int getTestSfixed32(int index) {
        return testSfixed32_.getInt(index);
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3;</code>
       * @param index The index to set the value at.
       * @param value The testSfixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSfixed32(
          int index, int value) {

        ensureTestSfixed32IsMutable();
        testSfixed32_.setInt(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3;</code>
       * @param value The testSfixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addTestSfixed32(int value) {

        ensureTestSfixed32IsMutable();
        testSfixed32_.addInt(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3;</code>
       * @param values The testSfixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestSfixed32(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTestSfixed32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testSfixed32_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSfixed32() {
        testSfixed32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList testInt64_ = emptyLongList();
      private void ensureTestInt64IsMutable() {
        if (!testInt64_.isModifiable()) {
          testInt64_ = mutableCopy(testInt64_);
        }
        bitField0_ |= 0x00000008;
      }
      /**
       * <code>repeated int64 test_int64 = 4;</code>
       * @return A list containing the testInt64.
       */
      public java.util.List<java.lang.Long>
          getTestInt64List() {
        testInt64_.makeImmutable();
        return testInt64_;
      }
      /**
       * <code>repeated int64 test_int64 = 4;</code>
       * @return The count of testInt64.
       */
      public int getTestInt64Count() {
        return testInt64_.size();
      }
      /**
       * <code>repeated int64 test_int64 = 4;</code>
       * @param index The index of the element to return.
       * @return The testInt64 at the given index.
       */
      public long getTestInt64(int index) {
        return testInt64_.getLong(index);
      }
      /**
       * <code>repeated int64 test_int64 = 4;</code>
       * @param index The index to set the value at.
       * @param value The testInt64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestInt64(
          int index, long value) {

        ensureTestInt64IsMutable();
        testInt64_.setLong(index, value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int64 test_int64 = 4;</code>
       * @param value The testInt64 to add.
       * @return This builder for chaining.
       */
      public Builder addTestInt64(long value) {

        ensureTestInt64IsMutable();
        testInt64_.addLong(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int64 test_int64 = 4;</code>
       * @param values The testInt64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestInt64(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureTestInt64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testInt64_);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int64 test_int64 = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestInt64() {
        testInt64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList testSint64_ = emptyLongList();
      private void ensureTestSint64IsMutable() {
        if (!testSint64_.isModifiable()) {
          testSint64_ = mutableCopy(testSint64_);
        }
        bitField0_ |= 0x00000010;
      }
      /**
       * <code>repeated sint64 test_sint64 = 5;</code>
       * @return A list containing the testSint64.
       */
      public java.util.List<java.lang.Long>
          getTestSint64List() {
        testSint64_.makeImmutable();
        return testSint64_;
      }
      /**
       * <code>repeated sint64 test_sint64 = 5;</code>
       * @return The count of testSint64.
       */
      public int getTestSint64Count() {
        return testSint64_.size();
      }
      /**
       * <code>repeated sint64 test_sint64 = 5;</code>
       * @param index The index of the element to return.
       * @return The testSint64 at the given index.
       */
      public long getTestSint64(int index) {
        return testSint64_.getLong(index);
      }
      /**
       * <code>repeated sint64 test_sint64 = 5;</code>
       * @param index The index to set the value at.
       * @param value The testSint64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSint64(
          int index, long value) {

        ensureTestSint64IsMutable();
        testSint64_.setLong(index, value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint64 test_sint64 = 5;</code>
       * @param value The testSint64 to add.
       * @return This builder for chaining.
       */
      public Builder addTestSint64(long value) {

        ensureTestSint64IsMutable();
        testSint64_.addLong(value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint64 test_sint64 = 5;</code>
       * @param values The testSint64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestSint64(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureTestSint64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testSint64_);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint64 test_sint64 = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSint64() {
        testSint64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList testSfixed64_ = emptyLongList();
      private void ensureTestSfixed64IsMutable() {
        if (!testSfixed64_.isModifiable()) {
          testSfixed64_ = mutableCopy(testSfixed64_);
        }
        bitField0_ |= 0x00000020;
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6;</code>
       * @return A list containing the testSfixed64.
       */
      public java.util.List<java.lang.Long>
          getTestSfixed64List() {
        testSfixed64_.makeImmutable();
        return testSfixed64_;
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6;</code>
       * @return The count of testSfixed64.
       */
      public int getTestSfixed64Count() {
        return testSfixed64_.size();
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6;</code>
       * @param index The index of the element to return.
       * @return The testSfixed64 at the given index.
       */
      public long getTestSfixed64(int index) {
        return testSfixed64_.getLong(index);
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6;</code>
       * @param index The index to set the value at.
       * @param value The testSfixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSfixed64(
          int index, long value) {

        ensureTestSfixed64IsMutable();
        testSfixed64_.setLong(index, value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6;</code>
       * @param value The testSfixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addTestSfixed64(long value) {

        ensureTestSfixed64IsMutable();
        testSfixed64_.addLong(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6;</code>
       * @param values The testSfixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestSfixed64(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureTestSfixed64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testSfixed64_);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSfixed64() {
        testSfixed64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList testUint32_ = emptyIntList();
      private void ensureTestUint32IsMutable() {
        if (!testUint32_.isModifiable()) {
          testUint32_ = mutableCopy(testUint32_);
        }
        bitField0_ |= 0x00000040;
      }
      /**
       * <code>repeated uint32 test_uint32 = 7;</code>
       * @return A list containing the testUint32.
       */
      public java.util.List<java.lang.Integer>
          getTestUint32List() {
        testUint32_.makeImmutable();
        return testUint32_;
      }
      /**
       * <code>repeated uint32 test_uint32 = 7;</code>
       * @return The count of testUint32.
       */
      public int getTestUint32Count() {
        return testUint32_.size();
      }
      /**
       * <code>repeated uint32 test_uint32 = 7;</code>
       * @param index The index of the element to return.
       * @return The testUint32 at the given index.
       */
      public int getTestUint32(int index) {
        return testUint32_.getInt(index);
      }
      /**
       * <code>repeated uint32 test_uint32 = 7;</code>
       * @param index The index to set the value at.
       * @param value The testUint32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestUint32(
          int index, int value) {

        ensureTestUint32IsMutable();
        testUint32_.setInt(index, value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 test_uint32 = 7;</code>
       * @param value The testUint32 to add.
       * @return This builder for chaining.
       */
      public Builder addTestUint32(int value) {

        ensureTestUint32IsMutable();
        testUint32_.addInt(value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 test_uint32 = 7;</code>
       * @param values The testUint32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestUint32(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTestUint32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testUint32_);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 test_uint32 = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestUint32() {
        testUint32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList testFixed32_ = emptyIntList();
      private void ensureTestFixed32IsMutable() {
        if (!testFixed32_.isModifiable()) {
          testFixed32_ = mutableCopy(testFixed32_);
        }
        bitField0_ |= 0x00000080;
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8;</code>
       * @return A list containing the testFixed32.
       */
      public java.util.List<java.lang.Integer>
          getTestFixed32List() {
        testFixed32_.makeImmutable();
        return testFixed32_;
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8;</code>
       * @return The count of testFixed32.
       */
      public int getTestFixed32Count() {
        return testFixed32_.size();
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8;</code>
       * @param index The index of the element to return.
       * @return The testFixed32 at the given index.
       */
      public int getTestFixed32(int index) {
        return testFixed32_.getInt(index);
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8;</code>
       * @param index The index to set the value at.
       * @param value The testFixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestFixed32(
          int index, int value) {

        ensureTestFixed32IsMutable();
        testFixed32_.setInt(index, value);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8;</code>
       * @param value The testFixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addTestFixed32(int value) {

        ensureTestFixed32IsMutable();
        testFixed32_.addInt(value);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8;</code>
       * @param values The testFixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestFixed32(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTestFixed32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testFixed32_);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestFixed32() {
        testFixed32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList testUint64_ = emptyLongList();
      private void ensureTestUint64IsMutable() {
        if (!testUint64_.isModifiable()) {
          testUint64_ = mutableCopy(testUint64_);
        }
        bitField0_ |= 0x00000100;
      }
      /**
       * <code>repeated uint64 test_uint64 = 9;</code>
       * @return A list containing the testUint64.
       */
      public java.util.List<java.lang.Long>
          getTestUint64List() {
        testUint64_.makeImmutable();
        return testUint64_;
      }
      /**
       * <code>repeated uint64 test_uint64 = 9;</code>
       * @return The count of testUint64.
       */
      public int getTestUint64Count() {
        return testUint64_.size();
      }
      /**
       * <code>repeated uint64 test_uint64 = 9;</code>
       * @param index The index of the element to return.
       * @return The testUint64 at the given index.
       */
      public long getTestUint64(int index) {
        return testUint64_.getLong(index);
      }
      /**
       * <code>repeated uint64 test_uint64 = 9;</code>
       * @param index The index to set the value at.
       * @param value The testUint64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestUint64(
          int index, long value) {

        ensureTestUint64IsMutable();
        testUint64_.setLong(index, value);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint64 test_uint64 = 9;</code>
       * @param value The testUint64 to add.
       * @return This builder for chaining.
       */
      public Builder addTestUint64(long value) {

        ensureTestUint64IsMutable();
        testUint64_.addLong(value);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint64 test_uint64 = 9;</code>
       * @param values The testUint64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestUint64(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureTestUint64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testUint64_);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint64 test_uint64 = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestUint64() {
        testUint64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList testFixed64_ = emptyLongList();
      private void ensureTestFixed64IsMutable() {
        if (!testFixed64_.isModifiable()) {
          testFixed64_ = mutableCopy(testFixed64_);
        }
        bitField0_ |= 0x00000200;
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10;</code>
       * @return A list containing the testFixed64.
       */
      public java.util.List<java.lang.Long>
          getTestFixed64List() {
        testFixed64_.makeImmutable();
        return testFixed64_;
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10;</code>
       * @return The count of testFixed64.
       */
      public int getTestFixed64Count() {
        return testFixed64_.size();
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10;</code>
       * @param index The index of the element to return.
       * @return The testFixed64 at the given index.
       */
      public long getTestFixed64(int index) {
        return testFixed64_.getLong(index);
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10;</code>
       * @param index The index to set the value at.
       * @param value The testFixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestFixed64(
          int index, long value) {

        ensureTestFixed64IsMutable();
        testFixed64_.setLong(index, value);
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10;</code>
       * @param value The testFixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addTestFixed64(long value) {

        ensureTestFixed64IsMutable();
        testFixed64_.addLong(value);
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10;</code>
       * @param values The testFixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestFixed64(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureTestFixed64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testFixed64_);
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestFixed64() {
        testFixed64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.FloatList testFloat_ = emptyFloatList();
      private void ensureTestFloatIsMutable() {
        if (!testFloat_.isModifiable()) {
          testFloat_ = mutableCopy(testFloat_);
        }
        bitField0_ |= 0x00000400;
      }
      /**
       * <code>repeated float test_float = 11;</code>
       * @return A list containing the testFloat.
       */
      public java.util.List<java.lang.Float>
          getTestFloatList() {
        testFloat_.makeImmutable();
        return testFloat_;
      }
      /**
       * <code>repeated float test_float = 11;</code>
       * @return The count of testFloat.
       */
      public int getTestFloatCount() {
        return testFloat_.size();
      }
      /**
       * <code>repeated float test_float = 11;</code>
       * @param index The index of the element to return.
       * @return The testFloat at the given index.
       */
      public float getTestFloat(int index) {
        return testFloat_.getFloat(index);
      }
      /**
       * <code>repeated float test_float = 11;</code>
       * @param index The index to set the value at.
       * @param value The testFloat to set.
       * @return This builder for chaining.
       */
      public Builder setTestFloat(
          int index, float value) {

        ensureTestFloatIsMutable();
        testFloat_.setFloat(index, value);
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>repeated float test_float = 11;</code>
       * @param value The testFloat to add.
       * @return This builder for chaining.
       */
      public Builder addTestFloat(float value) {

        ensureTestFloatIsMutable();
        testFloat_.addFloat(value);
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>repeated float test_float = 11;</code>
       * @param values The testFloat to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestFloat(
          java.lang.Iterable<? extends java.lang.Float> values) {
        ensureTestFloatIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testFloat_);
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>repeated float test_float = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestFloat() {
        testFloat_ = emptyFloatList();
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList testDouble_ = emptyDoubleList();
      private void ensureTestDoubleIsMutable() {
        if (!testDouble_.isModifiable()) {
          testDouble_ = mutableCopy(testDouble_);
        }
        bitField0_ |= 0x00000800;
      }
      /**
       * <code>repeated double test_double = 12;</code>
       * @return A list containing the testDouble.
       */
      public java.util.List<java.lang.Double>
          getTestDoubleList() {
        testDouble_.makeImmutable();
        return testDouble_;
      }
      /**
       * <code>repeated double test_double = 12;</code>
       * @return The count of testDouble.
       */
      public int getTestDoubleCount() {
        return testDouble_.size();
      }
      /**
       * <code>repeated double test_double = 12;</code>
       * @param index The index of the element to return.
       * @return The testDouble at the given index.
       */
      public double getTestDouble(int index) {
        return testDouble_.getDouble(index);
      }
      /**
       * <code>repeated double test_double = 12;</code>
       * @param index The index to set the value at.
       * @param value The testDouble to set.
       * @return This builder for chaining.
       */
      public Builder setTestDouble(
          int index, double value) {

        ensureTestDoubleIsMutable();
        testDouble_.setDouble(index, value);
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>repeated double test_double = 12;</code>
       * @param value The testDouble to add.
       * @return This builder for chaining.
       */
      public Builder addTestDouble(double value) {

        ensureTestDoubleIsMutable();
        testDouble_.addDouble(value);
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>repeated double test_double = 12;</code>
       * @param values The testDouble to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestDouble(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureTestDoubleIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testDouble_);
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>repeated double test_double = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestDouble() {
        testDouble_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000800);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.BooleanList testBoolean_ = emptyBooleanList();
      private void ensureTestBooleanIsMutable() {
        if (!testBoolean_.isModifiable()) {
          testBoolean_ = mutableCopy(testBoolean_);
        }
        bitField0_ |= 0x00001000;
      }
      /**
       * <code>repeated bool test_boolean = 13;</code>
       * @return A list containing the testBoolean.
       */
      public java.util.List<java.lang.Boolean>
          getTestBooleanList() {
        testBoolean_.makeImmutable();
        return testBoolean_;
      }
      /**
       * <code>repeated bool test_boolean = 13;</code>
       * @return The count of testBoolean.
       */
      public int getTestBooleanCount() {
        return testBoolean_.size();
      }
      /**
       * <code>repeated bool test_boolean = 13;</code>
       * @param index The index of the element to return.
       * @return The testBoolean at the given index.
       */
      public boolean getTestBoolean(int index) {
        return testBoolean_.getBoolean(index);
      }
      /**
       * <code>repeated bool test_boolean = 13;</code>
       * @param index The index to set the value at.
       * @param value The testBoolean to set.
       * @return This builder for chaining.
       */
      public Builder setTestBoolean(
          int index, boolean value) {

        ensureTestBooleanIsMutable();
        testBoolean_.setBoolean(index, value);
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool test_boolean = 13;</code>
       * @param value The testBoolean to add.
       * @return This builder for chaining.
       */
      public Builder addTestBoolean(boolean value) {

        ensureTestBooleanIsMutable();
        testBoolean_.addBoolean(value);
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool test_boolean = 13;</code>
       * @param values The testBoolean to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestBoolean(
          java.lang.Iterable<? extends java.lang.Boolean> values) {
        ensureTestBooleanIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testBoolean_);
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool test_boolean = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestBoolean() {
        testBoolean_ = emptyBooleanList();
        bitField0_ = (bitField0_ & ~0x00001000);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> testEnumSmall_ =
        java.util.Collections.emptyList();
      private void ensureTestEnumSmallIsMutable() {
        if (!((bitField0_ & 0x00002000) != 0)) {
          testEnumSmall_ = new java.util.ArrayList<java.lang.Integer>(testEnumSmall_);
          bitField0_ |= 0x00002000;
        }
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14;</code>
       * @return A list containing the testEnumSmall.
       */
      public java.util.List<foo.TestFull.TestEnumSmall> getTestEnumSmallList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer, foo.TestFull.TestEnumSmall>(testEnumSmall_, testEnumSmall_converter_);
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14;</code>
       * @return The count of testEnumSmall.
       */
      public int getTestEnumSmallCount() {
        return testEnumSmall_.size();
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14;</code>
       * @param index The index of the element to return.
       * @return The testEnumSmall at the given index.
       */
      public foo.TestFull.TestEnumSmall getTestEnumSmall(int index) {
        return testEnumSmall_converter_.convert(testEnumSmall_.get(index));
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14;</code>
       * @param index The index to set the value at.
       * @param value The testEnumSmall to set.
       * @return This builder for chaining.
       */
      public Builder setTestEnumSmall(
          int index, foo.TestFull.TestEnumSmall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTestEnumSmallIsMutable();
        testEnumSmall_.set(index, value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14;</code>
       * @param value The testEnumSmall to add.
       * @return This builder for chaining.
       */
      public Builder addTestEnumSmall(foo.TestFull.TestEnumSmall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTestEnumSmallIsMutable();
        testEnumSmall_.add(value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14;</code>
       * @param values The testEnumSmall to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestEnumSmall(
          java.lang.Iterable<? extends foo.TestFull.TestEnumSmall> values) {
        ensureTestEnumSmallIsMutable();
        for (foo.TestFull.TestEnumSmall value : values) {
          testEnumSmall_.add(value.getNumber());
        }
        onChanged();
        return this;
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestEnumSmall() {
        testEnumSmall_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00002000);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> testEnum_ =
        java.util.Collections.emptyList();
      private void ensureTestEnumIsMutable() {
        if (!((bitField0_ & 0x00004000) != 0)) {
          testEnum_ = new java.util.ArrayList<java.lang.Integer>(testEnum_);
          bitField0_ |= 0x00004000;
        }
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15;</code>
       * @return A list containing the testEnum.
       */
      public java.util.List<foo.TestFull.TestEnum> getTestEnumList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer, foo.TestFull.TestEnum>(testEnum_, testEnum_converter_);
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15;</code>
       * @return The count of testEnum.
       */
      public int getTestEnumCount() {
        return testEnum_.size();
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15;</code>
       * @param index The index of the element to return.
       * @return The testEnum at the given index.
       */
      public foo.TestFull.TestEnum getTestEnum(int index) {
        return testEnum_converter_.convert(testEnum_.get(index));
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15;</code>
       * @param index The index to set the value at.
       * @param value The testEnum to set.
       * @return This builder for chaining.
       */
      public Builder setTestEnum(
          int index, foo.TestFull.TestEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTestEnumIsMutable();
        testEnum_.set(index, value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15;</code>
       * @param value The testEnum to add.
       * @return This builder for chaining.
       */
      public Builder addTestEnum(foo.TestFull.TestEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTestEnumIsMutable();
        testEnum_.add(value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15;</code>
       * @param values The testEnum to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestEnum(
          java.lang.Iterable<? extends foo.TestFull.TestEnum> values) {
        ensureTestEnumIsMutable();
        for (foo.TestFull.TestEnum value : values) {
          testEnum_.add(value.getNumber());
        }
        onChanged();
        return this;
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestEnum() {
        testEnum_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00004000);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList testString_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureTestStringIsMutable() {
        if (!testString_.isModifiable()) {
          testString_ = new com.google.protobuf.LazyStringArrayList(testString_);
        }
        bitField0_ |= 0x00008000;
      }
      /**
       * <code>repeated string test_string = 16;</code>
       * @return A list containing the testString.
       */
      public com.google.protobuf.ProtocolStringList
          getTestStringList() {
        testString_.makeImmutable();
        return testString_;
      }
      /**
       * <code>repeated string test_string = 16;</code>
       * @return The count of testString.
       */
      public int getTestStringCount() {
        return testString_.size();
      }
      /**
       * <code>repeated string test_string = 16;</code>
       * @param index The index of the element to return.
       * @return The testString at the given index.
       */
      public java.lang.String getTestString(int index) {
        return testString_.get(index);
      }
      /**
       * <code>repeated string test_string = 16;</code>
       * @param index The index of the value to return.
       * @return The bytes of the testString at the given index.
       */
      public com.google.protobuf.ByteString
          getTestStringBytes(int index) {
        return testString_.getByteString(index);
      }
      /**
       * <code>repeated string test_string = 16;</code>
       * @param index The index to set the value at.
       * @param value The testString to set.
       * @return This builder for chaining.
       */
      public Builder setTestString(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTestStringIsMutable();
        testString_.set(index, value);
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string test_string = 16;</code>
       * @param value The testString to add.
       * @return This builder for chaining.
       */
      public Builder addTestString(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTestStringIsMutable();
        testString_.add(value);
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string test_string = 16;</code>
       * @param values The testString to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestString(
          java.lang.Iterable<java.lang.String> values) {
        ensureTestStringIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testString_);
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string test_string = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestString() {
        testString_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00008000);;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string test_string = 16;</code>
       * @param value The bytes of the testString to add.
       * @return This builder for chaining.
       */
      public Builder addTestStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTestStringIsMutable();
        testString_.add(value);
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }

      private java.util.List<com.google.protobuf.ByteString> testBytes_ = java.util.Collections.emptyList();
      private void ensureTestBytesIsMutable() {
        if (!((bitField0_ & 0x00010000) != 0)) {
          testBytes_ = new java.util.ArrayList<com.google.protobuf.ByteString>(testBytes_);
          bitField0_ |= 0x00010000;
        }
      }
      /**
       * <code>repeated bytes test_bytes = 17;</code>
       * @return A list containing the testBytes.
       */
      public java.util.List<com.google.protobuf.ByteString>
          getTestBytesList() {
        return ((bitField0_ & 0x00010000) != 0) ?
                 java.util.Collections.unmodifiableList(testBytes_) : testBytes_;
      }
      /**
       * <code>repeated bytes test_bytes = 17;</code>
       * @return The count of testBytes.
       */
      public int getTestBytesCount() {
        return testBytes_.size();
      }
      /**
       * <code>repeated bytes test_bytes = 17;</code>
       * @param index The index of the element to return.
       * @return The testBytes at the given index.
       */
      public com.google.protobuf.ByteString getTestBytes(int index) {
        return testBytes_.get(index);
      }
      /**
       * <code>repeated bytes test_bytes = 17;</code>
       * @param index The index to set the value at.
       * @param value The testBytes to set.
       * @return This builder for chaining.
       */
      public Builder setTestBytes(
          int index, com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTestBytesIsMutable();
        testBytes_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bytes test_bytes = 17;</code>
       * @param value The testBytes to add.
       * @return This builder for chaining.
       */
      public Builder addTestBytes(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTestBytesIsMutable();
        testBytes_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bytes test_bytes = 17;</code>
       * @param values The testBytes to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestBytes(
          java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
        ensureTestBytesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testBytes_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bytes test_bytes = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestBytes() {
        testBytes_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00010000);
        onChanged();
        return this;
      }

      private java.util.List<foo.TestFull.SubMess> testMessage_ =
        java.util.Collections.emptyList();
      private void ensureTestMessageIsMutable() {
        if (!((bitField0_ & 0x00020000) != 0)) {
          testMessage_ = new java.util.ArrayList<foo.TestFull.SubMess>(testMessage_);
          bitField0_ |= 0x00020000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder> testMessageBuilder_;

      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public java.util.List<foo.TestFull.SubMess> getTestMessageList() {
        if (testMessageBuilder_ == null) {
          return java.util.Collections.unmodifiableList(testMessage_);
        } else {
          return testMessageBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public int getTestMessageCount() {
        if (testMessageBuilder_ == null) {
          return testMessage_.size();
        } else {
          return testMessageBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public foo.TestFull.SubMess getTestMessage(int index) {
        if (testMessageBuilder_ == null) {
          return testMessage_.get(index);
        } else {
          return testMessageBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public Builder setTestMessage(
          int index, foo.TestFull.SubMess value) {
        if (testMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestMessageIsMutable();
          testMessage_.set(index, value);
          onChanged();
        } else {
          testMessageBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public Builder setTestMessage(
          int index, foo.TestFull.SubMess.Builder builderForValue) {
        if (testMessageBuilder_ == null) {
          ensureTestMessageIsMutable();
          testMessage_.set(index, builderForValue.build());
          onChanged();
        } else {
          testMessageBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public Builder addTestMessage(foo.TestFull.SubMess value) {
        if (testMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestMessageIsMutable();
          testMessage_.add(value);
          onChanged();
        } else {
          testMessageBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public Builder addTestMessage(
          int index, foo.TestFull.SubMess value) {
        if (testMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestMessageIsMutable();
          testMessage_.add(index, value);
          onChanged();
        } else {
          testMessageBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public Builder addTestMessage(
          foo.TestFull.SubMess.Builder builderForValue) {
        if (testMessageBuilder_ == null) {
          ensureTestMessageIsMutable();
          testMessage_.add(builderForValue.build());
          onChanged();
        } else {
          testMessageBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public Builder addTestMessage(
          int index, foo.TestFull.SubMess.Builder builderForValue) {
        if (testMessageBuilder_ == null) {
          ensureTestMessageIsMutable();
          testMessage_.add(index, builderForValue.build());
          onChanged();
        } else {
          testMessageBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public Builder addAllTestMessage(
          java.lang.Iterable<? extends foo.TestFull.SubMess> values) {
        if (testMessageBuilder_ == null) {
          ensureTestMessageIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, testMessage_);
          onChanged();
        } else {
          testMessageBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public Builder clearTestMessage() {
        if (testMessageBuilder_ == null) {
          testMessage_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00020000);
          onChanged();
        } else {
          testMessageBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public Builder removeTestMessage(int index) {
        if (testMessageBuilder_ == null) {
          ensureTestMessageIsMutable();
          testMessage_.remove(index);
          onChanged();
        } else {
          testMessageBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public foo.TestFull.SubMess.Builder getTestMessageBuilder(
          int index) {
        return getTestMessageFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public foo.TestFull.SubMessOrBuilder getTestMessageOrBuilder(
          int index) {
        if (testMessageBuilder_ == null) {
          return testMessage_.get(index);  } else {
          return testMessageBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public java.util.List<? extends foo.TestFull.SubMessOrBuilder> 
           getTestMessageOrBuilderList() {
        if (testMessageBuilder_ != null) {
          return testMessageBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(testMessage_);
        }
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public foo.TestFull.SubMess.Builder addTestMessageBuilder() {
        return getTestMessageFieldBuilder().addBuilder(
            foo.TestFull.SubMess.getDefaultInstance());
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public foo.TestFull.SubMess.Builder addTestMessageBuilder(
          int index) {
        return getTestMessageFieldBuilder().addBuilder(
            index, foo.TestFull.SubMess.getDefaultInstance());
      }
      /**
       * <code>repeated .foo.SubMess test_message = 18;</code>
       */
      public java.util.List<foo.TestFull.SubMess.Builder> 
           getTestMessageBuilderList() {
        return getTestMessageFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder> 
          getTestMessageFieldBuilder() {
        if (testMessageBuilder_ == null) {
          testMessageBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder>(
                  testMessage_,
                  ((bitField0_ & 0x00020000) != 0),
                  getParentForChildren(),
                  isClean());
          testMessage_ = null;
        }
        return testMessageBuilder_;
      }
      @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:foo.TestMess)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMess)
    private static final foo.TestFull.TestMess DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMess();
    }

    public static foo.TestFull.TestMess getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMess getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessPackedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessPacked)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated int32 test_int32 = 1 [packed = true];</code>
     * @return A list containing the testInt32.
     */
    java.util.List<java.lang.Integer> getTestInt32List();
    /**
     * <code>repeated int32 test_int32 = 1 [packed = true];</code>
     * @return The count of testInt32.
     */
    int getTestInt32Count();
    /**
     * <code>repeated int32 test_int32 = 1 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testInt32 at the given index.
     */
    int getTestInt32(int index);

    /**
     * <code>repeated sint32 test_sint32 = 2 [packed = true];</code>
     * @return A list containing the testSint32.
     */
    java.util.List<java.lang.Integer> getTestSint32List();
    /**
     * <code>repeated sint32 test_sint32 = 2 [packed = true];</code>
     * @return The count of testSint32.
     */
    int getTestSint32Count();
    /**
     * <code>repeated sint32 test_sint32 = 2 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testSint32 at the given index.
     */
    int getTestSint32(int index);

    /**
     * <code>repeated sfixed32 test_sfixed32 = 3 [packed = true];</code>
     * @return A list containing the testSfixed32.
     */
    java.util.List<java.lang.Integer> getTestSfixed32List();
    /**
     * <code>repeated sfixed32 test_sfixed32 = 3 [packed = true];</code>
     * @return The count of testSfixed32.
     */
    int getTestSfixed32Count();
    /**
     * <code>repeated sfixed32 test_sfixed32 = 3 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testSfixed32 at the given index.
     */
    int getTestSfixed32(int index);

    /**
     * <code>repeated int64 test_int64 = 4 [packed = true];</code>
     * @return A list containing the testInt64.
     */
    java.util.List<java.lang.Long> getTestInt64List();
    /**
     * <code>repeated int64 test_int64 = 4 [packed = true];</code>
     * @return The count of testInt64.
     */
    int getTestInt64Count();
    /**
     * <code>repeated int64 test_int64 = 4 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testInt64 at the given index.
     */
    long getTestInt64(int index);

    /**
     * <code>repeated sint64 test_sint64 = 5 [packed = true];</code>
     * @return A list containing the testSint64.
     */
    java.util.List<java.lang.Long> getTestSint64List();
    /**
     * <code>repeated sint64 test_sint64 = 5 [packed = true];</code>
     * @return The count of testSint64.
     */
    int getTestSint64Count();
    /**
     * <code>repeated sint64 test_sint64 = 5 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testSint64 at the given index.
     */
    long getTestSint64(int index);

    /**
     * <code>repeated sfixed64 test_sfixed64 = 6 [packed = true];</code>
     * @return A list containing the testSfixed64.
     */
    java.util.List<java.lang.Long> getTestSfixed64List();
    /**
     * <code>repeated sfixed64 test_sfixed64 = 6 [packed = true];</code>
     * @return The count of testSfixed64.
     */
    int getTestSfixed64Count();
    /**
     * <code>repeated sfixed64 test_sfixed64 = 6 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testSfixed64 at the given index.
     */
    long getTestSfixed64(int index);

    /**
     * <code>repeated uint32 test_uint32 = 7 [packed = true];</code>
     * @return A list containing the testUint32.
     */
    java.util.List<java.lang.Integer> getTestUint32List();
    /**
     * <code>repeated uint32 test_uint32 = 7 [packed = true];</code>
     * @return The count of testUint32.
     */
    int getTestUint32Count();
    /**
     * <code>repeated uint32 test_uint32 = 7 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testUint32 at the given index.
     */
    int getTestUint32(int index);

    /**
     * <code>repeated fixed32 test_fixed32 = 8 [packed = true];</code>
     * @return A list containing the testFixed32.
     */
    java.util.List<java.lang.Integer> getTestFixed32List();
    /**
     * <code>repeated fixed32 test_fixed32 = 8 [packed = true];</code>
     * @return The count of testFixed32.
     */
    int getTestFixed32Count();
    /**
     * <code>repeated fixed32 test_fixed32 = 8 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testFixed32 at the given index.
     */
    int getTestFixed32(int index);

    /**
     * <code>repeated uint64 test_uint64 = 9 [packed = true];</code>
     * @return A list containing the testUint64.
     */
    java.util.List<java.lang.Long> getTestUint64List();
    /**
     * <code>repeated uint64 test_uint64 = 9 [packed = true];</code>
     * @return The count of testUint64.
     */
    int getTestUint64Count();
    /**
     * <code>repeated uint64 test_uint64 = 9 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testUint64 at the given index.
     */
    long getTestUint64(int index);

    /**
     * <code>repeated fixed64 test_fixed64 = 10 [packed = true];</code>
     * @return A list containing the testFixed64.
     */
    java.util.List<java.lang.Long> getTestFixed64List();
    /**
     * <code>repeated fixed64 test_fixed64 = 10 [packed = true];</code>
     * @return The count of testFixed64.
     */
    int getTestFixed64Count();
    /**
     * <code>repeated fixed64 test_fixed64 = 10 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testFixed64 at the given index.
     */
    long getTestFixed64(int index);

    /**
     * <code>repeated float test_float = 11 [packed = true];</code>
     * @return A list containing the testFloat.
     */
    java.util.List<java.lang.Float> getTestFloatList();
    /**
     * <code>repeated float test_float = 11 [packed = true];</code>
     * @return The count of testFloat.
     */
    int getTestFloatCount();
    /**
     * <code>repeated float test_float = 11 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testFloat at the given index.
     */
    float getTestFloat(int index);

    /**
     * <code>repeated double test_double = 12 [packed = true];</code>
     * @return A list containing the testDouble.
     */
    java.util.List<java.lang.Double> getTestDoubleList();
    /**
     * <code>repeated double test_double = 12 [packed = true];</code>
     * @return The count of testDouble.
     */
    int getTestDoubleCount();
    /**
     * <code>repeated double test_double = 12 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testDouble at the given index.
     */
    double getTestDouble(int index);

    /**
     * <code>repeated bool test_boolean = 13 [packed = true];</code>
     * @return A list containing the testBoolean.
     */
    java.util.List<java.lang.Boolean> getTestBooleanList();
    /**
     * <code>repeated bool test_boolean = 13 [packed = true];</code>
     * @return The count of testBoolean.
     */
    int getTestBooleanCount();
    /**
     * <code>repeated bool test_boolean = 13 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testBoolean at the given index.
     */
    boolean getTestBoolean(int index);

    /**
     * <code>repeated .foo.TestEnumSmall test_enum_small = 14 [packed = true];</code>
     * @return A list containing the testEnumSmall.
     */
    java.util.List<foo.TestFull.TestEnumSmall> getTestEnumSmallList();
    /**
     * <code>repeated .foo.TestEnumSmall test_enum_small = 14 [packed = true];</code>
     * @return The count of testEnumSmall.
     */
    int getTestEnumSmallCount();
    /**
     * <code>repeated .foo.TestEnumSmall test_enum_small = 14 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testEnumSmall at the given index.
     */
    foo.TestFull.TestEnumSmall getTestEnumSmall(int index);

    /**
     * <code>repeated .foo.TestEnum test_enum = 15 [packed = true];</code>
     * @return A list containing the testEnum.
     */
    java.util.List<foo.TestFull.TestEnum> getTestEnumList();
    /**
     * <code>repeated .foo.TestEnum test_enum = 15 [packed = true];</code>
     * @return The count of testEnum.
     */
    int getTestEnumCount();
    /**
     * <code>repeated .foo.TestEnum test_enum = 15 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testEnum at the given index.
     */
    foo.TestFull.TestEnum getTestEnum(int index);
  }
  /**
   * Protobuf type {@code foo.TestMessPacked}
   */
  public static final class TestMessPacked extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessPacked)
      TestMessPackedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessPacked.newBuilder() to construct.
    private TestMessPacked(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessPacked() {
      testInt32_ = emptyIntList();
      testSint32_ = emptyIntList();
      testSfixed32_ = emptyIntList();
      testInt64_ = emptyLongList();
      testSint64_ = emptyLongList();
      testSfixed64_ = emptyLongList();
      testUint32_ = emptyIntList();
      testFixed32_ = emptyIntList();
      testUint64_ = emptyLongList();
      testFixed64_ = emptyLongList();
      testFloat_ = emptyFloatList();
      testDouble_ = emptyDoubleList();
      testBoolean_ = emptyBooleanList();
      testEnumSmall_ = java.util.Collections.emptyList();
      testEnum_ = java.util.Collections.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessPacked_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessPacked_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessPacked.class, foo.TestFull.TestMessPacked.Builder.class);
    }

    public static final int TEST_INT32_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList testInt32_ =
        emptyIntList();
    /**
     * <code>repeated int32 test_int32 = 1 [packed = true];</code>
     * @return A list containing the testInt32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTestInt32List() {
      return testInt32_;
    }
    /**
     * <code>repeated int32 test_int32 = 1 [packed = true];</code>
     * @return The count of testInt32.
     */
    public int getTestInt32Count() {
      return testInt32_.size();
    }
    /**
     * <code>repeated int32 test_int32 = 1 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testInt32 at the given index.
     */
    public int getTestInt32(int index) {
      return testInt32_.getInt(index);
    }
    private int testInt32MemoizedSerializedSize = -1;

    public static final int TEST_SINT32_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList testSint32_ =
        emptyIntList();
    /**
     * <code>repeated sint32 test_sint32 = 2 [packed = true];</code>
     * @return A list containing the testSint32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTestSint32List() {
      return testSint32_;
    }
    /**
     * <code>repeated sint32 test_sint32 = 2 [packed = true];</code>
     * @return The count of testSint32.
     */
    public int getTestSint32Count() {
      return testSint32_.size();
    }
    /**
     * <code>repeated sint32 test_sint32 = 2 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testSint32 at the given index.
     */
    public int getTestSint32(int index) {
      return testSint32_.getInt(index);
    }
    private int testSint32MemoizedSerializedSize = -1;

    public static final int TEST_SFIXED32_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList testSfixed32_ =
        emptyIntList();
    /**
     * <code>repeated sfixed32 test_sfixed32 = 3 [packed = true];</code>
     * @return A list containing the testSfixed32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTestSfixed32List() {
      return testSfixed32_;
    }
    /**
     * <code>repeated sfixed32 test_sfixed32 = 3 [packed = true];</code>
     * @return The count of testSfixed32.
     */
    public int getTestSfixed32Count() {
      return testSfixed32_.size();
    }
    /**
     * <code>repeated sfixed32 test_sfixed32 = 3 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testSfixed32 at the given index.
     */
    public int getTestSfixed32(int index) {
      return testSfixed32_.getInt(index);
    }
    private int testSfixed32MemoizedSerializedSize = -1;

    public static final int TEST_INT64_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList testInt64_ =
        emptyLongList();
    /**
     * <code>repeated int64 test_int64 = 4 [packed = true];</code>
     * @return A list containing the testInt64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getTestInt64List() {
      return testInt64_;
    }
    /**
     * <code>repeated int64 test_int64 = 4 [packed = true];</code>
     * @return The count of testInt64.
     */
    public int getTestInt64Count() {
      return testInt64_.size();
    }
    /**
     * <code>repeated int64 test_int64 = 4 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testInt64 at the given index.
     */
    public long getTestInt64(int index) {
      return testInt64_.getLong(index);
    }
    private int testInt64MemoizedSerializedSize = -1;

    public static final int TEST_SINT64_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList testSint64_ =
        emptyLongList();
    /**
     * <code>repeated sint64 test_sint64 = 5 [packed = true];</code>
     * @return A list containing the testSint64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getTestSint64List() {
      return testSint64_;
    }
    /**
     * <code>repeated sint64 test_sint64 = 5 [packed = true];</code>
     * @return The count of testSint64.
     */
    public int getTestSint64Count() {
      return testSint64_.size();
    }
    /**
     * <code>repeated sint64 test_sint64 = 5 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testSint64 at the given index.
     */
    public long getTestSint64(int index) {
      return testSint64_.getLong(index);
    }
    private int testSint64MemoizedSerializedSize = -1;

    public static final int TEST_SFIXED64_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList testSfixed64_ =
        emptyLongList();
    /**
     * <code>repeated sfixed64 test_sfixed64 = 6 [packed = true];</code>
     * @return A list containing the testSfixed64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getTestSfixed64List() {
      return testSfixed64_;
    }
    /**
     * <code>repeated sfixed64 test_sfixed64 = 6 [packed = true];</code>
     * @return The count of testSfixed64.
     */
    public int getTestSfixed64Count() {
      return testSfixed64_.size();
    }
    /**
     * <code>repeated sfixed64 test_sfixed64 = 6 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testSfixed64 at the given index.
     */
    public long getTestSfixed64(int index) {
      return testSfixed64_.getLong(index);
    }
    private int testSfixed64MemoizedSerializedSize = -1;

    public static final int TEST_UINT32_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList testUint32_ =
        emptyIntList();
    /**
     * <code>repeated uint32 test_uint32 = 7 [packed = true];</code>
     * @return A list containing the testUint32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTestUint32List() {
      return testUint32_;
    }
    /**
     * <code>repeated uint32 test_uint32 = 7 [packed = true];</code>
     * @return The count of testUint32.
     */
    public int getTestUint32Count() {
      return testUint32_.size();
    }
    /**
     * <code>repeated uint32 test_uint32 = 7 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testUint32 at the given index.
     */
    public int getTestUint32(int index) {
      return testUint32_.getInt(index);
    }
    private int testUint32MemoizedSerializedSize = -1;

    public static final int TEST_FIXED32_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList testFixed32_ =
        emptyIntList();
    /**
     * <code>repeated fixed32 test_fixed32 = 8 [packed = true];</code>
     * @return A list containing the testFixed32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTestFixed32List() {
      return testFixed32_;
    }
    /**
     * <code>repeated fixed32 test_fixed32 = 8 [packed = true];</code>
     * @return The count of testFixed32.
     */
    public int getTestFixed32Count() {
      return testFixed32_.size();
    }
    /**
     * <code>repeated fixed32 test_fixed32 = 8 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testFixed32 at the given index.
     */
    public int getTestFixed32(int index) {
      return testFixed32_.getInt(index);
    }
    private int testFixed32MemoizedSerializedSize = -1;

    public static final int TEST_UINT64_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList testUint64_ =
        emptyLongList();
    /**
     * <code>repeated uint64 test_uint64 = 9 [packed = true];</code>
     * @return A list containing the testUint64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getTestUint64List() {
      return testUint64_;
    }
    /**
     * <code>repeated uint64 test_uint64 = 9 [packed = true];</code>
     * @return The count of testUint64.
     */
    public int getTestUint64Count() {
      return testUint64_.size();
    }
    /**
     * <code>repeated uint64 test_uint64 = 9 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testUint64 at the given index.
     */
    public long getTestUint64(int index) {
      return testUint64_.getLong(index);
    }
    private int testUint64MemoizedSerializedSize = -1;

    public static final int TEST_FIXED64_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList testFixed64_ =
        emptyLongList();
    /**
     * <code>repeated fixed64 test_fixed64 = 10 [packed = true];</code>
     * @return A list containing the testFixed64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getTestFixed64List() {
      return testFixed64_;
    }
    /**
     * <code>repeated fixed64 test_fixed64 = 10 [packed = true];</code>
     * @return The count of testFixed64.
     */
    public int getTestFixed64Count() {
      return testFixed64_.size();
    }
    /**
     * <code>repeated fixed64 test_fixed64 = 10 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testFixed64 at the given index.
     */
    public long getTestFixed64(int index) {
      return testFixed64_.getLong(index);
    }
    private int testFixed64MemoizedSerializedSize = -1;

    public static final int TEST_FLOAT_FIELD_NUMBER = 11;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.FloatList testFloat_ =
        emptyFloatList();
    /**
     * <code>repeated float test_float = 11 [packed = true];</code>
     * @return A list containing the testFloat.
     */
    @java.lang.Override
    public java.util.List<java.lang.Float>
        getTestFloatList() {
      return testFloat_;
    }
    /**
     * <code>repeated float test_float = 11 [packed = true];</code>
     * @return The count of testFloat.
     */
    public int getTestFloatCount() {
      return testFloat_.size();
    }
    /**
     * <code>repeated float test_float = 11 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testFloat at the given index.
     */
    public float getTestFloat(int index) {
      return testFloat_.getFloat(index);
    }
    private int testFloatMemoizedSerializedSize = -1;

    public static final int TEST_DOUBLE_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.DoubleList testDouble_ =
        emptyDoubleList();
    /**
     * <code>repeated double test_double = 12 [packed = true];</code>
     * @return A list containing the testDouble.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getTestDoubleList() {
      return testDouble_;
    }
    /**
     * <code>repeated double test_double = 12 [packed = true];</code>
     * @return The count of testDouble.
     */
    public int getTestDoubleCount() {
      return testDouble_.size();
    }
    /**
     * <code>repeated double test_double = 12 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testDouble at the given index.
     */
    public double getTestDouble(int index) {
      return testDouble_.getDouble(index);
    }
    private int testDoubleMemoizedSerializedSize = -1;

    public static final int TEST_BOOLEAN_FIELD_NUMBER = 13;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.BooleanList testBoolean_ =
        emptyBooleanList();
    /**
     * <code>repeated bool test_boolean = 13 [packed = true];</code>
     * @return A list containing the testBoolean.
     */
    @java.lang.Override
    public java.util.List<java.lang.Boolean>
        getTestBooleanList() {
      return testBoolean_;
    }
    /**
     * <code>repeated bool test_boolean = 13 [packed = true];</code>
     * @return The count of testBoolean.
     */
    public int getTestBooleanCount() {
      return testBoolean_.size();
    }
    /**
     * <code>repeated bool test_boolean = 13 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testBoolean at the given index.
     */
    public boolean getTestBoolean(int index) {
      return testBoolean_.getBoolean(index);
    }
    private int testBooleanMemoizedSerializedSize = -1;

    public static final int TEST_ENUM_SMALL_FIELD_NUMBER = 14;
    @SuppressWarnings("serial")
    private java.util.List<java.lang.Integer> testEnumSmall_;
    private static final com.google.protobuf.Internal.ListAdapter.Converter<
        java.lang.Integer, foo.TestFull.TestEnumSmall> testEnumSmall_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer, foo.TestFull.TestEnumSmall>() {
              public foo.TestFull.TestEnumSmall convert(java.lang.Integer from) {
                foo.TestFull.TestEnumSmall result = foo.TestFull.TestEnumSmall.forNumber(from);
                return result == null ? foo.TestFull.TestEnumSmall.NEG_VALUE : result;
              }
            };
    /**
     * <code>repeated .foo.TestEnumSmall test_enum_small = 14 [packed = true];</code>
     * @return A list containing the testEnumSmall.
     */
    @java.lang.Override
    public java.util.List<foo.TestFull.TestEnumSmall> getTestEnumSmallList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, foo.TestFull.TestEnumSmall>(testEnumSmall_, testEnumSmall_converter_);
    }
    /**
     * <code>repeated .foo.TestEnumSmall test_enum_small = 14 [packed = true];</code>
     * @return The count of testEnumSmall.
     */
    @java.lang.Override
    public int getTestEnumSmallCount() {
      return testEnumSmall_.size();
    }
    /**
     * <code>repeated .foo.TestEnumSmall test_enum_small = 14 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testEnumSmall at the given index.
     */
    @java.lang.Override
    public foo.TestFull.TestEnumSmall getTestEnumSmall(int index) {
      return testEnumSmall_converter_.convert(testEnumSmall_.get(index));
    }
    private int testEnumSmallMemoizedSerializedSize;

    public static final int TEST_ENUM_FIELD_NUMBER = 15;
    @SuppressWarnings("serial")
    private java.util.List<java.lang.Integer> testEnum_;
    private static final com.google.protobuf.Internal.ListAdapter.Converter<
        java.lang.Integer, foo.TestFull.TestEnum> testEnum_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer, foo.TestFull.TestEnum>() {
              public foo.TestFull.TestEnum convert(java.lang.Integer from) {
                foo.TestFull.TestEnum result = foo.TestFull.TestEnum.forNumber(from);
                return result == null ? foo.TestFull.TestEnum.VALUENEG123456 : result;
              }
            };
    /**
     * <code>repeated .foo.TestEnum test_enum = 15 [packed = true];</code>
     * @return A list containing the testEnum.
     */
    @java.lang.Override
    public java.util.List<foo.TestFull.TestEnum> getTestEnumList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, foo.TestFull.TestEnum>(testEnum_, testEnum_converter_);
    }
    /**
     * <code>repeated .foo.TestEnum test_enum = 15 [packed = true];</code>
     * @return The count of testEnum.
     */
    @java.lang.Override
    public int getTestEnumCount() {
      return testEnum_.size();
    }
    /**
     * <code>repeated .foo.TestEnum test_enum = 15 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The testEnum at the given index.
     */
    @java.lang.Override
    public foo.TestFull.TestEnum getTestEnum(int index) {
      return testEnum_converter_.convert(testEnum_.get(index));
    }
    private int testEnumMemoizedSerializedSize;

    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 (getTestInt32List().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(testInt32MemoizedSerializedSize);
      }
      for (int i = 0; i < testInt32_.size(); i++) {
        output.writeInt32NoTag(testInt32_.getInt(i));
      }
      if (getTestSint32List().size() > 0) {
        output.writeUInt32NoTag(18);
        output.writeUInt32NoTag(testSint32MemoizedSerializedSize);
      }
      for (int i = 0; i < testSint32_.size(); i++) {
        output.writeSInt32NoTag(testSint32_.getInt(i));
      }
      if (getTestSfixed32List().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(testSfixed32MemoizedSerializedSize);
      }
      for (int i = 0; i < testSfixed32_.size(); i++) {
        output.writeSFixed32NoTag(testSfixed32_.getInt(i));
      }
      if (getTestInt64List().size() > 0) {
        output.writeUInt32NoTag(34);
        output.writeUInt32NoTag(testInt64MemoizedSerializedSize);
      }
      for (int i = 0; i < testInt64_.size(); i++) {
        output.writeInt64NoTag(testInt64_.getLong(i));
      }
      if (getTestSint64List().size() > 0) {
        output.writeUInt32NoTag(42);
        output.writeUInt32NoTag(testSint64MemoizedSerializedSize);
      }
      for (int i = 0; i < testSint64_.size(); i++) {
        output.writeSInt64NoTag(testSint64_.getLong(i));
      }
      if (getTestSfixed64List().size() > 0) {
        output.writeUInt32NoTag(50);
        output.writeUInt32NoTag(testSfixed64MemoizedSerializedSize);
      }
      for (int i = 0; i < testSfixed64_.size(); i++) {
        output.writeSFixed64NoTag(testSfixed64_.getLong(i));
      }
      if (getTestUint32List().size() > 0) {
        output.writeUInt32NoTag(58);
        output.writeUInt32NoTag(testUint32MemoizedSerializedSize);
      }
      for (int i = 0; i < testUint32_.size(); i++) {
        output.writeUInt32NoTag(testUint32_.getInt(i));
      }
      if (getTestFixed32List().size() > 0) {
        output.writeUInt32NoTag(66);
        output.writeUInt32NoTag(testFixed32MemoizedSerializedSize);
      }
      for (int i = 0; i < testFixed32_.size(); i++) {
        output.writeFixed32NoTag(testFixed32_.getInt(i));
      }
      if (getTestUint64List().size() > 0) {
        output.writeUInt32NoTag(74);
        output.writeUInt32NoTag(testUint64MemoizedSerializedSize);
      }
      for (int i = 0; i < testUint64_.size(); i++) {
        output.writeUInt64NoTag(testUint64_.getLong(i));
      }
      if (getTestFixed64List().size() > 0) {
        output.writeUInt32NoTag(82);
        output.writeUInt32NoTag(testFixed64MemoizedSerializedSize);
      }
      for (int i = 0; i < testFixed64_.size(); i++) {
        output.writeFixed64NoTag(testFixed64_.getLong(i));
      }
      if (getTestFloatList().size() > 0) {
        output.writeUInt32NoTag(90);
        output.writeUInt32NoTag(testFloatMemoizedSerializedSize);
      }
      for (int i = 0; i < testFloat_.size(); i++) {
        output.writeFloatNoTag(testFloat_.getFloat(i));
      }
      if (getTestDoubleList().size() > 0) {
        output.writeUInt32NoTag(98);
        output.writeUInt32NoTag(testDoubleMemoizedSerializedSize);
      }
      for (int i = 0; i < testDouble_.size(); i++) {
        output.writeDoubleNoTag(testDouble_.getDouble(i));
      }
      if (getTestBooleanList().size() > 0) {
        output.writeUInt32NoTag(106);
        output.writeUInt32NoTag(testBooleanMemoizedSerializedSize);
      }
      for (int i = 0; i < testBoolean_.size(); i++) {
        output.writeBoolNoTag(testBoolean_.getBoolean(i));
      }
      if (getTestEnumSmallList().size() > 0) {
        output.writeUInt32NoTag(114);
        output.writeUInt32NoTag(testEnumSmallMemoizedSerializedSize);
      }
      for (int i = 0; i < testEnumSmall_.size(); i++) {
        output.writeEnumNoTag(testEnumSmall_.get(i));
      }
      if (getTestEnumList().size() > 0) {
        output.writeUInt32NoTag(122);
        output.writeUInt32NoTag(testEnumMemoizedSerializedSize);
      }
      for (int i = 0; i < testEnum_.size(); i++) {
        output.writeEnumNoTag(testEnum_.get(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 < testInt32_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(testInt32_.getInt(i));
        }
        size += dataSize;
        if (!getTestInt32List().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        testInt32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testSint32_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeSInt32SizeNoTag(testSint32_.getInt(i));
        }
        size += dataSize;
        if (!getTestSint32List().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        testSint32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getTestSfixed32List().size();
        size += dataSize;
        if (!getTestSfixed32List().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        testSfixed32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testInt64_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt64SizeNoTag(testInt64_.getLong(i));
        }
        size += dataSize;
        if (!getTestInt64List().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        testInt64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testSint64_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeSInt64SizeNoTag(testSint64_.getLong(i));
        }
        size += dataSize;
        if (!getTestSint64List().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        testSint64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getTestSfixed64List().size();
        size += dataSize;
        if (!getTestSfixed64List().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        testSfixed64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testUint32_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(testUint32_.getInt(i));
        }
        size += dataSize;
        if (!getTestUint32List().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        testUint32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getTestFixed32List().size();
        size += dataSize;
        if (!getTestFixed32List().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        testFixed32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testUint64_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt64SizeNoTag(testUint64_.getLong(i));
        }
        size += dataSize;
        if (!getTestUint64List().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        testUint64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getTestFixed64List().size();
        size += dataSize;
        if (!getTestFixed64List().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        testFixed64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getTestFloatList().size();
        size += dataSize;
        if (!getTestFloatList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        testFloatMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getTestDoubleList().size();
        size += dataSize;
        if (!getTestDoubleList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        testDoubleMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 1 * getTestBooleanList().size();
        size += dataSize;
        if (!getTestBooleanList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        testBooleanMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testEnumSmall_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(testEnumSmall_.get(i));
        }
        size += dataSize;
        if (!getTestEnumSmallList().isEmpty()) {  size += 1;
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(dataSize);
        }testEnumSmallMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < testEnum_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(testEnum_.get(i));
        }
        size += dataSize;
        if (!getTestEnumList().isEmpty()) {  size += 1;
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(dataSize);
        }testEnumMemoizedSerializedSize = 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 foo.TestFull.TestMessPacked)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessPacked other = (foo.TestFull.TestMessPacked) obj;

      if (!getTestInt32List()
          .equals(other.getTestInt32List())) return false;
      if (!getTestSint32List()
          .equals(other.getTestSint32List())) return false;
      if (!getTestSfixed32List()
          .equals(other.getTestSfixed32List())) return false;
      if (!getTestInt64List()
          .equals(other.getTestInt64List())) return false;
      if (!getTestSint64List()
          .equals(other.getTestSint64List())) return false;
      if (!getTestSfixed64List()
          .equals(other.getTestSfixed64List())) return false;
      if (!getTestUint32List()
          .equals(other.getTestUint32List())) return false;
      if (!getTestFixed32List()
          .equals(other.getTestFixed32List())) return false;
      if (!getTestUint64List()
          .equals(other.getTestUint64List())) return false;
      if (!getTestFixed64List()
          .equals(other.getTestFixed64List())) return false;
      if (!getTestFloatList()
          .equals(other.getTestFloatList())) return false;
      if (!getTestDoubleList()
          .equals(other.getTestDoubleList())) return false;
      if (!getTestBooleanList()
          .equals(other.getTestBooleanList())) return false;
      if (!testEnumSmall_.equals(other.testEnumSmall_)) return false;
      if (!testEnum_.equals(other.testEnum_)) 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 (getTestInt32Count() > 0) {
        hash = (37 * hash) + TEST_INT32_FIELD_NUMBER;
        hash = (53 * hash) + getTestInt32List().hashCode();
      }
      if (getTestSint32Count() > 0) {
        hash = (37 * hash) + TEST_SINT32_FIELD_NUMBER;
        hash = (53 * hash) + getTestSint32List().hashCode();
      }
      if (getTestSfixed32Count() > 0) {
        hash = (37 * hash) + TEST_SFIXED32_FIELD_NUMBER;
        hash = (53 * hash) + getTestSfixed32List().hashCode();
      }
      if (getTestInt64Count() > 0) {
        hash = (37 * hash) + TEST_INT64_FIELD_NUMBER;
        hash = (53 * hash) + getTestInt64List().hashCode();
      }
      if (getTestSint64Count() > 0) {
        hash = (37 * hash) + TEST_SINT64_FIELD_NUMBER;
        hash = (53 * hash) + getTestSint64List().hashCode();
      }
      if (getTestSfixed64Count() > 0) {
        hash = (37 * hash) + TEST_SFIXED64_FIELD_NUMBER;
        hash = (53 * hash) + getTestSfixed64List().hashCode();
      }
      if (getTestUint32Count() > 0) {
        hash = (37 * hash) + TEST_UINT32_FIELD_NUMBER;
        hash = (53 * hash) + getTestUint32List().hashCode();
      }
      if (getTestFixed32Count() > 0) {
        hash = (37 * hash) + TEST_FIXED32_FIELD_NUMBER;
        hash = (53 * hash) + getTestFixed32List().hashCode();
      }
      if (getTestUint64Count() > 0) {
        hash = (37 * hash) + TEST_UINT64_FIELD_NUMBER;
        hash = (53 * hash) + getTestUint64List().hashCode();
      }
      if (getTestFixed64Count() > 0) {
        hash = (37 * hash) + TEST_FIXED64_FIELD_NUMBER;
        hash = (53 * hash) + getTestFixed64List().hashCode();
      }
      if (getTestFloatCount() > 0) {
        hash = (37 * hash) + TEST_FLOAT_FIELD_NUMBER;
        hash = (53 * hash) + getTestFloatList().hashCode();
      }
      if (getTestDoubleCount() > 0) {
        hash = (37 * hash) + TEST_DOUBLE_FIELD_NUMBER;
        hash = (53 * hash) + getTestDoubleList().hashCode();
      }
      if (getTestBooleanCount() > 0) {
        hash = (37 * hash) + TEST_BOOLEAN_FIELD_NUMBER;
        hash = (53 * hash) + getTestBooleanList().hashCode();
      }
      if (getTestEnumSmallCount() > 0) {
        hash = (37 * hash) + TEST_ENUM_SMALL_FIELD_NUMBER;
        hash = (53 * hash) + testEnumSmall_.hashCode();
      }
      if (getTestEnumCount() > 0) {
        hash = (37 * hash) + TEST_ENUM_FIELD_NUMBER;
        hash = (53 * hash) + testEnum_.hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessPacked_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessPacked.class, foo.TestFull.TestMessPacked.Builder.class);
      }

      // Construct using foo.TestFull.TestMessPacked.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        testInt32_ = emptyIntList();
        testSint32_ = emptyIntList();
        testSfixed32_ = emptyIntList();
        testInt64_ = emptyLongList();
        testSint64_ = emptyLongList();
        testSfixed64_ = emptyLongList();
        testUint32_ = emptyIntList();
        testFixed32_ = emptyIntList();
        testUint64_ = emptyLongList();
        testFixed64_ = emptyLongList();
        testFloat_ = emptyFloatList();
        testDouble_ = emptyDoubleList();
        testBoolean_ = emptyBooleanList();
        testEnumSmall_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00002000);
        testEnum_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00004000);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessPacked_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessPacked getDefaultInstanceForType() {
        return foo.TestFull.TestMessPacked.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessPacked build() {
        foo.TestFull.TestMessPacked result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessPacked buildPartial() {
        foo.TestFull.TestMessPacked result = new foo.TestFull.TestMessPacked(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(foo.TestFull.TestMessPacked result) {
        if (((bitField0_ & 0x00002000) != 0)) {
          testEnumSmall_ = java.util.Collections.unmodifiableList(testEnumSmall_);
          bitField0_ = (bitField0_ & ~0x00002000);
        }
        result.testEnumSmall_ = testEnumSmall_;
        if (((bitField0_ & 0x00004000) != 0)) {
          testEnum_ = java.util.Collections.unmodifiableList(testEnum_);
          bitField0_ = (bitField0_ & ~0x00004000);
        }
        result.testEnum_ = testEnum_;
      }

      private void buildPartial0(foo.TestFull.TestMessPacked result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          testInt32_.makeImmutable();
          result.testInt32_ = testInt32_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          testSint32_.makeImmutable();
          result.testSint32_ = testSint32_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          testSfixed32_.makeImmutable();
          result.testSfixed32_ = testSfixed32_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          testInt64_.makeImmutable();
          result.testInt64_ = testInt64_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          testSint64_.makeImmutable();
          result.testSint64_ = testSint64_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          testSfixed64_.makeImmutable();
          result.testSfixed64_ = testSfixed64_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          testUint32_.makeImmutable();
          result.testUint32_ = testUint32_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          testFixed32_.makeImmutable();
          result.testFixed32_ = testFixed32_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          testUint64_.makeImmutable();
          result.testUint64_ = testUint64_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          testFixed64_.makeImmutable();
          result.testFixed64_ = testFixed64_;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          testFloat_.makeImmutable();
          result.testFloat_ = testFloat_;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          testDouble_.makeImmutable();
          result.testDouble_ = testDouble_;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          testBoolean_.makeImmutable();
          result.testBoolean_ = testBoolean_;
        }
      }

      @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 foo.TestFull.TestMessPacked) {
          return mergeFrom((foo.TestFull.TestMessPacked)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessPacked other) {
        if (other == foo.TestFull.TestMessPacked.getDefaultInstance()) return this;
        if (!other.testInt32_.isEmpty()) {
          if (testInt32_.isEmpty()) {
            testInt32_ = other.testInt32_;
            testInt32_.makeImmutable();
            bitField0_ |= 0x00000001;
          } else {
            ensureTestInt32IsMutable();
            testInt32_.addAll(other.testInt32_);
          }
          onChanged();
        }
        if (!other.testSint32_.isEmpty()) {
          if (testSint32_.isEmpty()) {
            testSint32_ = other.testSint32_;
            testSint32_.makeImmutable();
            bitField0_ |= 0x00000002;
          } else {
            ensureTestSint32IsMutable();
            testSint32_.addAll(other.testSint32_);
          }
          onChanged();
        }
        if (!other.testSfixed32_.isEmpty()) {
          if (testSfixed32_.isEmpty()) {
            testSfixed32_ = other.testSfixed32_;
            testSfixed32_.makeImmutable();
            bitField0_ |= 0x00000004;
          } else {
            ensureTestSfixed32IsMutable();
            testSfixed32_.addAll(other.testSfixed32_);
          }
          onChanged();
        }
        if (!other.testInt64_.isEmpty()) {
          if (testInt64_.isEmpty()) {
            testInt64_ = other.testInt64_;
            testInt64_.makeImmutable();
            bitField0_ |= 0x00000008;
          } else {
            ensureTestInt64IsMutable();
            testInt64_.addAll(other.testInt64_);
          }
          onChanged();
        }
        if (!other.testSint64_.isEmpty()) {
          if (testSint64_.isEmpty()) {
            testSint64_ = other.testSint64_;
            testSint64_.makeImmutable();
            bitField0_ |= 0x00000010;
          } else {
            ensureTestSint64IsMutable();
            testSint64_.addAll(other.testSint64_);
          }
          onChanged();
        }
        if (!other.testSfixed64_.isEmpty()) {
          if (testSfixed64_.isEmpty()) {
            testSfixed64_ = other.testSfixed64_;
            testSfixed64_.makeImmutable();
            bitField0_ |= 0x00000020;
          } else {
            ensureTestSfixed64IsMutable();
            testSfixed64_.addAll(other.testSfixed64_);
          }
          onChanged();
        }
        if (!other.testUint32_.isEmpty()) {
          if (testUint32_.isEmpty()) {
            testUint32_ = other.testUint32_;
            testUint32_.makeImmutable();
            bitField0_ |= 0x00000040;
          } else {
            ensureTestUint32IsMutable();
            testUint32_.addAll(other.testUint32_);
          }
          onChanged();
        }
        if (!other.testFixed32_.isEmpty()) {
          if (testFixed32_.isEmpty()) {
            testFixed32_ = other.testFixed32_;
            testFixed32_.makeImmutable();
            bitField0_ |= 0x00000080;
          } else {
            ensureTestFixed32IsMutable();
            testFixed32_.addAll(other.testFixed32_);
          }
          onChanged();
        }
        if (!other.testUint64_.isEmpty()) {
          if (testUint64_.isEmpty()) {
            testUint64_ = other.testUint64_;
            testUint64_.makeImmutable();
            bitField0_ |= 0x00000100;
          } else {
            ensureTestUint64IsMutable();
            testUint64_.addAll(other.testUint64_);
          }
          onChanged();
        }
        if (!other.testFixed64_.isEmpty()) {
          if (testFixed64_.isEmpty()) {
            testFixed64_ = other.testFixed64_;
            testFixed64_.makeImmutable();
            bitField0_ |= 0x00000200;
          } else {
            ensureTestFixed64IsMutable();
            testFixed64_.addAll(other.testFixed64_);
          }
          onChanged();
        }
        if (!other.testFloat_.isEmpty()) {
          if (testFloat_.isEmpty()) {
            testFloat_ = other.testFloat_;
            testFloat_.makeImmutable();
            bitField0_ |= 0x00000400;
          } else {
            ensureTestFloatIsMutable();
            testFloat_.addAll(other.testFloat_);
          }
          onChanged();
        }
        if (!other.testDouble_.isEmpty()) {
          if (testDouble_.isEmpty()) {
            testDouble_ = other.testDouble_;
            testDouble_.makeImmutable();
            bitField0_ |= 0x00000800;
          } else {
            ensureTestDoubleIsMutable();
            testDouble_.addAll(other.testDouble_);
          }
          onChanged();
        }
        if (!other.testBoolean_.isEmpty()) {
          if (testBoolean_.isEmpty()) {
            testBoolean_ = other.testBoolean_;
            testBoolean_.makeImmutable();
            bitField0_ |= 0x00001000;
          } else {
            ensureTestBooleanIsMutable();
            testBoolean_.addAll(other.testBoolean_);
          }
          onChanged();
        }
        if (!other.testEnumSmall_.isEmpty()) {
          if (testEnumSmall_.isEmpty()) {
            testEnumSmall_ = other.testEnumSmall_;
            bitField0_ = (bitField0_ & ~0x00002000);
          } else {
            ensureTestEnumSmallIsMutable();
            testEnumSmall_.addAll(other.testEnumSmall_);
          }
          onChanged();
        }
        if (!other.testEnum_.isEmpty()) {
          if (testEnum_.isEmpty()) {
            testEnum_ = other.testEnum_;
            bitField0_ = (bitField0_ & ~0x00004000);
          } else {
            ensureTestEnumIsMutable();
            testEnum_.addAll(other.testEnum_);
          }
          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();
                ensureTestInt32IsMutable();
                testInt32_.addInt(v);
                break;
              } // case 8
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestInt32IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testInt32_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 10
              case 16: {
                int v = input.readSInt32();
                ensureTestSint32IsMutable();
                testSint32_.addInt(v);
                break;
              } // case 16
              case 18: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestSint32IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testSint32_.addInt(input.readSInt32());
                }
                input.popLimit(limit);
                break;
              } // case 18
              case 29: {
                int v = input.readSFixed32();
                ensureTestSfixed32IsMutable();
                testSfixed32_.addInt(v);
                break;
              } // case 29
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestSfixed32IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testSfixed32_.addInt(input.readSFixed32());
                }
                input.popLimit(limit);
                break;
              } // case 26
              case 32: {
                long v = input.readInt64();
                ensureTestInt64IsMutable();
                testInt64_.addLong(v);
                break;
              } // case 32
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestInt64IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testInt64_.addLong(input.readInt64());
                }
                input.popLimit(limit);
                break;
              } // case 34
              case 40: {
                long v = input.readSInt64();
                ensureTestSint64IsMutable();
                testSint64_.addLong(v);
                break;
              } // case 40
              case 42: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestSint64IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testSint64_.addLong(input.readSInt64());
                }
                input.popLimit(limit);
                break;
              } // case 42
              case 49: {
                long v = input.readSFixed64();
                ensureTestSfixed64IsMutable();
                testSfixed64_.addLong(v);
                break;
              } // case 49
              case 50: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestSfixed64IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testSfixed64_.addLong(input.readSFixed64());
                }
                input.popLimit(limit);
                break;
              } // case 50
              case 56: {
                int v = input.readUInt32();
                ensureTestUint32IsMutable();
                testUint32_.addInt(v);
                break;
              } // case 56
              case 58: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestUint32IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testUint32_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 58
              case 69: {
                int v = input.readFixed32();
                ensureTestFixed32IsMutable();
                testFixed32_.addInt(v);
                break;
              } // case 69
              case 66: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestFixed32IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testFixed32_.addInt(input.readFixed32());
                }
                input.popLimit(limit);
                break;
              } // case 66
              case 72: {
                long v = input.readUInt64();
                ensureTestUint64IsMutable();
                testUint64_.addLong(v);
                break;
              } // case 72
              case 74: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestUint64IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testUint64_.addLong(input.readUInt64());
                }
                input.popLimit(limit);
                break;
              } // case 74
              case 81: {
                long v = input.readFixed64();
                ensureTestFixed64IsMutable();
                testFixed64_.addLong(v);
                break;
              } // case 81
              case 82: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestFixed64IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testFixed64_.addLong(input.readFixed64());
                }
                input.popLimit(limit);
                break;
              } // case 82
              case 93: {
                float v = input.readFloat();
                ensureTestFloatIsMutable();
                testFloat_.addFloat(v);
                break;
              } // case 93
              case 90: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestFloatIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testFloat_.addFloat(input.readFloat());
                }
                input.popLimit(limit);
                break;
              } // case 90
              case 97: {
                double v = input.readDouble();
                ensureTestDoubleIsMutable();
                testDouble_.addDouble(v);
                break;
              } // case 97
              case 98: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestDoubleIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testDouble_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 98
              case 104: {
                boolean v = input.readBool();
                ensureTestBooleanIsMutable();
                testBoolean_.addBoolean(v);
                break;
              } // case 104
              case 106: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTestBooleanIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  testBoolean_.addBoolean(input.readBool());
                }
                input.popLimit(limit);
                break;
              } // case 106
              case 112: {
                int tmpRaw = input.readEnum();
                foo.TestFull.TestEnumSmall tmpValue =
                    foo.TestFull.TestEnumSmall.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(14, tmpRaw);
                } else {
                  ensureTestEnumSmallIsMutable();
                  testEnumSmall_.add(tmpRaw);
                }
                break;
              } // case 112
              case 114: {
                int length = input.readRawVarint32();
                int oldLimit = input.pushLimit(length);
                while(input.getBytesUntilLimit() > 0) {
                  int tmpRaw = input.readEnum();
                  foo.TestFull.TestEnumSmall tmpValue =
                      foo.TestFull.TestEnumSmall.forNumber(tmpRaw);
                  if (tmpValue == null) {
                    mergeUnknownVarintField(14, tmpRaw);
                  } else {
                    ensureTestEnumSmallIsMutable();
                    testEnumSmall_.add(tmpRaw);
                  }
                }
                input.popLimit(oldLimit);
                break;
              } // case 114
              case 120: {
                int tmpRaw = input.readEnum();
                foo.TestFull.TestEnum tmpValue =
                    foo.TestFull.TestEnum.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(15, tmpRaw);
                } else {
                  ensureTestEnumIsMutable();
                  testEnum_.add(tmpRaw);
                }
                break;
              } // case 120
              case 122: {
                int length = input.readRawVarint32();
                int oldLimit = input.pushLimit(length);
                while(input.getBytesUntilLimit() > 0) {
                  int tmpRaw = input.readEnum();
                  foo.TestFull.TestEnum tmpValue =
                      foo.TestFull.TestEnum.forNumber(tmpRaw);
                  if (tmpValue == null) {
                    mergeUnknownVarintField(15, tmpRaw);
                  } else {
                    ensureTestEnumIsMutable();
                    testEnum_.add(tmpRaw);
                  }
                }
                input.popLimit(oldLimit);
                break;
              } // case 122
              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 testInt32_ = emptyIntList();
      private void ensureTestInt32IsMutable() {
        if (!testInt32_.isModifiable()) {
          testInt32_ = mutableCopy(testInt32_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <code>repeated int32 test_int32 = 1 [packed = true];</code>
       * @return A list containing the testInt32.
       */
      public java.util.List<java.lang.Integer>
          getTestInt32List() {
        testInt32_.makeImmutable();
        return testInt32_;
      }
      /**
       * <code>repeated int32 test_int32 = 1 [packed = true];</code>
       * @return The count of testInt32.
       */
      public int getTestInt32Count() {
        return testInt32_.size();
      }
      /**
       * <code>repeated int32 test_int32 = 1 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testInt32 at the given index.
       */
      public int getTestInt32(int index) {
        return testInt32_.getInt(index);
      }
      /**
       * <code>repeated int32 test_int32 = 1 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testInt32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestInt32(
          int index, int value) {

        ensureTestInt32IsMutable();
        testInt32_.setInt(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 test_int32 = 1 [packed = true];</code>
       * @param value The testInt32 to add.
       * @return This builder for chaining.
       */
      public Builder addTestInt32(int value) {

        ensureTestInt32IsMutable();
        testInt32_.addInt(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 test_int32 = 1 [packed = true];</code>
       * @param values The testInt32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestInt32(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTestInt32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testInt32_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 test_int32 = 1 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestInt32() {
        testInt32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList testSint32_ = emptyIntList();
      private void ensureTestSint32IsMutable() {
        if (!testSint32_.isModifiable()) {
          testSint32_ = mutableCopy(testSint32_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <code>repeated sint32 test_sint32 = 2 [packed = true];</code>
       * @return A list containing the testSint32.
       */
      public java.util.List<java.lang.Integer>
          getTestSint32List() {
        testSint32_.makeImmutable();
        return testSint32_;
      }
      /**
       * <code>repeated sint32 test_sint32 = 2 [packed = true];</code>
       * @return The count of testSint32.
       */
      public int getTestSint32Count() {
        return testSint32_.size();
      }
      /**
       * <code>repeated sint32 test_sint32 = 2 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testSint32 at the given index.
       */
      public int getTestSint32(int index) {
        return testSint32_.getInt(index);
      }
      /**
       * <code>repeated sint32 test_sint32 = 2 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testSint32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSint32(
          int index, int value) {

        ensureTestSint32IsMutable();
        testSint32_.setInt(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint32 test_sint32 = 2 [packed = true];</code>
       * @param value The testSint32 to add.
       * @return This builder for chaining.
       */
      public Builder addTestSint32(int value) {

        ensureTestSint32IsMutable();
        testSint32_.addInt(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint32 test_sint32 = 2 [packed = true];</code>
       * @param values The testSint32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestSint32(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTestSint32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testSint32_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint32 test_sint32 = 2 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSint32() {
        testSint32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList testSfixed32_ = emptyIntList();
      private void ensureTestSfixed32IsMutable() {
        if (!testSfixed32_.isModifiable()) {
          testSfixed32_ = mutableCopy(testSfixed32_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3 [packed = true];</code>
       * @return A list containing the testSfixed32.
       */
      public java.util.List<java.lang.Integer>
          getTestSfixed32List() {
        testSfixed32_.makeImmutable();
        return testSfixed32_;
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3 [packed = true];</code>
       * @return The count of testSfixed32.
       */
      public int getTestSfixed32Count() {
        return testSfixed32_.size();
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testSfixed32 at the given index.
       */
      public int getTestSfixed32(int index) {
        return testSfixed32_.getInt(index);
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testSfixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSfixed32(
          int index, int value) {

        ensureTestSfixed32IsMutable();
        testSfixed32_.setInt(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3 [packed = true];</code>
       * @param value The testSfixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addTestSfixed32(int value) {

        ensureTestSfixed32IsMutable();
        testSfixed32_.addInt(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3 [packed = true];</code>
       * @param values The testSfixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestSfixed32(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTestSfixed32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testSfixed32_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sfixed32 test_sfixed32 = 3 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSfixed32() {
        testSfixed32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList testInt64_ = emptyLongList();
      private void ensureTestInt64IsMutable() {
        if (!testInt64_.isModifiable()) {
          testInt64_ = mutableCopy(testInt64_);
        }
        bitField0_ |= 0x00000008;
      }
      /**
       * <code>repeated int64 test_int64 = 4 [packed = true];</code>
       * @return A list containing the testInt64.
       */
      public java.util.List<java.lang.Long>
          getTestInt64List() {
        testInt64_.makeImmutable();
        return testInt64_;
      }
      /**
       * <code>repeated int64 test_int64 = 4 [packed = true];</code>
       * @return The count of testInt64.
       */
      public int getTestInt64Count() {
        return testInt64_.size();
      }
      /**
       * <code>repeated int64 test_int64 = 4 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testInt64 at the given index.
       */
      public long getTestInt64(int index) {
        return testInt64_.getLong(index);
      }
      /**
       * <code>repeated int64 test_int64 = 4 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testInt64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestInt64(
          int index, long value) {

        ensureTestInt64IsMutable();
        testInt64_.setLong(index, value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int64 test_int64 = 4 [packed = true];</code>
       * @param value The testInt64 to add.
       * @return This builder for chaining.
       */
      public Builder addTestInt64(long value) {

        ensureTestInt64IsMutable();
        testInt64_.addLong(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int64 test_int64 = 4 [packed = true];</code>
       * @param values The testInt64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestInt64(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureTestInt64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testInt64_);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int64 test_int64 = 4 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestInt64() {
        testInt64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList testSint64_ = emptyLongList();
      private void ensureTestSint64IsMutable() {
        if (!testSint64_.isModifiable()) {
          testSint64_ = mutableCopy(testSint64_);
        }
        bitField0_ |= 0x00000010;
      }
      /**
       * <code>repeated sint64 test_sint64 = 5 [packed = true];</code>
       * @return A list containing the testSint64.
       */
      public java.util.List<java.lang.Long>
          getTestSint64List() {
        testSint64_.makeImmutable();
        return testSint64_;
      }
      /**
       * <code>repeated sint64 test_sint64 = 5 [packed = true];</code>
       * @return The count of testSint64.
       */
      public int getTestSint64Count() {
        return testSint64_.size();
      }
      /**
       * <code>repeated sint64 test_sint64 = 5 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testSint64 at the given index.
       */
      public long getTestSint64(int index) {
        return testSint64_.getLong(index);
      }
      /**
       * <code>repeated sint64 test_sint64 = 5 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testSint64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSint64(
          int index, long value) {

        ensureTestSint64IsMutable();
        testSint64_.setLong(index, value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint64 test_sint64 = 5 [packed = true];</code>
       * @param value The testSint64 to add.
       * @return This builder for chaining.
       */
      public Builder addTestSint64(long value) {

        ensureTestSint64IsMutable();
        testSint64_.addLong(value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint64 test_sint64 = 5 [packed = true];</code>
       * @param values The testSint64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestSint64(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureTestSint64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testSint64_);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint64 test_sint64 = 5 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSint64() {
        testSint64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList testSfixed64_ = emptyLongList();
      private void ensureTestSfixed64IsMutable() {
        if (!testSfixed64_.isModifiable()) {
          testSfixed64_ = mutableCopy(testSfixed64_);
        }
        bitField0_ |= 0x00000020;
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6 [packed = true];</code>
       * @return A list containing the testSfixed64.
       */
      public java.util.List<java.lang.Long>
          getTestSfixed64List() {
        testSfixed64_.makeImmutable();
        return testSfixed64_;
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6 [packed = true];</code>
       * @return The count of testSfixed64.
       */
      public int getTestSfixed64Count() {
        return testSfixed64_.size();
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testSfixed64 at the given index.
       */
      public long getTestSfixed64(int index) {
        return testSfixed64_.getLong(index);
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testSfixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSfixed64(
          int index, long value) {

        ensureTestSfixed64IsMutable();
        testSfixed64_.setLong(index, value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6 [packed = true];</code>
       * @param value The testSfixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addTestSfixed64(long value) {

        ensureTestSfixed64IsMutable();
        testSfixed64_.addLong(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6 [packed = true];</code>
       * @param values The testSfixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestSfixed64(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureTestSfixed64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testSfixed64_);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>repeated sfixed64 test_sfixed64 = 6 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSfixed64() {
        testSfixed64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList testUint32_ = emptyIntList();
      private void ensureTestUint32IsMutable() {
        if (!testUint32_.isModifiable()) {
          testUint32_ = mutableCopy(testUint32_);
        }
        bitField0_ |= 0x00000040;
      }
      /**
       * <code>repeated uint32 test_uint32 = 7 [packed = true];</code>
       * @return A list containing the testUint32.
       */
      public java.util.List<java.lang.Integer>
          getTestUint32List() {
        testUint32_.makeImmutable();
        return testUint32_;
      }
      /**
       * <code>repeated uint32 test_uint32 = 7 [packed = true];</code>
       * @return The count of testUint32.
       */
      public int getTestUint32Count() {
        return testUint32_.size();
      }
      /**
       * <code>repeated uint32 test_uint32 = 7 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testUint32 at the given index.
       */
      public int getTestUint32(int index) {
        return testUint32_.getInt(index);
      }
      /**
       * <code>repeated uint32 test_uint32 = 7 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testUint32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestUint32(
          int index, int value) {

        ensureTestUint32IsMutable();
        testUint32_.setInt(index, value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 test_uint32 = 7 [packed = true];</code>
       * @param value The testUint32 to add.
       * @return This builder for chaining.
       */
      public Builder addTestUint32(int value) {

        ensureTestUint32IsMutable();
        testUint32_.addInt(value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 test_uint32 = 7 [packed = true];</code>
       * @param values The testUint32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestUint32(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTestUint32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testUint32_);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 test_uint32 = 7 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestUint32() {
        testUint32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList testFixed32_ = emptyIntList();
      private void ensureTestFixed32IsMutable() {
        if (!testFixed32_.isModifiable()) {
          testFixed32_ = mutableCopy(testFixed32_);
        }
        bitField0_ |= 0x00000080;
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8 [packed = true];</code>
       * @return A list containing the testFixed32.
       */
      public java.util.List<java.lang.Integer>
          getTestFixed32List() {
        testFixed32_.makeImmutable();
        return testFixed32_;
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8 [packed = true];</code>
       * @return The count of testFixed32.
       */
      public int getTestFixed32Count() {
        return testFixed32_.size();
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testFixed32 at the given index.
       */
      public int getTestFixed32(int index) {
        return testFixed32_.getInt(index);
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testFixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestFixed32(
          int index, int value) {

        ensureTestFixed32IsMutable();
        testFixed32_.setInt(index, value);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8 [packed = true];</code>
       * @param value The testFixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addTestFixed32(int value) {

        ensureTestFixed32IsMutable();
        testFixed32_.addInt(value);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8 [packed = true];</code>
       * @param values The testFixed32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestFixed32(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTestFixed32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testFixed32_);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>repeated fixed32 test_fixed32 = 8 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestFixed32() {
        testFixed32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList testUint64_ = emptyLongList();
      private void ensureTestUint64IsMutable() {
        if (!testUint64_.isModifiable()) {
          testUint64_ = mutableCopy(testUint64_);
        }
        bitField0_ |= 0x00000100;
      }
      /**
       * <code>repeated uint64 test_uint64 = 9 [packed = true];</code>
       * @return A list containing the testUint64.
       */
      public java.util.List<java.lang.Long>
          getTestUint64List() {
        testUint64_.makeImmutable();
        return testUint64_;
      }
      /**
       * <code>repeated uint64 test_uint64 = 9 [packed = true];</code>
       * @return The count of testUint64.
       */
      public int getTestUint64Count() {
        return testUint64_.size();
      }
      /**
       * <code>repeated uint64 test_uint64 = 9 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testUint64 at the given index.
       */
      public long getTestUint64(int index) {
        return testUint64_.getLong(index);
      }
      /**
       * <code>repeated uint64 test_uint64 = 9 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testUint64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestUint64(
          int index, long value) {

        ensureTestUint64IsMutable();
        testUint64_.setLong(index, value);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint64 test_uint64 = 9 [packed = true];</code>
       * @param value The testUint64 to add.
       * @return This builder for chaining.
       */
      public Builder addTestUint64(long value) {

        ensureTestUint64IsMutable();
        testUint64_.addLong(value);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint64 test_uint64 = 9 [packed = true];</code>
       * @param values The testUint64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestUint64(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureTestUint64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testUint64_);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint64 test_uint64 = 9 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestUint64() {
        testUint64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList testFixed64_ = emptyLongList();
      private void ensureTestFixed64IsMutable() {
        if (!testFixed64_.isModifiable()) {
          testFixed64_ = mutableCopy(testFixed64_);
        }
        bitField0_ |= 0x00000200;
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10 [packed = true];</code>
       * @return A list containing the testFixed64.
       */
      public java.util.List<java.lang.Long>
          getTestFixed64List() {
        testFixed64_.makeImmutable();
        return testFixed64_;
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10 [packed = true];</code>
       * @return The count of testFixed64.
       */
      public int getTestFixed64Count() {
        return testFixed64_.size();
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testFixed64 at the given index.
       */
      public long getTestFixed64(int index) {
        return testFixed64_.getLong(index);
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testFixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestFixed64(
          int index, long value) {

        ensureTestFixed64IsMutable();
        testFixed64_.setLong(index, value);
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10 [packed = true];</code>
       * @param value The testFixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addTestFixed64(long value) {

        ensureTestFixed64IsMutable();
        testFixed64_.addLong(value);
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10 [packed = true];</code>
       * @param values The testFixed64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestFixed64(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureTestFixed64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testFixed64_);
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>repeated fixed64 test_fixed64 = 10 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestFixed64() {
        testFixed64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.FloatList testFloat_ = emptyFloatList();
      private void ensureTestFloatIsMutable() {
        if (!testFloat_.isModifiable()) {
          testFloat_ = mutableCopy(testFloat_);
        }
        bitField0_ |= 0x00000400;
      }
      /**
       * <code>repeated float test_float = 11 [packed = true];</code>
       * @return A list containing the testFloat.
       */
      public java.util.List<java.lang.Float>
          getTestFloatList() {
        testFloat_.makeImmutable();
        return testFloat_;
      }
      /**
       * <code>repeated float test_float = 11 [packed = true];</code>
       * @return The count of testFloat.
       */
      public int getTestFloatCount() {
        return testFloat_.size();
      }
      /**
       * <code>repeated float test_float = 11 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testFloat at the given index.
       */
      public float getTestFloat(int index) {
        return testFloat_.getFloat(index);
      }
      /**
       * <code>repeated float test_float = 11 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testFloat to set.
       * @return This builder for chaining.
       */
      public Builder setTestFloat(
          int index, float value) {

        ensureTestFloatIsMutable();
        testFloat_.setFloat(index, value);
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>repeated float test_float = 11 [packed = true];</code>
       * @param value The testFloat to add.
       * @return This builder for chaining.
       */
      public Builder addTestFloat(float value) {

        ensureTestFloatIsMutable();
        testFloat_.addFloat(value);
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>repeated float test_float = 11 [packed = true];</code>
       * @param values The testFloat to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestFloat(
          java.lang.Iterable<? extends java.lang.Float> values) {
        ensureTestFloatIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testFloat_);
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>repeated float test_float = 11 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestFloat() {
        testFloat_ = emptyFloatList();
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList testDouble_ = emptyDoubleList();
      private void ensureTestDoubleIsMutable() {
        if (!testDouble_.isModifiable()) {
          testDouble_ = mutableCopy(testDouble_);
        }
        bitField0_ |= 0x00000800;
      }
      /**
       * <code>repeated double test_double = 12 [packed = true];</code>
       * @return A list containing the testDouble.
       */
      public java.util.List<java.lang.Double>
          getTestDoubleList() {
        testDouble_.makeImmutable();
        return testDouble_;
      }
      /**
       * <code>repeated double test_double = 12 [packed = true];</code>
       * @return The count of testDouble.
       */
      public int getTestDoubleCount() {
        return testDouble_.size();
      }
      /**
       * <code>repeated double test_double = 12 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testDouble at the given index.
       */
      public double getTestDouble(int index) {
        return testDouble_.getDouble(index);
      }
      /**
       * <code>repeated double test_double = 12 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testDouble to set.
       * @return This builder for chaining.
       */
      public Builder setTestDouble(
          int index, double value) {

        ensureTestDoubleIsMutable();
        testDouble_.setDouble(index, value);
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>repeated double test_double = 12 [packed = true];</code>
       * @param value The testDouble to add.
       * @return This builder for chaining.
       */
      public Builder addTestDouble(double value) {

        ensureTestDoubleIsMutable();
        testDouble_.addDouble(value);
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>repeated double test_double = 12 [packed = true];</code>
       * @param values The testDouble to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestDouble(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureTestDoubleIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testDouble_);
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>repeated double test_double = 12 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestDouble() {
        testDouble_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000800);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.BooleanList testBoolean_ = emptyBooleanList();
      private void ensureTestBooleanIsMutable() {
        if (!testBoolean_.isModifiable()) {
          testBoolean_ = mutableCopy(testBoolean_);
        }
        bitField0_ |= 0x00001000;
      }
      /**
       * <code>repeated bool test_boolean = 13 [packed = true];</code>
       * @return A list containing the testBoolean.
       */
      public java.util.List<java.lang.Boolean>
          getTestBooleanList() {
        testBoolean_.makeImmutable();
        return testBoolean_;
      }
      /**
       * <code>repeated bool test_boolean = 13 [packed = true];</code>
       * @return The count of testBoolean.
       */
      public int getTestBooleanCount() {
        return testBoolean_.size();
      }
      /**
       * <code>repeated bool test_boolean = 13 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testBoolean at the given index.
       */
      public boolean getTestBoolean(int index) {
        return testBoolean_.getBoolean(index);
      }
      /**
       * <code>repeated bool test_boolean = 13 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testBoolean to set.
       * @return This builder for chaining.
       */
      public Builder setTestBoolean(
          int index, boolean value) {

        ensureTestBooleanIsMutable();
        testBoolean_.setBoolean(index, value);
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool test_boolean = 13 [packed = true];</code>
       * @param value The testBoolean to add.
       * @return This builder for chaining.
       */
      public Builder addTestBoolean(boolean value) {

        ensureTestBooleanIsMutable();
        testBoolean_.addBoolean(value);
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool test_boolean = 13 [packed = true];</code>
       * @param values The testBoolean to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestBoolean(
          java.lang.Iterable<? extends java.lang.Boolean> values) {
        ensureTestBooleanIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, testBoolean_);
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool test_boolean = 13 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestBoolean() {
        testBoolean_ = emptyBooleanList();
        bitField0_ = (bitField0_ & ~0x00001000);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> testEnumSmall_ =
        java.util.Collections.emptyList();
      private void ensureTestEnumSmallIsMutable() {
        if (!((bitField0_ & 0x00002000) != 0)) {
          testEnumSmall_ = new java.util.ArrayList<java.lang.Integer>(testEnumSmall_);
          bitField0_ |= 0x00002000;
        }
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14 [packed = true];</code>
       * @return A list containing the testEnumSmall.
       */
      public java.util.List<foo.TestFull.TestEnumSmall> getTestEnumSmallList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer, foo.TestFull.TestEnumSmall>(testEnumSmall_, testEnumSmall_converter_);
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14 [packed = true];</code>
       * @return The count of testEnumSmall.
       */
      public int getTestEnumSmallCount() {
        return testEnumSmall_.size();
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testEnumSmall at the given index.
       */
      public foo.TestFull.TestEnumSmall getTestEnumSmall(int index) {
        return testEnumSmall_converter_.convert(testEnumSmall_.get(index));
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testEnumSmall to set.
       * @return This builder for chaining.
       */
      public Builder setTestEnumSmall(
          int index, foo.TestFull.TestEnumSmall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTestEnumSmallIsMutable();
        testEnumSmall_.set(index, value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14 [packed = true];</code>
       * @param value The testEnumSmall to add.
       * @return This builder for chaining.
       */
      public Builder addTestEnumSmall(foo.TestFull.TestEnumSmall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTestEnumSmallIsMutable();
        testEnumSmall_.add(value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14 [packed = true];</code>
       * @param values The testEnumSmall to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestEnumSmall(
          java.lang.Iterable<? extends foo.TestFull.TestEnumSmall> values) {
        ensureTestEnumSmallIsMutable();
        for (foo.TestFull.TestEnumSmall value : values) {
          testEnumSmall_.add(value.getNumber());
        }
        onChanged();
        return this;
      }
      /**
       * <code>repeated .foo.TestEnumSmall test_enum_small = 14 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestEnumSmall() {
        testEnumSmall_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00002000);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> testEnum_ =
        java.util.Collections.emptyList();
      private void ensureTestEnumIsMutable() {
        if (!((bitField0_ & 0x00004000) != 0)) {
          testEnum_ = new java.util.ArrayList<java.lang.Integer>(testEnum_);
          bitField0_ |= 0x00004000;
        }
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15 [packed = true];</code>
       * @return A list containing the testEnum.
       */
      public java.util.List<foo.TestFull.TestEnum> getTestEnumList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer, foo.TestFull.TestEnum>(testEnum_, testEnum_converter_);
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15 [packed = true];</code>
       * @return The count of testEnum.
       */
      public int getTestEnumCount() {
        return testEnum_.size();
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The testEnum at the given index.
       */
      public foo.TestFull.TestEnum getTestEnum(int index) {
        return testEnum_converter_.convert(testEnum_.get(index));
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The testEnum to set.
       * @return This builder for chaining.
       */
      public Builder setTestEnum(
          int index, foo.TestFull.TestEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTestEnumIsMutable();
        testEnum_.set(index, value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15 [packed = true];</code>
       * @param value The testEnum to add.
       * @return This builder for chaining.
       */
      public Builder addTestEnum(foo.TestFull.TestEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTestEnumIsMutable();
        testEnum_.add(value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15 [packed = true];</code>
       * @param values The testEnum to add.
       * @return This builder for chaining.
       */
      public Builder addAllTestEnum(
          java.lang.Iterable<? extends foo.TestFull.TestEnum> values) {
        ensureTestEnumIsMutable();
        for (foo.TestFull.TestEnum value : values) {
          testEnum_.add(value.getNumber());
        }
        onChanged();
        return this;
      }
      /**
       * <code>repeated .foo.TestEnum test_enum = 15 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTestEnum() {
        testEnum_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00004000);
        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:foo.TestMessPacked)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessPacked)
    private static final foo.TestFull.TestMessPacked DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessPacked();
    }

    public static foo.TestFull.TestMessPacked getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessPacked getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessOptionalOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessOptional)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional int32 test_int32 = 1;</code>
     * @return Whether the testInt32 field is set.
     */
    boolean hasTestInt32();
    /**
     * <code>optional int32 test_int32 = 1;</code>
     * @return The testInt32.
     */
    int getTestInt32();

    /**
     * <code>optional sint32 test_sint32 = 2;</code>
     * @return Whether the testSint32 field is set.
     */
    boolean hasTestSint32();
    /**
     * <code>optional sint32 test_sint32 = 2;</code>
     * @return The testSint32.
     */
    int getTestSint32();

    /**
     * <code>optional sfixed32 test_sfixed32 = 3;</code>
     * @return Whether the testSfixed32 field is set.
     */
    boolean hasTestSfixed32();
    /**
     * <code>optional sfixed32 test_sfixed32 = 3;</code>
     * @return The testSfixed32.
     */
    int getTestSfixed32();

    /**
     * <code>optional int64 test_int64 = 4;</code>
     * @return Whether the testInt64 field is set.
     */
    boolean hasTestInt64();
    /**
     * <code>optional int64 test_int64 = 4;</code>
     * @return The testInt64.
     */
    long getTestInt64();

    /**
     * <code>optional sint64 test_sint64 = 5;</code>
     * @return Whether the testSint64 field is set.
     */
    boolean hasTestSint64();
    /**
     * <code>optional sint64 test_sint64 = 5;</code>
     * @return The testSint64.
     */
    long getTestSint64();

    /**
     * <code>optional sfixed64 test_sfixed64 = 6;</code>
     * @return Whether the testSfixed64 field is set.
     */
    boolean hasTestSfixed64();
    /**
     * <code>optional sfixed64 test_sfixed64 = 6;</code>
     * @return The testSfixed64.
     */
    long getTestSfixed64();

    /**
     * <code>optional uint32 test_uint32 = 7;</code>
     * @return Whether the testUint32 field is set.
     */
    boolean hasTestUint32();
    /**
     * <code>optional uint32 test_uint32 = 7;</code>
     * @return The testUint32.
     */
    int getTestUint32();

    /**
     * <code>optional fixed32 test_fixed32 = 8;</code>
     * @return Whether the testFixed32 field is set.
     */
    boolean hasTestFixed32();
    /**
     * <code>optional fixed32 test_fixed32 = 8;</code>
     * @return The testFixed32.
     */
    int getTestFixed32();

    /**
     * <code>optional uint64 test_uint64 = 9;</code>
     * @return Whether the testUint64 field is set.
     */
    boolean hasTestUint64();
    /**
     * <code>optional uint64 test_uint64 = 9;</code>
     * @return The testUint64.
     */
    long getTestUint64();

    /**
     * <code>optional fixed64 test_fixed64 = 10;</code>
     * @return Whether the testFixed64 field is set.
     */
    boolean hasTestFixed64();
    /**
     * <code>optional fixed64 test_fixed64 = 10;</code>
     * @return The testFixed64.
     */
    long getTestFixed64();

    /**
     * <code>optional float test_float = 11;</code>
     * @return Whether the testFloat field is set.
     */
    boolean hasTestFloat();
    /**
     * <code>optional float test_float = 11;</code>
     * @return The testFloat.
     */
    float getTestFloat();

    /**
     * <code>optional double test_double = 12;</code>
     * @return Whether the testDouble field is set.
     */
    boolean hasTestDouble();
    /**
     * <code>optional double test_double = 12;</code>
     * @return The testDouble.
     */
    double getTestDouble();

    /**
     * <code>optional bool test_boolean = 13;</code>
     * @return Whether the testBoolean field is set.
     */
    boolean hasTestBoolean();
    /**
     * <code>optional bool test_boolean = 13;</code>
     * @return The testBoolean.
     */
    boolean getTestBoolean();

    /**
     * <code>optional .foo.TestEnumSmall test_enum_small = 14;</code>
     * @return Whether the testEnumSmall field is set.
     */
    boolean hasTestEnumSmall();
    /**
     * <code>optional .foo.TestEnumSmall test_enum_small = 14;</code>
     * @return The testEnumSmall.
     */
    foo.TestFull.TestEnumSmall getTestEnumSmall();

    /**
     * <code>optional .foo.TestEnum test_enum = 15;</code>
     * @return Whether the testEnum field is set.
     */
    boolean hasTestEnum();
    /**
     * <code>optional .foo.TestEnum test_enum = 15;</code>
     * @return The testEnum.
     */
    foo.TestFull.TestEnum getTestEnum();

    /**
     * <code>optional string test_string = 16;</code>
     * @return Whether the testString field is set.
     */
    boolean hasTestString();
    /**
     * <code>optional string test_string = 16;</code>
     * @return The testString.
     */
    java.lang.String getTestString();
    /**
     * <code>optional string test_string = 16;</code>
     * @return The bytes for testString.
     */
    com.google.protobuf.ByteString
        getTestStringBytes();

    /**
     * <code>optional bytes test_bytes = 17;</code>
     * @return Whether the testBytes field is set.
     */
    boolean hasTestBytes();
    /**
     * <code>optional bytes test_bytes = 17;</code>
     * @return The testBytes.
     */
    com.google.protobuf.ByteString getTestBytes();

    /**
     * <code>optional .foo.SubMess test_message = 18;</code>
     * @return Whether the testMessage field is set.
     */
    boolean hasTestMessage();
    /**
     * <code>optional .foo.SubMess test_message = 18;</code>
     * @return The testMessage.
     */
    foo.TestFull.SubMess getTestMessage();
    /**
     * <code>optional .foo.SubMess test_message = 18;</code>
     */
    foo.TestFull.SubMessOrBuilder getTestMessageOrBuilder();
  }
  /**
   * Protobuf type {@code foo.TestMessOptional}
   */
  public static final class TestMessOptional extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessOptional)
      TestMessOptionalOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessOptional.newBuilder() to construct.
    private TestMessOptional(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessOptional() {
      testEnumSmall_ = -1;
      testEnum_ = -123456;
      testString_ = "";
      testBytes_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessOptional_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessOptional_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessOptional.class, foo.TestFull.TestMessOptional.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_INT32_FIELD_NUMBER = 1;
    private int testInt32_ = 0;
    /**
     * <code>optional int32 test_int32 = 1;</code>
     * @return Whether the testInt32 field is set.
     */
    @java.lang.Override
    public boolean hasTestInt32() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional int32 test_int32 = 1;</code>
     * @return The testInt32.
     */
    @java.lang.Override
    public int getTestInt32() {
      return testInt32_;
    }

    public static final int TEST_SINT32_FIELD_NUMBER = 2;
    private int testSint32_ = 0;
    /**
     * <code>optional sint32 test_sint32 = 2;</code>
     * @return Whether the testSint32 field is set.
     */
    @java.lang.Override
    public boolean hasTestSint32() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional sint32 test_sint32 = 2;</code>
     * @return The testSint32.
     */
    @java.lang.Override
    public int getTestSint32() {
      return testSint32_;
    }

    public static final int TEST_SFIXED32_FIELD_NUMBER = 3;
    private int testSfixed32_ = 0;
    /**
     * <code>optional sfixed32 test_sfixed32 = 3;</code>
     * @return Whether the testSfixed32 field is set.
     */
    @java.lang.Override
    public boolean hasTestSfixed32() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional sfixed32 test_sfixed32 = 3;</code>
     * @return The testSfixed32.
     */
    @java.lang.Override
    public int getTestSfixed32() {
      return testSfixed32_;
    }

    public static final int TEST_INT64_FIELD_NUMBER = 4;
    private long testInt64_ = 0L;
    /**
     * <code>optional int64 test_int64 = 4;</code>
     * @return Whether the testInt64 field is set.
     */
    @java.lang.Override
    public boolean hasTestInt64() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional int64 test_int64 = 4;</code>
     * @return The testInt64.
     */
    @java.lang.Override
    public long getTestInt64() {
      return testInt64_;
    }

    public static final int TEST_SINT64_FIELD_NUMBER = 5;
    private long testSint64_ = 0L;
    /**
     * <code>optional sint64 test_sint64 = 5;</code>
     * @return Whether the testSint64 field is set.
     */
    @java.lang.Override
    public boolean hasTestSint64() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional sint64 test_sint64 = 5;</code>
     * @return The testSint64.
     */
    @java.lang.Override
    public long getTestSint64() {
      return testSint64_;
    }

    public static final int TEST_SFIXED64_FIELD_NUMBER = 6;
    private long testSfixed64_ = 0L;
    /**
     * <code>optional sfixed64 test_sfixed64 = 6;</code>
     * @return Whether the testSfixed64 field is set.
     */
    @java.lang.Override
    public boolean hasTestSfixed64() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional sfixed64 test_sfixed64 = 6;</code>
     * @return The testSfixed64.
     */
    @java.lang.Override
    public long getTestSfixed64() {
      return testSfixed64_;
    }

    public static final int TEST_UINT32_FIELD_NUMBER = 7;
    private int testUint32_ = 0;
    /**
     * <code>optional uint32 test_uint32 = 7;</code>
     * @return Whether the testUint32 field is set.
     */
    @java.lang.Override
    public boolean hasTestUint32() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional uint32 test_uint32 = 7;</code>
     * @return The testUint32.
     */
    @java.lang.Override
    public int getTestUint32() {
      return testUint32_;
    }

    public static final int TEST_FIXED32_FIELD_NUMBER = 8;
    private int testFixed32_ = 0;
    /**
     * <code>optional fixed32 test_fixed32 = 8;</code>
     * @return Whether the testFixed32 field is set.
     */
    @java.lang.Override
    public boolean hasTestFixed32() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional fixed32 test_fixed32 = 8;</code>
     * @return The testFixed32.
     */
    @java.lang.Override
    public int getTestFixed32() {
      return testFixed32_;
    }

    public static final int TEST_UINT64_FIELD_NUMBER = 9;
    private long testUint64_ = 0L;
    /**
     * <code>optional uint64 test_uint64 = 9;</code>
     * @return Whether the testUint64 field is set.
     */
    @java.lang.Override
    public boolean hasTestUint64() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>optional uint64 test_uint64 = 9;</code>
     * @return The testUint64.
     */
    @java.lang.Override
    public long getTestUint64() {
      return testUint64_;
    }

    public static final int TEST_FIXED64_FIELD_NUMBER = 10;
    private long testFixed64_ = 0L;
    /**
     * <code>optional fixed64 test_fixed64 = 10;</code>
     * @return Whether the testFixed64 field is set.
     */
    @java.lang.Override
    public boolean hasTestFixed64() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>optional fixed64 test_fixed64 = 10;</code>
     * @return The testFixed64.
     */
    @java.lang.Override
    public long getTestFixed64() {
      return testFixed64_;
    }

    public static final int TEST_FLOAT_FIELD_NUMBER = 11;
    private float testFloat_ = 0F;
    /**
     * <code>optional float test_float = 11;</code>
     * @return Whether the testFloat field is set.
     */
    @java.lang.Override
    public boolean hasTestFloat() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>optional float test_float = 11;</code>
     * @return The testFloat.
     */
    @java.lang.Override
    public float getTestFloat() {
      return testFloat_;
    }

    public static final int TEST_DOUBLE_FIELD_NUMBER = 12;
    private double testDouble_ = 0D;
    /**
     * <code>optional double test_double = 12;</code>
     * @return Whether the testDouble field is set.
     */
    @java.lang.Override
    public boolean hasTestDouble() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <code>optional double test_double = 12;</code>
     * @return The testDouble.
     */
    @java.lang.Override
    public double getTestDouble() {
      return testDouble_;
    }

    public static final int TEST_BOOLEAN_FIELD_NUMBER = 13;
    private boolean testBoolean_ = false;
    /**
     * <code>optional bool test_boolean = 13;</code>
     * @return Whether the testBoolean field is set.
     */
    @java.lang.Override
    public boolean hasTestBoolean() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <code>optional bool test_boolean = 13;</code>
     * @return The testBoolean.
     */
    @java.lang.Override
    public boolean getTestBoolean() {
      return testBoolean_;
    }

    public static final int TEST_ENUM_SMALL_FIELD_NUMBER = 14;
    private int testEnumSmall_ = -1;
    /**
     * <code>optional .foo.TestEnumSmall test_enum_small = 14;</code>
     * @return Whether the testEnumSmall field is set.
     */
    @java.lang.Override public boolean hasTestEnumSmall() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <code>optional .foo.TestEnumSmall test_enum_small = 14;</code>
     * @return The testEnumSmall.
     */
    @java.lang.Override public foo.TestFull.TestEnumSmall getTestEnumSmall() {
      foo.TestFull.TestEnumSmall result = foo.TestFull.TestEnumSmall.forNumber(testEnumSmall_);
      return result == null ? foo.TestFull.TestEnumSmall.NEG_VALUE : result;
    }

    public static final int TEST_ENUM_FIELD_NUMBER = 15;
    private int testEnum_ = -123456;
    /**
     * <code>optional .foo.TestEnum test_enum = 15;</code>
     * @return Whether the testEnum field is set.
     */
    @java.lang.Override public boolean hasTestEnum() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <code>optional .foo.TestEnum test_enum = 15;</code>
     * @return The testEnum.
     */
    @java.lang.Override public foo.TestFull.TestEnum getTestEnum() {
      foo.TestFull.TestEnum result = foo.TestFull.TestEnum.forNumber(testEnum_);
      return result == null ? foo.TestFull.TestEnum.VALUENEG123456 : result;
    }

    public static final int TEST_STRING_FIELD_NUMBER = 16;
    @SuppressWarnings("serial")
    private volatile java.lang.Object testString_ = "";
    /**
     * <code>optional string test_string = 16;</code>
     * @return Whether the testString field is set.
     */
    @java.lang.Override
    public boolean hasTestString() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <code>optional string test_string = 16;</code>
     * @return The testString.
     */
    @java.lang.Override
    public java.lang.String getTestString() {
      java.lang.Object ref = testString_;
      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 (bs.isValidUtf8()) {
          testString_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string test_string = 16;</code>
     * @return The bytes for testString.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTestStringBytes() {
      java.lang.Object ref = testString_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        testString_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEST_BYTES_FIELD_NUMBER = 17;
    private com.google.protobuf.ByteString testBytes_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>optional bytes test_bytes = 17;</code>
     * @return Whether the testBytes field is set.
     */
    @java.lang.Override
    public boolean hasTestBytes() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * <code>optional bytes test_bytes = 17;</code>
     * @return The testBytes.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTestBytes() {
      return testBytes_;
    }

    public static final int TEST_MESSAGE_FIELD_NUMBER = 18;
    private foo.TestFull.SubMess testMessage_;
    /**
     * <code>optional .foo.SubMess test_message = 18;</code>
     * @return Whether the testMessage field is set.
     */
    @java.lang.Override
    public boolean hasTestMessage() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * <code>optional .foo.SubMess test_message = 18;</code>
     * @return The testMessage.
     */
    @java.lang.Override
    public foo.TestFull.SubMess getTestMessage() {
      return testMessage_ == null ? foo.TestFull.SubMess.getDefaultInstance() : testMessage_;
    }
    /**
     * <code>optional .foo.SubMess test_message = 18;</code>
     */
    @java.lang.Override
    public foo.TestFull.SubMessOrBuilder getTestMessageOrBuilder() {
      return testMessage_ == null ? foo.TestFull.SubMess.getDefaultInstance() : testMessage_;
    }

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

      if (hasTestMessage()) {
        if (!getTestMessage().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(1, testInt32_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeSInt32(2, testSint32_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeSFixed32(3, testSfixed32_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeInt64(4, testInt64_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeSInt64(5, testSint64_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeSFixed64(6, testSfixed64_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeUInt32(7, testUint32_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeFixed32(8, testFixed32_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeUInt64(9, testUint64_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeFixed64(10, testFixed64_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeFloat(11, testFloat_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeDouble(12, testDouble_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeBool(13, testBoolean_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeEnum(14, testEnumSmall_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        output.writeEnum(15, testEnum_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 16, testString_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        output.writeBytes(17, testBytes_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        output.writeMessage(18, getTestMessage());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, testInt32_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt32Size(2, testSint32_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSFixed32Size(3, testSfixed32_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, testInt64_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt64Size(5, testSint64_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSFixed64Size(6, testSfixed64_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(7, testUint32_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(8, testFixed32_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(9, testUint64_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed64Size(10, testFixed64_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(11, testFloat_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(12, testDouble_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(13, testBoolean_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(14, testEnumSmall_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(15, testEnum_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, testString_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(17, testBytes_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, getTestMessage());
      }
      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 foo.TestFull.TestMessOptional)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessOptional other = (foo.TestFull.TestMessOptional) obj;

      if (hasTestInt32() != other.hasTestInt32()) return false;
      if (hasTestInt32()) {
        if (getTestInt32()
            != other.getTestInt32()) return false;
      }
      if (hasTestSint32() != other.hasTestSint32()) return false;
      if (hasTestSint32()) {
        if (getTestSint32()
            != other.getTestSint32()) return false;
      }
      if (hasTestSfixed32() != other.hasTestSfixed32()) return false;
      if (hasTestSfixed32()) {
        if (getTestSfixed32()
            != other.getTestSfixed32()) return false;
      }
      if (hasTestInt64() != other.hasTestInt64()) return false;
      if (hasTestInt64()) {
        if (getTestInt64()
            != other.getTestInt64()) return false;
      }
      if (hasTestSint64() != other.hasTestSint64()) return false;
      if (hasTestSint64()) {
        if (getTestSint64()
            != other.getTestSint64()) return false;
      }
      if (hasTestSfixed64() != other.hasTestSfixed64()) return false;
      if (hasTestSfixed64()) {
        if (getTestSfixed64()
            != other.getTestSfixed64()) return false;
      }
      if (hasTestUint32() != other.hasTestUint32()) return false;
      if (hasTestUint32()) {
        if (getTestUint32()
            != other.getTestUint32()) return false;
      }
      if (hasTestFixed32() != other.hasTestFixed32()) return false;
      if (hasTestFixed32()) {
        if (getTestFixed32()
            != other.getTestFixed32()) return false;
      }
      if (hasTestUint64() != other.hasTestUint64()) return false;
      if (hasTestUint64()) {
        if (getTestUint64()
            != other.getTestUint64()) return false;
      }
      if (hasTestFixed64() != other.hasTestFixed64()) return false;
      if (hasTestFixed64()) {
        if (getTestFixed64()
            != other.getTestFixed64()) return false;
      }
      if (hasTestFloat() != other.hasTestFloat()) return false;
      if (hasTestFloat()) {
        if (java.lang.Float.floatToIntBits(getTestFloat())
            != java.lang.Float.floatToIntBits(
                other.getTestFloat())) return false;
      }
      if (hasTestDouble() != other.hasTestDouble()) return false;
      if (hasTestDouble()) {
        if (java.lang.Double.doubleToLongBits(getTestDouble())
            != java.lang.Double.doubleToLongBits(
                other.getTestDouble())) return false;
      }
      if (hasTestBoolean() != other.hasTestBoolean()) return false;
      if (hasTestBoolean()) {
        if (getTestBoolean()
            != other.getTestBoolean()) return false;
      }
      if (hasTestEnumSmall() != other.hasTestEnumSmall()) return false;
      if (hasTestEnumSmall()) {
        if (testEnumSmall_ != other.testEnumSmall_) return false;
      }
      if (hasTestEnum() != other.hasTestEnum()) return false;
      if (hasTestEnum()) {
        if (testEnum_ != other.testEnum_) return false;
      }
      if (hasTestString() != other.hasTestString()) return false;
      if (hasTestString()) {
        if (!getTestString()
            .equals(other.getTestString())) return false;
      }
      if (hasTestBytes() != other.hasTestBytes()) return false;
      if (hasTestBytes()) {
        if (!getTestBytes()
            .equals(other.getTestBytes())) return false;
      }
      if (hasTestMessage() != other.hasTestMessage()) return false;
      if (hasTestMessage()) {
        if (!getTestMessage()
            .equals(other.getTestMessage())) 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 (hasTestInt32()) {
        hash = (37 * hash) + TEST_INT32_FIELD_NUMBER;
        hash = (53 * hash) + getTestInt32();
      }
      if (hasTestSint32()) {
        hash = (37 * hash) + TEST_SINT32_FIELD_NUMBER;
        hash = (53 * hash) + getTestSint32();
      }
      if (hasTestSfixed32()) {
        hash = (37 * hash) + TEST_SFIXED32_FIELD_NUMBER;
        hash = (53 * hash) + getTestSfixed32();
      }
      if (hasTestInt64()) {
        hash = (37 * hash) + TEST_INT64_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTestInt64());
      }
      if (hasTestSint64()) {
        hash = (37 * hash) + TEST_SINT64_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTestSint64());
      }
      if (hasTestSfixed64()) {
        hash = (37 * hash) + TEST_SFIXED64_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTestSfixed64());
      }
      if (hasTestUint32()) {
        hash = (37 * hash) + TEST_UINT32_FIELD_NUMBER;
        hash = (53 * hash) + getTestUint32();
      }
      if (hasTestFixed32()) {
        hash = (37 * hash) + TEST_FIXED32_FIELD_NUMBER;
        hash = (53 * hash) + getTestFixed32();
      }
      if (hasTestUint64()) {
        hash = (37 * hash) + TEST_UINT64_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTestUint64());
      }
      if (hasTestFixed64()) {
        hash = (37 * hash) + TEST_FIXED64_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTestFixed64());
      }
      if (hasTestFloat()) {
        hash = (37 * hash) + TEST_FLOAT_FIELD_NUMBER;
        hash = (53 * hash) + java.lang.Float.floatToIntBits(
            getTestFloat());
      }
      if (hasTestDouble()) {
        hash = (37 * hash) + TEST_DOUBLE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getTestDouble()));
      }
      if (hasTestBoolean()) {
        hash = (37 * hash) + TEST_BOOLEAN_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getTestBoolean());
      }
      if (hasTestEnumSmall()) {
        hash = (37 * hash) + TEST_ENUM_SMALL_FIELD_NUMBER;
        hash = (53 * hash) + testEnumSmall_;
      }
      if (hasTestEnum()) {
        hash = (37 * hash) + TEST_ENUM_FIELD_NUMBER;
        hash = (53 * hash) + testEnum_;
      }
      if (hasTestString()) {
        hash = (37 * hash) + TEST_STRING_FIELD_NUMBER;
        hash = (53 * hash) + getTestString().hashCode();
      }
      if (hasTestBytes()) {
        hash = (37 * hash) + TEST_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + getTestBytes().hashCode();
      }
      if (hasTestMessage()) {
        hash = (37 * hash) + TEST_MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getTestMessage().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessOptional_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessOptional.class, foo.TestFull.TestMessOptional.Builder.class);
      }

      // Construct using foo.TestFull.TestMessOptional.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTestMessageFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        testInt32_ = 0;
        testSint32_ = 0;
        testSfixed32_ = 0;
        testInt64_ = 0L;
        testSint64_ = 0L;
        testSfixed64_ = 0L;
        testUint32_ = 0;
        testFixed32_ = 0;
        testUint64_ = 0L;
        testFixed64_ = 0L;
        testFloat_ = 0F;
        testDouble_ = 0D;
        testBoolean_ = false;
        testEnumSmall_ = -1;
        testEnum_ = -123456;
        testString_ = "";
        testBytes_ = com.google.protobuf.ByteString.EMPTY;
        testMessage_ = null;
        if (testMessageBuilder_ != null) {
          testMessageBuilder_.dispose();
          testMessageBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessOptional_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessOptional getDefaultInstanceForType() {
        return foo.TestFull.TestMessOptional.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessOptional build() {
        foo.TestFull.TestMessOptional result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessOptional buildPartial() {
        foo.TestFull.TestMessOptional result = new foo.TestFull.TestMessOptional(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessOptional result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.testInt32_ = testInt32_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.testSint32_ = testSint32_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.testSfixed32_ = testSfixed32_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.testInt64_ = testInt64_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.testSint64_ = testSint64_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.testSfixed64_ = testSfixed64_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.testUint32_ = testUint32_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.testFixed32_ = testFixed32_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.testUint64_ = testUint64_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.testFixed64_ = testFixed64_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.testFloat_ = testFloat_;
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.testDouble_ = testDouble_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.testBoolean_ = testBoolean_;
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.testEnumSmall_ = testEnumSmall_;
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.testEnum_ = testEnum_;
          to_bitField0_ |= 0x00004000;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.testString_ = testString_;
          to_bitField0_ |= 0x00008000;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.testBytes_ = testBytes_;
          to_bitField0_ |= 0x00010000;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.testMessage_ = testMessageBuilder_ == null
              ? testMessage_
              : testMessageBuilder_.build();
          to_bitField0_ |= 0x00020000;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessOptional) {
          return mergeFrom((foo.TestFull.TestMessOptional)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessOptional other) {
        if (other == foo.TestFull.TestMessOptional.getDefaultInstance()) return this;
        if (other.hasTestInt32()) {
          setTestInt32(other.getTestInt32());
        }
        if (other.hasTestSint32()) {
          setTestSint32(other.getTestSint32());
        }
        if (other.hasTestSfixed32()) {
          setTestSfixed32(other.getTestSfixed32());
        }
        if (other.hasTestInt64()) {
          setTestInt64(other.getTestInt64());
        }
        if (other.hasTestSint64()) {
          setTestSint64(other.getTestSint64());
        }
        if (other.hasTestSfixed64()) {
          setTestSfixed64(other.getTestSfixed64());
        }
        if (other.hasTestUint32()) {
          setTestUint32(other.getTestUint32());
        }
        if (other.hasTestFixed32()) {
          setTestFixed32(other.getTestFixed32());
        }
        if (other.hasTestUint64()) {
          setTestUint64(other.getTestUint64());
        }
        if (other.hasTestFixed64()) {
          setTestFixed64(other.getTestFixed64());
        }
        if (other.hasTestFloat()) {
          setTestFloat(other.getTestFloat());
        }
        if (other.hasTestDouble()) {
          setTestDouble(other.getTestDouble());
        }
        if (other.hasTestBoolean()) {
          setTestBoolean(other.getTestBoolean());
        }
        if (other.hasTestEnumSmall()) {
          setTestEnumSmall(other.getTestEnumSmall());
        }
        if (other.hasTestEnum()) {
          setTestEnum(other.getTestEnum());
        }
        if (other.hasTestString()) {
          testString_ = other.testString_;
          bitField0_ |= 0x00008000;
          onChanged();
        }
        if (other.hasTestBytes()) {
          setTestBytes(other.getTestBytes());
        }
        if (other.hasTestMessage()) {
          mergeTestMessage(other.getTestMessage());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasTestMessage()) {
          if (!getTestMessage().isInitialized()) {
            return false;
          }
        }
        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: {
                testInt32_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                testSint32_ = input.readSInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 29: {
                testSfixed32_ = input.readSFixed32();
                bitField0_ |= 0x00000004;
                break;
              } // case 29
              case 32: {
                testInt64_ = input.readInt64();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                testSint64_ = input.readSInt64();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 49: {
                testSfixed64_ = input.readSFixed64();
                bitField0_ |= 0x00000020;
                break;
              } // case 49
              case 56: {
                testUint32_ = input.readUInt32();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              case 69: {
                testFixed32_ = input.readFixed32();
                bitField0_ |= 0x00000080;
                break;
              } // case 69
              case 72: {
                testUint64_ = input.readUInt64();
                bitField0_ |= 0x00000100;
                break;
              } // case 72
              case 81: {
                testFixed64_ = input.readFixed64();
                bitField0_ |= 0x00000200;
                break;
              } // case 81
              case 93: {
                testFloat_ = input.readFloat();
                bitField0_ |= 0x00000400;
                break;
              } // case 93
              case 97: {
                testDouble_ = input.readDouble();
                bitField0_ |= 0x00000800;
                break;
              } // case 97
              case 104: {
                testBoolean_ = input.readBool();
                bitField0_ |= 0x00001000;
                break;
              } // case 104
              case 112: {
                int tmpRaw = input.readEnum();
                foo.TestFull.TestEnumSmall tmpValue =
                    foo.TestFull.TestEnumSmall.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(14, tmpRaw);
                } else {
                  testEnumSmall_ = tmpRaw;
                  bitField0_ |= 0x00002000;
                }
                break;
              } // case 112
              case 120: {
                int tmpRaw = input.readEnum();
                foo.TestFull.TestEnum tmpValue =
                    foo.TestFull.TestEnum.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(15, tmpRaw);
                } else {
                  testEnum_ = tmpRaw;
                  bitField0_ |= 0x00004000;
                }
                break;
              } // case 120
              case 130: {
                testString_ = input.readBytes();
                bitField0_ |= 0x00008000;
                break;
              } // case 130
              case 138: {
                testBytes_ = input.readBytes();
                bitField0_ |= 0x00010000;
                break;
              } // case 138
              case 146: {
                input.readMessage(
                    getTestMessageFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00020000;
                break;
              } // case 146
              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 testInt32_ ;
      /**
       * <code>optional int32 test_int32 = 1;</code>
       * @return Whether the testInt32 field is set.
       */
      @java.lang.Override
      public boolean hasTestInt32() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional int32 test_int32 = 1;</code>
       * @return The testInt32.
       */
      @java.lang.Override
      public int getTestInt32() {
        return testInt32_;
      }
      /**
       * <code>optional int32 test_int32 = 1;</code>
       * @param value The testInt32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestInt32(int value) {

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

      private int testSint32_ ;
      /**
       * <code>optional sint32 test_sint32 = 2;</code>
       * @return Whether the testSint32 field is set.
       */
      @java.lang.Override
      public boolean hasTestSint32() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional sint32 test_sint32 = 2;</code>
       * @return The testSint32.
       */
      @java.lang.Override
      public int getTestSint32() {
        return testSint32_;
      }
      /**
       * <code>optional sint32 test_sint32 = 2;</code>
       * @param value The testSint32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSint32(int value) {

        testSint32_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional sint32 test_sint32 = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSint32() {
        bitField0_ = (bitField0_ & ~0x00000002);
        testSint32_ = 0;
        onChanged();
        return this;
      }

      private int testSfixed32_ ;
      /**
       * <code>optional sfixed32 test_sfixed32 = 3;</code>
       * @return Whether the testSfixed32 field is set.
       */
      @java.lang.Override
      public boolean hasTestSfixed32() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional sfixed32 test_sfixed32 = 3;</code>
       * @return The testSfixed32.
       */
      @java.lang.Override
      public int getTestSfixed32() {
        return testSfixed32_;
      }
      /**
       * <code>optional sfixed32 test_sfixed32 = 3;</code>
       * @param value The testSfixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSfixed32(int value) {

        testSfixed32_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional sfixed32 test_sfixed32 = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSfixed32() {
        bitField0_ = (bitField0_ & ~0x00000004);
        testSfixed32_ = 0;
        onChanged();
        return this;
      }

      private long testInt64_ ;
      /**
       * <code>optional int64 test_int64 = 4;</code>
       * @return Whether the testInt64 field is set.
       */
      @java.lang.Override
      public boolean hasTestInt64() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional int64 test_int64 = 4;</code>
       * @return The testInt64.
       */
      @java.lang.Override
      public long getTestInt64() {
        return testInt64_;
      }
      /**
       * <code>optional int64 test_int64 = 4;</code>
       * @param value The testInt64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestInt64(long value) {

        testInt64_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 test_int64 = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestInt64() {
        bitField0_ = (bitField0_ & ~0x00000008);
        testInt64_ = 0L;
        onChanged();
        return this;
      }

      private long testSint64_ ;
      /**
       * <code>optional sint64 test_sint64 = 5;</code>
       * @return Whether the testSint64 field is set.
       */
      @java.lang.Override
      public boolean hasTestSint64() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional sint64 test_sint64 = 5;</code>
       * @return The testSint64.
       */
      @java.lang.Override
      public long getTestSint64() {
        return testSint64_;
      }
      /**
       * <code>optional sint64 test_sint64 = 5;</code>
       * @param value The testSint64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSint64(long value) {

        testSint64_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional sint64 test_sint64 = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSint64() {
        bitField0_ = (bitField0_ & ~0x00000010);
        testSint64_ = 0L;
        onChanged();
        return this;
      }

      private long testSfixed64_ ;
      /**
       * <code>optional sfixed64 test_sfixed64 = 6;</code>
       * @return Whether the testSfixed64 field is set.
       */
      @java.lang.Override
      public boolean hasTestSfixed64() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional sfixed64 test_sfixed64 = 6;</code>
       * @return The testSfixed64.
       */
      @java.lang.Override
      public long getTestSfixed64() {
        return testSfixed64_;
      }
      /**
       * <code>optional sfixed64 test_sfixed64 = 6;</code>
       * @param value The testSfixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSfixed64(long value) {

        testSfixed64_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>optional sfixed64 test_sfixed64 = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSfixed64() {
        bitField0_ = (bitField0_ & ~0x00000020);
        testSfixed64_ = 0L;
        onChanged();
        return this;
      }

      private int testUint32_ ;
      /**
       * <code>optional uint32 test_uint32 = 7;</code>
       * @return Whether the testUint32 field is set.
       */
      @java.lang.Override
      public boolean hasTestUint32() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional uint32 test_uint32 = 7;</code>
       * @return The testUint32.
       */
      @java.lang.Override
      public int getTestUint32() {
        return testUint32_;
      }
      /**
       * <code>optional uint32 test_uint32 = 7;</code>
       * @param value The testUint32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestUint32(int value) {

        testUint32_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 test_uint32 = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestUint32() {
        bitField0_ = (bitField0_ & ~0x00000040);
        testUint32_ = 0;
        onChanged();
        return this;
      }

      private int testFixed32_ ;
      /**
       * <code>optional fixed32 test_fixed32 = 8;</code>
       * @return Whether the testFixed32 field is set.
       */
      @java.lang.Override
      public boolean hasTestFixed32() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional fixed32 test_fixed32 = 8;</code>
       * @return The testFixed32.
       */
      @java.lang.Override
      public int getTestFixed32() {
        return testFixed32_;
      }
      /**
       * <code>optional fixed32 test_fixed32 = 8;</code>
       * @param value The testFixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestFixed32(int value) {

        testFixed32_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>optional fixed32 test_fixed32 = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestFixed32() {
        bitField0_ = (bitField0_ & ~0x00000080);
        testFixed32_ = 0;
        onChanged();
        return this;
      }

      private long testUint64_ ;
      /**
       * <code>optional uint64 test_uint64 = 9;</code>
       * @return Whether the testUint64 field is set.
       */
      @java.lang.Override
      public boolean hasTestUint64() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional uint64 test_uint64 = 9;</code>
       * @return The testUint64.
       */
      @java.lang.Override
      public long getTestUint64() {
        return testUint64_;
      }
      /**
       * <code>optional uint64 test_uint64 = 9;</code>
       * @param value The testUint64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestUint64(long value) {

        testUint64_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 test_uint64 = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestUint64() {
        bitField0_ = (bitField0_ & ~0x00000100);
        testUint64_ = 0L;
        onChanged();
        return this;
      }

      private long testFixed64_ ;
      /**
       * <code>optional fixed64 test_fixed64 = 10;</code>
       * @return Whether the testFixed64 field is set.
       */
      @java.lang.Override
      public boolean hasTestFixed64() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional fixed64 test_fixed64 = 10;</code>
       * @return The testFixed64.
       */
      @java.lang.Override
      public long getTestFixed64() {
        return testFixed64_;
      }
      /**
       * <code>optional fixed64 test_fixed64 = 10;</code>
       * @param value The testFixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestFixed64(long value) {

        testFixed64_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>optional fixed64 test_fixed64 = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestFixed64() {
        bitField0_ = (bitField0_ & ~0x00000200);
        testFixed64_ = 0L;
        onChanged();
        return this;
      }

      private float testFloat_ ;
      /**
       * <code>optional float test_float = 11;</code>
       * @return Whether the testFloat field is set.
       */
      @java.lang.Override
      public boolean hasTestFloat() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <code>optional float test_float = 11;</code>
       * @return The testFloat.
       */
      @java.lang.Override
      public float getTestFloat() {
        return testFloat_;
      }
      /**
       * <code>optional float test_float = 11;</code>
       * @param value The testFloat to set.
       * @return This builder for chaining.
       */
      public Builder setTestFloat(float value) {

        testFloat_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>optional float test_float = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestFloat() {
        bitField0_ = (bitField0_ & ~0x00000400);
        testFloat_ = 0F;
        onChanged();
        return this;
      }

      private double testDouble_ ;
      /**
       * <code>optional double test_double = 12;</code>
       * @return Whether the testDouble field is set.
       */
      @java.lang.Override
      public boolean hasTestDouble() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <code>optional double test_double = 12;</code>
       * @return The testDouble.
       */
      @java.lang.Override
      public double getTestDouble() {
        return testDouble_;
      }
      /**
       * <code>optional double test_double = 12;</code>
       * @param value The testDouble to set.
       * @return This builder for chaining.
       */
      public Builder setTestDouble(double value) {

        testDouble_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>optional double test_double = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestDouble() {
        bitField0_ = (bitField0_ & ~0x00000800);
        testDouble_ = 0D;
        onChanged();
        return this;
      }

      private boolean testBoolean_ ;
      /**
       * <code>optional bool test_boolean = 13;</code>
       * @return Whether the testBoolean field is set.
       */
      @java.lang.Override
      public boolean hasTestBoolean() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <code>optional bool test_boolean = 13;</code>
       * @return The testBoolean.
       */
      @java.lang.Override
      public boolean getTestBoolean() {
        return testBoolean_;
      }
      /**
       * <code>optional bool test_boolean = 13;</code>
       * @param value The testBoolean to set.
       * @return This builder for chaining.
       */
      public Builder setTestBoolean(boolean value) {

        testBoolean_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool test_boolean = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestBoolean() {
        bitField0_ = (bitField0_ & ~0x00001000);
        testBoolean_ = false;
        onChanged();
        return this;
      }

      private int testEnumSmall_ = -1;
      /**
       * <code>optional .foo.TestEnumSmall test_enum_small = 14;</code>
       * @return Whether the testEnumSmall field is set.
       */
      @java.lang.Override public boolean hasTestEnumSmall() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <code>optional .foo.TestEnumSmall test_enum_small = 14;</code>
       * @return The testEnumSmall.
       */
      @java.lang.Override
      public foo.TestFull.TestEnumSmall getTestEnumSmall() {
        foo.TestFull.TestEnumSmall result = foo.TestFull.TestEnumSmall.forNumber(testEnumSmall_);
        return result == null ? foo.TestFull.TestEnumSmall.NEG_VALUE : result;
      }
      /**
       * <code>optional .foo.TestEnumSmall test_enum_small = 14;</code>
       * @param value The testEnumSmall to set.
       * @return This builder for chaining.
       */
      public Builder setTestEnumSmall(foo.TestFull.TestEnumSmall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00002000;
        testEnumSmall_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.TestEnumSmall test_enum_small = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestEnumSmall() {
        bitField0_ = (bitField0_ & ~0x00002000);
        testEnumSmall_ = -1;
        onChanged();
        return this;
      }

      private int testEnum_ = -123456;
      /**
       * <code>optional .foo.TestEnum test_enum = 15;</code>
       * @return Whether the testEnum field is set.
       */
      @java.lang.Override public boolean hasTestEnum() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <code>optional .foo.TestEnum test_enum = 15;</code>
       * @return The testEnum.
       */
      @java.lang.Override
      public foo.TestFull.TestEnum getTestEnum() {
        foo.TestFull.TestEnum result = foo.TestFull.TestEnum.forNumber(testEnum_);
        return result == null ? foo.TestFull.TestEnum.VALUENEG123456 : result;
      }
      /**
       * <code>optional .foo.TestEnum test_enum = 15;</code>
       * @param value The testEnum to set.
       * @return This builder for chaining.
       */
      public Builder setTestEnum(foo.TestFull.TestEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00004000;
        testEnum_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.TestEnum test_enum = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestEnum() {
        bitField0_ = (bitField0_ & ~0x00004000);
        testEnum_ = -123456;
        onChanged();
        return this;
      }

      private java.lang.Object testString_ = "";
      /**
       * <code>optional string test_string = 16;</code>
       * @return Whether the testString field is set.
       */
      public boolean hasTestString() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <code>optional string test_string = 16;</code>
       * @return The testString.
       */
      public java.lang.String getTestString() {
        java.lang.Object ref = testString_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            testString_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string test_string = 16;</code>
       * @return The bytes for testString.
       */
      public com.google.protobuf.ByteString
          getTestStringBytes() {
        java.lang.Object ref = testString_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          testString_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string test_string = 16;</code>
       * @param value The testString to set.
       * @return This builder for chaining.
       */
      public Builder setTestString(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        testString_ = value;
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string test_string = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestString() {
        testString_ = getDefaultInstance().getTestString();
        bitField0_ = (bitField0_ & ~0x00008000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string test_string = 16;</code>
       * @param value The bytes for testString to set.
       * @return This builder for chaining.
       */
      public Builder setTestStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        testString_ = value;
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString testBytes_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes test_bytes = 17;</code>
       * @return Whether the testBytes field is set.
       */
      @java.lang.Override
      public boolean hasTestBytes() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * <code>optional bytes test_bytes = 17;</code>
       * @return The testBytes.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTestBytes() {
        return testBytes_;
      }
      /**
       * <code>optional bytes test_bytes = 17;</code>
       * @param value The testBytes to set.
       * @return This builder for chaining.
       */
      public Builder setTestBytes(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        testBytes_ = value;
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes test_bytes = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestBytes() {
        bitField0_ = (bitField0_ & ~0x00010000);
        testBytes_ = getDefaultInstance().getTestBytes();
        onChanged();
        return this;
      }

      private foo.TestFull.SubMess testMessage_;
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder> testMessageBuilder_;
      /**
       * <code>optional .foo.SubMess test_message = 18;</code>
       * @return Whether the testMessage field is set.
       */
      public boolean hasTestMessage() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * <code>optional .foo.SubMess test_message = 18;</code>
       * @return The testMessage.
       */
      public foo.TestFull.SubMess getTestMessage() {
        if (testMessageBuilder_ == null) {
          return testMessage_ == null ? foo.TestFull.SubMess.getDefaultInstance() : testMessage_;
        } else {
          return testMessageBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .foo.SubMess test_message = 18;</code>
       */
      public Builder setTestMessage(foo.TestFull.SubMess value) {
        if (testMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          testMessage_ = value;
        } else {
          testMessageBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.SubMess test_message = 18;</code>
       */
      public Builder setTestMessage(
          foo.TestFull.SubMess.Builder builderForValue) {
        if (testMessageBuilder_ == null) {
          testMessage_ = builderForValue.build();
        } else {
          testMessageBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.SubMess test_message = 18;</code>
       */
      public Builder mergeTestMessage(foo.TestFull.SubMess value) {
        if (testMessageBuilder_ == null) {
          if (((bitField0_ & 0x00020000) != 0) &&
            testMessage_ != null &&
            testMessage_ != foo.TestFull.SubMess.getDefaultInstance()) {
            getTestMessageBuilder().mergeFrom(value);
          } else {
            testMessage_ = value;
          }
        } else {
          testMessageBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.SubMess test_message = 18;</code>
       */
      public Builder clearTestMessage() {
        bitField0_ = (bitField0_ & ~0x00020000);
        testMessage_ = null;
        if (testMessageBuilder_ != null) {
          testMessageBuilder_.dispose();
          testMessageBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.SubMess test_message = 18;</code>
       */
      public foo.TestFull.SubMess.Builder getTestMessageBuilder() {
        bitField0_ |= 0x00020000;
        onChanged();
        return getTestMessageFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .foo.SubMess test_message = 18;</code>
       */
      public foo.TestFull.SubMessOrBuilder getTestMessageOrBuilder() {
        if (testMessageBuilder_ != null) {
          return testMessageBuilder_.getMessageOrBuilder();
        } else {
          return testMessage_ == null ?
              foo.TestFull.SubMess.getDefaultInstance() : testMessage_;
        }
      }
      /**
       * <code>optional .foo.SubMess test_message = 18;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder> 
          getTestMessageFieldBuilder() {
        if (testMessageBuilder_ == null) {
          testMessageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder>(
                  getTestMessage(),
                  getParentForChildren(),
                  isClean());
          testMessage_ = null;
        }
        return testMessageBuilder_;
      }
      @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:foo.TestMessOptional)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessOptional)
    private static final foo.TestFull.TestMessOptional DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessOptional();
    }

    public static foo.TestFull.TestMessOptional getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessOptional getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessOneofOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessOneof)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 test_int32 = 1;</code>
     * @return Whether the testInt32 field is set.
     */
    boolean hasTestInt32();
    /**
     * <code>int32 test_int32 = 1;</code>
     * @return The testInt32.
     */
    int getTestInt32();

    /**
     * <code>sint32 test_sint32 = 2;</code>
     * @return Whether the testSint32 field is set.
     */
    boolean hasTestSint32();
    /**
     * <code>sint32 test_sint32 = 2;</code>
     * @return The testSint32.
     */
    int getTestSint32();

    /**
     * <code>sfixed32 test_sfixed32 = 3;</code>
     * @return Whether the testSfixed32 field is set.
     */
    boolean hasTestSfixed32();
    /**
     * <code>sfixed32 test_sfixed32 = 3;</code>
     * @return The testSfixed32.
     */
    int getTestSfixed32();

    /**
     * <code>int64 test_int64 = 4;</code>
     * @return Whether the testInt64 field is set.
     */
    boolean hasTestInt64();
    /**
     * <code>int64 test_int64 = 4;</code>
     * @return The testInt64.
     */
    long getTestInt64();

    /**
     * <code>sint64 test_sint64 = 5;</code>
     * @return Whether the testSint64 field is set.
     */
    boolean hasTestSint64();
    /**
     * <code>sint64 test_sint64 = 5;</code>
     * @return The testSint64.
     */
    long getTestSint64();

    /**
     * <code>sfixed64 test_sfixed64 = 6;</code>
     * @return Whether the testSfixed64 field is set.
     */
    boolean hasTestSfixed64();
    /**
     * <code>sfixed64 test_sfixed64 = 6;</code>
     * @return The testSfixed64.
     */
    long getTestSfixed64();

    /**
     * <code>uint32 test_uint32 = 7;</code>
     * @return Whether the testUint32 field is set.
     */
    boolean hasTestUint32();
    /**
     * <code>uint32 test_uint32 = 7;</code>
     * @return The testUint32.
     */
    int getTestUint32();

    /**
     * <code>fixed32 test_fixed32 = 8;</code>
     * @return Whether the testFixed32 field is set.
     */
    boolean hasTestFixed32();
    /**
     * <code>fixed32 test_fixed32 = 8;</code>
     * @return The testFixed32.
     */
    int getTestFixed32();

    /**
     * <code>uint64 test_uint64 = 9;</code>
     * @return Whether the testUint64 field is set.
     */
    boolean hasTestUint64();
    /**
     * <code>uint64 test_uint64 = 9;</code>
     * @return The testUint64.
     */
    long getTestUint64();

    /**
     * <code>fixed64 test_fixed64 = 10;</code>
     * @return Whether the testFixed64 field is set.
     */
    boolean hasTestFixed64();
    /**
     * <code>fixed64 test_fixed64 = 10;</code>
     * @return The testFixed64.
     */
    long getTestFixed64();

    /**
     * <code>float test_float = 11;</code>
     * @return Whether the testFloat field is set.
     */
    boolean hasTestFloat();
    /**
     * <code>float test_float = 11;</code>
     * @return The testFloat.
     */
    float getTestFloat();

    /**
     * <code>double test_double = 12;</code>
     * @return Whether the testDouble field is set.
     */
    boolean hasTestDouble();
    /**
     * <code>double test_double = 12;</code>
     * @return The testDouble.
     */
    double getTestDouble();

    /**
     * <code>bool test_boolean = 13;</code>
     * @return Whether the testBoolean field is set.
     */
    boolean hasTestBoolean();
    /**
     * <code>bool test_boolean = 13;</code>
     * @return The testBoolean.
     */
    boolean getTestBoolean();

    /**
     * <code>.foo.TestEnumSmall test_enum_small = 14;</code>
     * @return Whether the testEnumSmall field is set.
     */
    boolean hasTestEnumSmall();
    /**
     * <code>.foo.TestEnumSmall test_enum_small = 14;</code>
     * @return The testEnumSmall.
     */
    foo.TestFull.TestEnumSmall getTestEnumSmall();

    /**
     * <code>.foo.TestEnum test_enum = 15;</code>
     * @return Whether the testEnum field is set.
     */
    boolean hasTestEnum();
    /**
     * <code>.foo.TestEnum test_enum = 15;</code>
     * @return The testEnum.
     */
    foo.TestFull.TestEnum getTestEnum();

    /**
     * <code>string test_string = 16;</code>
     * @return Whether the testString field is set.
     */
    boolean hasTestString();
    /**
     * <code>string test_string = 16;</code>
     * @return The testString.
     */
    java.lang.String getTestString();
    /**
     * <code>string test_string = 16;</code>
     * @return The bytes for testString.
     */
    com.google.protobuf.ByteString
        getTestStringBytes();

    /**
     * <code>bytes test_bytes = 17;</code>
     * @return Whether the testBytes field is set.
     */
    boolean hasTestBytes();
    /**
     * <code>bytes test_bytes = 17;</code>
     * @return The testBytes.
     */
    com.google.protobuf.ByteString getTestBytes();

    /**
     * <code>.foo.SubMess test_message = 18;</code>
     * @return Whether the testMessage field is set.
     */
    boolean hasTestMessage();
    /**
     * <code>.foo.SubMess test_message = 18;</code>
     * @return The testMessage.
     */
    foo.TestFull.SubMess getTestMessage();
    /**
     * <code>.foo.SubMess test_message = 18;</code>
     */
    foo.TestFull.SubMessOrBuilder getTestMessageOrBuilder();

    /**
     * <code>optional int32 opt_int = 19;</code>
     * @return Whether the optInt field is set.
     */
    boolean hasOptInt();
    /**
     * <code>optional int32 opt_int = 19;</code>
     * @return The optInt.
     */
    int getOptInt();

    foo.TestFull.TestMessOneof.TestOneofCase getTestOneofCase();
  }
  /**
   * Protobuf type {@code foo.TestMessOneof}
   */
  public static final class TestMessOneof extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessOneof)
      TestMessOneofOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessOneof.newBuilder() to construct.
    private TestMessOneof(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessOneof() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessOneof_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessOneof_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessOneof.class, foo.TestFull.TestMessOneof.Builder.class);
    }

    private int bitField0_;
    private int testOneofCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object testOneof_;
    public enum TestOneofCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      TEST_INT32(1),
      TEST_SINT32(2),
      TEST_SFIXED32(3),
      TEST_INT64(4),
      TEST_SINT64(5),
      TEST_SFIXED64(6),
      TEST_UINT32(7),
      TEST_FIXED32(8),
      TEST_UINT64(9),
      TEST_FIXED64(10),
      TEST_FLOAT(11),
      TEST_DOUBLE(12),
      TEST_BOOLEAN(13),
      TEST_ENUM_SMALL(14),
      TEST_ENUM(15),
      TEST_STRING(16),
      TEST_BYTES(17),
      TEST_MESSAGE(18),
      TESTONEOF_NOT_SET(0);
      private final int value;
      private TestOneofCase(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 TestOneofCase valueOf(int value) {
        return forNumber(value);
      }

      public static TestOneofCase forNumber(int value) {
        switch (value) {
          case 1: return TEST_INT32;
          case 2: return TEST_SINT32;
          case 3: return TEST_SFIXED32;
          case 4: return TEST_INT64;
          case 5: return TEST_SINT64;
          case 6: return TEST_SFIXED64;
          case 7: return TEST_UINT32;
          case 8: return TEST_FIXED32;
          case 9: return TEST_UINT64;
          case 10: return TEST_FIXED64;
          case 11: return TEST_FLOAT;
          case 12: return TEST_DOUBLE;
          case 13: return TEST_BOOLEAN;
          case 14: return TEST_ENUM_SMALL;
          case 15: return TEST_ENUM;
          case 16: return TEST_STRING;
          case 17: return TEST_BYTES;
          case 18: return TEST_MESSAGE;
          case 0: return TESTONEOF_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TestOneofCase
    getTestOneofCase() {
      return TestOneofCase.forNumber(
          testOneofCase_);
    }

    public static final int TEST_INT32_FIELD_NUMBER = 1;
    /**
     * <code>int32 test_int32 = 1;</code>
     * @return Whether the testInt32 field is set.
     */
    @java.lang.Override
    public boolean hasTestInt32() {
      return testOneofCase_ == 1;
    }
    /**
     * <code>int32 test_int32 = 1;</code>
     * @return The testInt32.
     */
    @java.lang.Override
    public int getTestInt32() {
      if (testOneofCase_ == 1) {
        return (java.lang.Integer) testOneof_;
      }
      return 0;
    }

    public static final int TEST_SINT32_FIELD_NUMBER = 2;
    /**
     * <code>sint32 test_sint32 = 2;</code>
     * @return Whether the testSint32 field is set.
     */
    @java.lang.Override
    public boolean hasTestSint32() {
      return testOneofCase_ == 2;
    }
    /**
     * <code>sint32 test_sint32 = 2;</code>
     * @return The testSint32.
     */
    @java.lang.Override
    public int getTestSint32() {
      if (testOneofCase_ == 2) {
        return (java.lang.Integer) testOneof_;
      }
      return 0;
    }

    public static final int TEST_SFIXED32_FIELD_NUMBER = 3;
    /**
     * <code>sfixed32 test_sfixed32 = 3;</code>
     * @return Whether the testSfixed32 field is set.
     */
    @java.lang.Override
    public boolean hasTestSfixed32() {
      return testOneofCase_ == 3;
    }
    /**
     * <code>sfixed32 test_sfixed32 = 3;</code>
     * @return The testSfixed32.
     */
    @java.lang.Override
    public int getTestSfixed32() {
      if (testOneofCase_ == 3) {
        return (java.lang.Integer) testOneof_;
      }
      return 0;
    }

    public static final int TEST_INT64_FIELD_NUMBER = 4;
    /**
     * <code>int64 test_int64 = 4;</code>
     * @return Whether the testInt64 field is set.
     */
    @java.lang.Override
    public boolean hasTestInt64() {
      return testOneofCase_ == 4;
    }
    /**
     * <code>int64 test_int64 = 4;</code>
     * @return The testInt64.
     */
    @java.lang.Override
    public long getTestInt64() {
      if (testOneofCase_ == 4) {
        return (java.lang.Long) testOneof_;
      }
      return 0L;
    }

    public static final int TEST_SINT64_FIELD_NUMBER = 5;
    /**
     * <code>sint64 test_sint64 = 5;</code>
     * @return Whether the testSint64 field is set.
     */
    @java.lang.Override
    public boolean hasTestSint64() {
      return testOneofCase_ == 5;
    }
    /**
     * <code>sint64 test_sint64 = 5;</code>
     * @return The testSint64.
     */
    @java.lang.Override
    public long getTestSint64() {
      if (testOneofCase_ == 5) {
        return (java.lang.Long) testOneof_;
      }
      return 0L;
    }

    public static final int TEST_SFIXED64_FIELD_NUMBER = 6;
    /**
     * <code>sfixed64 test_sfixed64 = 6;</code>
     * @return Whether the testSfixed64 field is set.
     */
    @java.lang.Override
    public boolean hasTestSfixed64() {
      return testOneofCase_ == 6;
    }
    /**
     * <code>sfixed64 test_sfixed64 = 6;</code>
     * @return The testSfixed64.
     */
    @java.lang.Override
    public long getTestSfixed64() {
      if (testOneofCase_ == 6) {
        return (java.lang.Long) testOneof_;
      }
      return 0L;
    }

    public static final int TEST_UINT32_FIELD_NUMBER = 7;
    /**
     * <code>uint32 test_uint32 = 7;</code>
     * @return Whether the testUint32 field is set.
     */
    @java.lang.Override
    public boolean hasTestUint32() {
      return testOneofCase_ == 7;
    }
    /**
     * <code>uint32 test_uint32 = 7;</code>
     * @return The testUint32.
     */
    @java.lang.Override
    public int getTestUint32() {
      if (testOneofCase_ == 7) {
        return (java.lang.Integer) testOneof_;
      }
      return 0;
    }

    public static final int TEST_FIXED32_FIELD_NUMBER = 8;
    /**
     * <code>fixed32 test_fixed32 = 8;</code>
     * @return Whether the testFixed32 field is set.
     */
    @java.lang.Override
    public boolean hasTestFixed32() {
      return testOneofCase_ == 8;
    }
    /**
     * <code>fixed32 test_fixed32 = 8;</code>
     * @return The testFixed32.
     */
    @java.lang.Override
    public int getTestFixed32() {
      if (testOneofCase_ == 8) {
        return (java.lang.Integer) testOneof_;
      }
      return 0;
    }

    public static final int TEST_UINT64_FIELD_NUMBER = 9;
    /**
     * <code>uint64 test_uint64 = 9;</code>
     * @return Whether the testUint64 field is set.
     */
    @java.lang.Override
    public boolean hasTestUint64() {
      return testOneofCase_ == 9;
    }
    /**
     * <code>uint64 test_uint64 = 9;</code>
     * @return The testUint64.
     */
    @java.lang.Override
    public long getTestUint64() {
      if (testOneofCase_ == 9) {
        return (java.lang.Long) testOneof_;
      }
      return 0L;
    }

    public static final int TEST_FIXED64_FIELD_NUMBER = 10;
    /**
     * <code>fixed64 test_fixed64 = 10;</code>
     * @return Whether the testFixed64 field is set.
     */
    @java.lang.Override
    public boolean hasTestFixed64() {
      return testOneofCase_ == 10;
    }
    /**
     * <code>fixed64 test_fixed64 = 10;</code>
     * @return The testFixed64.
     */
    @java.lang.Override
    public long getTestFixed64() {
      if (testOneofCase_ == 10) {
        return (java.lang.Long) testOneof_;
      }
      return 0L;
    }

    public static final int TEST_FLOAT_FIELD_NUMBER = 11;
    /**
     * <code>float test_float = 11;</code>
     * @return Whether the testFloat field is set.
     */
    @java.lang.Override
    public boolean hasTestFloat() {
      return testOneofCase_ == 11;
    }
    /**
     * <code>float test_float = 11;</code>
     * @return The testFloat.
     */
    @java.lang.Override
    public float getTestFloat() {
      if (testOneofCase_ == 11) {
        return (java.lang.Float) testOneof_;
      }
      return 0F;
    }

    public static final int TEST_DOUBLE_FIELD_NUMBER = 12;
    /**
     * <code>double test_double = 12;</code>
     * @return Whether the testDouble field is set.
     */
    @java.lang.Override
    public boolean hasTestDouble() {
      return testOneofCase_ == 12;
    }
    /**
     * <code>double test_double = 12;</code>
     * @return The testDouble.
     */
    @java.lang.Override
    public double getTestDouble() {
      if (testOneofCase_ == 12) {
        return (java.lang.Double) testOneof_;
      }
      return 0D;
    }

    public static final int TEST_BOOLEAN_FIELD_NUMBER = 13;
    /**
     * <code>bool test_boolean = 13;</code>
     * @return Whether the testBoolean field is set.
     */
    @java.lang.Override
    public boolean hasTestBoolean() {
      return testOneofCase_ == 13;
    }
    /**
     * <code>bool test_boolean = 13;</code>
     * @return The testBoolean.
     */
    @java.lang.Override
    public boolean getTestBoolean() {
      if (testOneofCase_ == 13) {
        return (java.lang.Boolean) testOneof_;
      }
      return false;
    }

    public static final int TEST_ENUM_SMALL_FIELD_NUMBER = 14;
    /**
     * <code>.foo.TestEnumSmall test_enum_small = 14;</code>
     * @return Whether the testEnumSmall field is set.
     */
    public boolean hasTestEnumSmall() {
      return testOneofCase_ == 14;
    }
    /**
     * <code>.foo.TestEnumSmall test_enum_small = 14;</code>
     * @return The testEnumSmall.
     */
    public foo.TestFull.TestEnumSmall getTestEnumSmall() {
      if (testOneofCase_ == 14) {
        foo.TestFull.TestEnumSmall result = foo.TestFull.TestEnumSmall.forNumber(
            (java.lang.Integer) testOneof_);
        return result == null ? foo.TestFull.TestEnumSmall.NEG_VALUE : result;
      }
      return foo.TestFull.TestEnumSmall.NEG_VALUE;
    }

    public static final int TEST_ENUM_FIELD_NUMBER = 15;
    /**
     * <code>.foo.TestEnum test_enum = 15;</code>
     * @return Whether the testEnum field is set.
     */
    public boolean hasTestEnum() {
      return testOneofCase_ == 15;
    }
    /**
     * <code>.foo.TestEnum test_enum = 15;</code>
     * @return The testEnum.
     */
    public foo.TestFull.TestEnum getTestEnum() {
      if (testOneofCase_ == 15) {
        foo.TestFull.TestEnum result = foo.TestFull.TestEnum.forNumber(
            (java.lang.Integer) testOneof_);
        return result == null ? foo.TestFull.TestEnum.VALUENEG123456 : result;
      }
      return foo.TestFull.TestEnum.VALUENEG123456;
    }

    public static final int TEST_STRING_FIELD_NUMBER = 16;
    /**
     * <code>string test_string = 16;</code>
     * @return Whether the testString field is set.
     */
    public boolean hasTestString() {
      return testOneofCase_ == 16;
    }
    /**
     * <code>string test_string = 16;</code>
     * @return The testString.
     */
    public java.lang.String getTestString() {
      java.lang.Object ref = "";
      if (testOneofCase_ == 16) {
        ref = testOneof_;
      }
      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 (bs.isValidUtf8() && (testOneofCase_ == 16)) {
          testOneof_ = s;
        }
        return s;
      }
    }
    /**
     * <code>string test_string = 16;</code>
     * @return The bytes for testString.
     */
    public com.google.protobuf.ByteString
        getTestStringBytes() {
      java.lang.Object ref = "";
      if (testOneofCase_ == 16) {
        ref = testOneof_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (testOneofCase_ == 16) {
          testOneof_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEST_BYTES_FIELD_NUMBER = 17;
    /**
     * <code>bytes test_bytes = 17;</code>
     * @return Whether the testBytes field is set.
     */
    @java.lang.Override
    public boolean hasTestBytes() {
      return testOneofCase_ == 17;
    }
    /**
     * <code>bytes test_bytes = 17;</code>
     * @return The testBytes.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTestBytes() {
      if (testOneofCase_ == 17) {
        return (com.google.protobuf.ByteString) testOneof_;
      }
      return com.google.protobuf.ByteString.EMPTY;
    }

    public static final int TEST_MESSAGE_FIELD_NUMBER = 18;
    /**
     * <code>.foo.SubMess test_message = 18;</code>
     * @return Whether the testMessage field is set.
     */
    @java.lang.Override
    public boolean hasTestMessage() {
      return testOneofCase_ == 18;
    }
    /**
     * <code>.foo.SubMess test_message = 18;</code>
     * @return The testMessage.
     */
    @java.lang.Override
    public foo.TestFull.SubMess getTestMessage() {
      if (testOneofCase_ == 18) {
         return (foo.TestFull.SubMess) testOneof_;
      }
      return foo.TestFull.SubMess.getDefaultInstance();
    }
    /**
     * <code>.foo.SubMess test_message = 18;</code>
     */
    @java.lang.Override
    public foo.TestFull.SubMessOrBuilder getTestMessageOrBuilder() {
      if (testOneofCase_ == 18) {
         return (foo.TestFull.SubMess) testOneof_;
      }
      return foo.TestFull.SubMess.getDefaultInstance();
    }

    public static final int OPT_INT_FIELD_NUMBER = 19;
    private int optInt_ = 0;
    /**
     * <code>optional int32 opt_int = 19;</code>
     * @return Whether the optInt field is set.
     */
    @java.lang.Override
    public boolean hasOptInt() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional int32 opt_int = 19;</code>
     * @return The optInt.
     */
    @java.lang.Override
    public int getOptInt() {
      return optInt_;
    }

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

      if (hasTestMessage()) {
        if (!getTestMessage().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (testOneofCase_ == 1) {
        output.writeInt32(
            1, (int)((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 2) {
        output.writeSInt32(
            2, (int)((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 3) {
        output.writeSFixed32(
            3, (int)((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 4) {
        output.writeInt64(
            4, (long)((java.lang.Long) testOneof_));
      }
      if (testOneofCase_ == 5) {
        output.writeSInt64(
            5, (long)((java.lang.Long) testOneof_));
      }
      if (testOneofCase_ == 6) {
        output.writeSFixed64(
            6, (long)((java.lang.Long) testOneof_));
      }
      if (testOneofCase_ == 7) {
        output.writeUInt32(
            7, (int)((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 8) {
        output.writeFixed32(
            8, (int)((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 9) {
        output.writeUInt64(
            9, (long)((java.lang.Long) testOneof_));
      }
      if (testOneofCase_ == 10) {
        output.writeFixed64(
            10, (long)((java.lang.Long) testOneof_));
      }
      if (testOneofCase_ == 11) {
        output.writeFloat(
            11, (float)((java.lang.Float) testOneof_));
      }
      if (testOneofCase_ == 12) {
        output.writeDouble(
            12, (double)((java.lang.Double) testOneof_));
      }
      if (testOneofCase_ == 13) {
        output.writeBool(
            13, (boolean)((java.lang.Boolean) testOneof_));
      }
      if (testOneofCase_ == 14) {
        output.writeEnum(14, ((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 15) {
        output.writeEnum(15, ((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 16) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 16, testOneof_);
      }
      if (testOneofCase_ == 17) {
        output.writeBytes(
            17, (com.google.protobuf.ByteString) testOneof_);
      }
      if (testOneofCase_ == 18) {
        output.writeMessage(18, (foo.TestFull.SubMess) testOneof_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(19, optInt_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (testOneofCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              1, (int)((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt32Size(
              2, (int)((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeSFixed32Size(
              3, (int)((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(
              4, (long)((java.lang.Long) testOneof_));
      }
      if (testOneofCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt64Size(
              5, (long)((java.lang.Long) testOneof_));
      }
      if (testOneofCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
          .computeSFixed64Size(
              6, (long)((java.lang.Long) testOneof_));
      }
      if (testOneofCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(
              7, (int)((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 8) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(
              8, (int)((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 9) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(
              9, (long)((java.lang.Long) testOneof_));
      }
      if (testOneofCase_ == 10) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed64Size(
              10, (long)((java.lang.Long) testOneof_));
      }
      if (testOneofCase_ == 11) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(
              11, (float)((java.lang.Float) testOneof_));
      }
      if (testOneofCase_ == 12) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(
              12, (double)((java.lang.Double) testOneof_));
      }
      if (testOneofCase_ == 13) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(
              13, (boolean)((java.lang.Boolean) testOneof_));
      }
      if (testOneofCase_ == 14) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(14, ((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 15) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(15, ((java.lang.Integer) testOneof_));
      }
      if (testOneofCase_ == 16) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, testOneof_);
      }
      if (testOneofCase_ == 17) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(
              17, (com.google.protobuf.ByteString) testOneof_);
      }
      if (testOneofCase_ == 18) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, (foo.TestFull.SubMess) testOneof_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(19, optInt_);
      }
      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 foo.TestFull.TestMessOneof)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessOneof other = (foo.TestFull.TestMessOneof) obj;

      if (hasOptInt() != other.hasOptInt()) return false;
      if (hasOptInt()) {
        if (getOptInt()
            != other.getOptInt()) return false;
      }
      if (!getTestOneofCase().equals(other.getTestOneofCase())) return false;
      switch (testOneofCase_) {
        case 1:
          if (getTestInt32()
              != other.getTestInt32()) return false;
          break;
        case 2:
          if (getTestSint32()
              != other.getTestSint32()) return false;
          break;
        case 3:
          if (getTestSfixed32()
              != other.getTestSfixed32()) return false;
          break;
        case 4:
          if (getTestInt64()
              != other.getTestInt64()) return false;
          break;
        case 5:
          if (getTestSint64()
              != other.getTestSint64()) return false;
          break;
        case 6:
          if (getTestSfixed64()
              != other.getTestSfixed64()) return false;
          break;
        case 7:
          if (getTestUint32()
              != other.getTestUint32()) return false;
          break;
        case 8:
          if (getTestFixed32()
              != other.getTestFixed32()) return false;
          break;
        case 9:
          if (getTestUint64()
              != other.getTestUint64()) return false;
          break;
        case 10:
          if (getTestFixed64()
              != other.getTestFixed64()) return false;
          break;
        case 11:
          if (java.lang.Float.floatToIntBits(getTestFloat())
              != java.lang.Float.floatToIntBits(
                  other.getTestFloat())) return false;
          break;
        case 12:
          if (java.lang.Double.doubleToLongBits(getTestDouble())
              != java.lang.Double.doubleToLongBits(
                  other.getTestDouble())) return false;
          break;
        case 13:
          if (getTestBoolean()
              != other.getTestBoolean()) return false;
          break;
        case 14:
          if (!getTestEnumSmall()
              .equals(other.getTestEnumSmall())) return false;
          break;
        case 15:
          if (!getTestEnum()
              .equals(other.getTestEnum())) return false;
          break;
        case 16:
          if (!getTestString()
              .equals(other.getTestString())) return false;
          break;
        case 17:
          if (!getTestBytes()
              .equals(other.getTestBytes())) return false;
          break;
        case 18:
          if (!getTestMessage()
              .equals(other.getTestMessage())) 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();
      if (hasOptInt()) {
        hash = (37 * hash) + OPT_INT_FIELD_NUMBER;
        hash = (53 * hash) + getOptInt();
      }
      switch (testOneofCase_) {
        case 1:
          hash = (37 * hash) + TEST_INT32_FIELD_NUMBER;
          hash = (53 * hash) + getTestInt32();
          break;
        case 2:
          hash = (37 * hash) + TEST_SINT32_FIELD_NUMBER;
          hash = (53 * hash) + getTestSint32();
          break;
        case 3:
          hash = (37 * hash) + TEST_SFIXED32_FIELD_NUMBER;
          hash = (53 * hash) + getTestSfixed32();
          break;
        case 4:
          hash = (37 * hash) + TEST_INT64_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getTestInt64());
          break;
        case 5:
          hash = (37 * hash) + TEST_SINT64_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getTestSint64());
          break;
        case 6:
          hash = (37 * hash) + TEST_SFIXED64_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getTestSfixed64());
          break;
        case 7:
          hash = (37 * hash) + TEST_UINT32_FIELD_NUMBER;
          hash = (53 * hash) + getTestUint32();
          break;
        case 8:
          hash = (37 * hash) + TEST_FIXED32_FIELD_NUMBER;
          hash = (53 * hash) + getTestFixed32();
          break;
        case 9:
          hash = (37 * hash) + TEST_UINT64_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getTestUint64());
          break;
        case 10:
          hash = (37 * hash) + TEST_FIXED64_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getTestFixed64());
          break;
        case 11:
          hash = (37 * hash) + TEST_FLOAT_FIELD_NUMBER;
          hash = (53 * hash) + java.lang.Float.floatToIntBits(
              getTestFloat());
          break;
        case 12:
          hash = (37 * hash) + TEST_DOUBLE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              java.lang.Double.doubleToLongBits(getTestDouble()));
          break;
        case 13:
          hash = (37 * hash) + TEST_BOOLEAN_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getTestBoolean());
          break;
        case 14:
          hash = (37 * hash) + TEST_ENUM_SMALL_FIELD_NUMBER;
          hash = (53 * hash) + getTestEnumSmall().getNumber();
          break;
        case 15:
          hash = (37 * hash) + TEST_ENUM_FIELD_NUMBER;
          hash = (53 * hash) + getTestEnum().getNumber();
          break;
        case 16:
          hash = (37 * hash) + TEST_STRING_FIELD_NUMBER;
          hash = (53 * hash) + getTestString().hashCode();
          break;
        case 17:
          hash = (37 * hash) + TEST_BYTES_FIELD_NUMBER;
          hash = (53 * hash) + getTestBytes().hashCode();
          break;
        case 18:
          hash = (37 * hash) + TEST_MESSAGE_FIELD_NUMBER;
          hash = (53 * hash) + getTestMessage().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessOneof_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessOneof.class, foo.TestFull.TestMessOneof.Builder.class);
      }

      // Construct using foo.TestFull.TestMessOneof.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (testMessageBuilder_ != null) {
          testMessageBuilder_.clear();
        }
        optInt_ = 0;
        testOneofCase_ = 0;
        testOneof_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessOneof_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessOneof getDefaultInstanceForType() {
        return foo.TestFull.TestMessOneof.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessOneof build() {
        foo.TestFull.TestMessOneof result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessOneof buildPartial() {
        foo.TestFull.TestMessOneof result = new foo.TestFull.TestMessOneof(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessOneof result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.optInt_ = optInt_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      private void buildPartialOneofs(foo.TestFull.TestMessOneof result) {
        result.testOneofCase_ = testOneofCase_;
        result.testOneof_ = this.testOneof_;
        if (testOneofCase_ == 18 &&
            testMessageBuilder_ != null) {
          result.testOneof_ = testMessageBuilder_.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 foo.TestFull.TestMessOneof) {
          return mergeFrom((foo.TestFull.TestMessOneof)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessOneof other) {
        if (other == foo.TestFull.TestMessOneof.getDefaultInstance()) return this;
        if (other.hasOptInt()) {
          setOptInt(other.getOptInt());
        }
        switch (other.getTestOneofCase()) {
          case TEST_INT32: {
            setTestInt32(other.getTestInt32());
            break;
          }
          case TEST_SINT32: {
            setTestSint32(other.getTestSint32());
            break;
          }
          case TEST_SFIXED32: {
            setTestSfixed32(other.getTestSfixed32());
            break;
          }
          case TEST_INT64: {
            setTestInt64(other.getTestInt64());
            break;
          }
          case TEST_SINT64: {
            setTestSint64(other.getTestSint64());
            break;
          }
          case TEST_SFIXED64: {
            setTestSfixed64(other.getTestSfixed64());
            break;
          }
          case TEST_UINT32: {
            setTestUint32(other.getTestUint32());
            break;
          }
          case TEST_FIXED32: {
            setTestFixed32(other.getTestFixed32());
            break;
          }
          case TEST_UINT64: {
            setTestUint64(other.getTestUint64());
            break;
          }
          case TEST_FIXED64: {
            setTestFixed64(other.getTestFixed64());
            break;
          }
          case TEST_FLOAT: {
            setTestFloat(other.getTestFloat());
            break;
          }
          case TEST_DOUBLE: {
            setTestDouble(other.getTestDouble());
            break;
          }
          case TEST_BOOLEAN: {
            setTestBoolean(other.getTestBoolean());
            break;
          }
          case TEST_ENUM_SMALL: {
            setTestEnumSmall(other.getTestEnumSmall());
            break;
          }
          case TEST_ENUM: {
            setTestEnum(other.getTestEnum());
            break;
          }
          case TEST_STRING: {
            testOneofCase_ = 16;
            testOneof_ = other.testOneof_;
            onChanged();
            break;
          }
          case TEST_BYTES: {
            setTestBytes(other.getTestBytes());
            break;
          }
          case TEST_MESSAGE: {
            mergeTestMessage(other.getTestMessage());
            break;
          }
          case TESTONEOF_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasTestMessage()) {
          if (!getTestMessage().isInitialized()) {
            return false;
          }
        }
        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: {
                testOneof_ = input.readInt32();
                testOneofCase_ = 1;
                break;
              } // case 8
              case 16: {
                testOneof_ = input.readSInt32();
                testOneofCase_ = 2;
                break;
              } // case 16
              case 29: {
                testOneof_ = input.readSFixed32();
                testOneofCase_ = 3;
                break;
              } // case 29
              case 32: {
                testOneof_ = input.readInt64();
                testOneofCase_ = 4;
                break;
              } // case 32
              case 40: {
                testOneof_ = input.readSInt64();
                testOneofCase_ = 5;
                break;
              } // case 40
              case 49: {
                testOneof_ = input.readSFixed64();
                testOneofCase_ = 6;
                break;
              } // case 49
              case 56: {
                testOneof_ = input.readUInt32();
                testOneofCase_ = 7;
                break;
              } // case 56
              case 69: {
                testOneof_ = input.readFixed32();
                testOneofCase_ = 8;
                break;
              } // case 69
              case 72: {
                testOneof_ = input.readUInt64();
                testOneofCase_ = 9;
                break;
              } // case 72
              case 81: {
                testOneof_ = input.readFixed64();
                testOneofCase_ = 10;
                break;
              } // case 81
              case 93: {
                testOneof_ = input.readFloat();
                testOneofCase_ = 11;
                break;
              } // case 93
              case 97: {
                testOneof_ = input.readDouble();
                testOneofCase_ = 12;
                break;
              } // case 97
              case 104: {
                testOneof_ = input.readBool();
                testOneofCase_ = 13;
                break;
              } // case 104
              case 112: {
                int rawValue = input.readEnum();
                foo.TestFull.TestEnumSmall value =
                    foo.TestFull.TestEnumSmall.forNumber(rawValue);
                if (value == null) {
                  mergeUnknownVarintField(14, rawValue);
                } else {
                  testOneofCase_ = 14;
                  testOneof_ = rawValue;
                }
                break;
              } // case 112
              case 120: {
                int rawValue = input.readEnum();
                foo.TestFull.TestEnum value =
                    foo.TestFull.TestEnum.forNumber(rawValue);
                if (value == null) {
                  mergeUnknownVarintField(15, rawValue);
                } else {
                  testOneofCase_ = 15;
                  testOneof_ = rawValue;
                }
                break;
              } // case 120
              case 130: {
                com.google.protobuf.ByteString bs = input.readBytes();
                testOneofCase_ = 16;
                testOneof_ = bs;
                break;
              } // case 130
              case 138: {
                testOneof_ = input.readBytes();
                testOneofCase_ = 17;
                break;
              } // case 138
              case 146: {
                input.readMessage(
                    getTestMessageFieldBuilder().getBuilder(),
                    extensionRegistry);
                testOneofCase_ = 18;
                break;
              } // case 146
              case 152: {
                optInt_ = input.readInt32();
                bitField0_ |= 0x00040000;
                break;
              } // case 152
              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 testOneofCase_ = 0;
      private java.lang.Object testOneof_;
      public TestOneofCase
          getTestOneofCase() {
        return TestOneofCase.forNumber(
            testOneofCase_);
      }

      public Builder clearTestOneof() {
        testOneofCase_ = 0;
        testOneof_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      /**
       * <code>int32 test_int32 = 1;</code>
       * @return Whether the testInt32 field is set.
       */
      public boolean hasTestInt32() {
        return testOneofCase_ == 1;
      }
      /**
       * <code>int32 test_int32 = 1;</code>
       * @return The testInt32.
       */
      public int getTestInt32() {
        if (testOneofCase_ == 1) {
          return (java.lang.Integer) testOneof_;
        }
        return 0;
      }
      /**
       * <code>int32 test_int32 = 1;</code>
       * @param value The testInt32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestInt32(int value) {

        testOneofCase_ = 1;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 test_int32 = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestInt32() {
        if (testOneofCase_ == 1) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>sint32 test_sint32 = 2;</code>
       * @return Whether the testSint32 field is set.
       */
      public boolean hasTestSint32() {
        return testOneofCase_ == 2;
      }
      /**
       * <code>sint32 test_sint32 = 2;</code>
       * @return The testSint32.
       */
      public int getTestSint32() {
        if (testOneofCase_ == 2) {
          return (java.lang.Integer) testOneof_;
        }
        return 0;
      }
      /**
       * <code>sint32 test_sint32 = 2;</code>
       * @param value The testSint32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSint32(int value) {

        testOneofCase_ = 2;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>sint32 test_sint32 = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSint32() {
        if (testOneofCase_ == 2) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>sfixed32 test_sfixed32 = 3;</code>
       * @return Whether the testSfixed32 field is set.
       */
      public boolean hasTestSfixed32() {
        return testOneofCase_ == 3;
      }
      /**
       * <code>sfixed32 test_sfixed32 = 3;</code>
       * @return The testSfixed32.
       */
      public int getTestSfixed32() {
        if (testOneofCase_ == 3) {
          return (java.lang.Integer) testOneof_;
        }
        return 0;
      }
      /**
       * <code>sfixed32 test_sfixed32 = 3;</code>
       * @param value The testSfixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSfixed32(int value) {

        testOneofCase_ = 3;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>sfixed32 test_sfixed32 = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSfixed32() {
        if (testOneofCase_ == 3) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>int64 test_int64 = 4;</code>
       * @return Whether the testInt64 field is set.
       */
      public boolean hasTestInt64() {
        return testOneofCase_ == 4;
      }
      /**
       * <code>int64 test_int64 = 4;</code>
       * @return The testInt64.
       */
      public long getTestInt64() {
        if (testOneofCase_ == 4) {
          return (java.lang.Long) testOneof_;
        }
        return 0L;
      }
      /**
       * <code>int64 test_int64 = 4;</code>
       * @param value The testInt64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestInt64(long value) {

        testOneofCase_ = 4;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 test_int64 = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestInt64() {
        if (testOneofCase_ == 4) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>sint64 test_sint64 = 5;</code>
       * @return Whether the testSint64 field is set.
       */
      public boolean hasTestSint64() {
        return testOneofCase_ == 5;
      }
      /**
       * <code>sint64 test_sint64 = 5;</code>
       * @return The testSint64.
       */
      public long getTestSint64() {
        if (testOneofCase_ == 5) {
          return (java.lang.Long) testOneof_;
        }
        return 0L;
      }
      /**
       * <code>sint64 test_sint64 = 5;</code>
       * @param value The testSint64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSint64(long value) {

        testOneofCase_ = 5;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>sint64 test_sint64 = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSint64() {
        if (testOneofCase_ == 5) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>sfixed64 test_sfixed64 = 6;</code>
       * @return Whether the testSfixed64 field is set.
       */
      public boolean hasTestSfixed64() {
        return testOneofCase_ == 6;
      }
      /**
       * <code>sfixed64 test_sfixed64 = 6;</code>
       * @return The testSfixed64.
       */
      public long getTestSfixed64() {
        if (testOneofCase_ == 6) {
          return (java.lang.Long) testOneof_;
        }
        return 0L;
      }
      /**
       * <code>sfixed64 test_sfixed64 = 6;</code>
       * @param value The testSfixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestSfixed64(long value) {

        testOneofCase_ = 6;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>sfixed64 test_sfixed64 = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSfixed64() {
        if (testOneofCase_ == 6) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>uint32 test_uint32 = 7;</code>
       * @return Whether the testUint32 field is set.
       */
      public boolean hasTestUint32() {
        return testOneofCase_ == 7;
      }
      /**
       * <code>uint32 test_uint32 = 7;</code>
       * @return The testUint32.
       */
      public int getTestUint32() {
        if (testOneofCase_ == 7) {
          return (java.lang.Integer) testOneof_;
        }
        return 0;
      }
      /**
       * <code>uint32 test_uint32 = 7;</code>
       * @param value The testUint32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestUint32(int value) {

        testOneofCase_ = 7;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 test_uint32 = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestUint32() {
        if (testOneofCase_ == 7) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>fixed32 test_fixed32 = 8;</code>
       * @return Whether the testFixed32 field is set.
       */
      public boolean hasTestFixed32() {
        return testOneofCase_ == 8;
      }
      /**
       * <code>fixed32 test_fixed32 = 8;</code>
       * @return The testFixed32.
       */
      public int getTestFixed32() {
        if (testOneofCase_ == 8) {
          return (java.lang.Integer) testOneof_;
        }
        return 0;
      }
      /**
       * <code>fixed32 test_fixed32 = 8;</code>
       * @param value The testFixed32 to set.
       * @return This builder for chaining.
       */
      public Builder setTestFixed32(int value) {

        testOneofCase_ = 8;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>fixed32 test_fixed32 = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestFixed32() {
        if (testOneofCase_ == 8) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>uint64 test_uint64 = 9;</code>
       * @return Whether the testUint64 field is set.
       */
      public boolean hasTestUint64() {
        return testOneofCase_ == 9;
      }
      /**
       * <code>uint64 test_uint64 = 9;</code>
       * @return The testUint64.
       */
      public long getTestUint64() {
        if (testOneofCase_ == 9) {
          return (java.lang.Long) testOneof_;
        }
        return 0L;
      }
      /**
       * <code>uint64 test_uint64 = 9;</code>
       * @param value The testUint64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestUint64(long value) {

        testOneofCase_ = 9;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 test_uint64 = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestUint64() {
        if (testOneofCase_ == 9) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>fixed64 test_fixed64 = 10;</code>
       * @return Whether the testFixed64 field is set.
       */
      public boolean hasTestFixed64() {
        return testOneofCase_ == 10;
      }
      /**
       * <code>fixed64 test_fixed64 = 10;</code>
       * @return The testFixed64.
       */
      public long getTestFixed64() {
        if (testOneofCase_ == 10) {
          return (java.lang.Long) testOneof_;
        }
        return 0L;
      }
      /**
       * <code>fixed64 test_fixed64 = 10;</code>
       * @param value The testFixed64 to set.
       * @return This builder for chaining.
       */
      public Builder setTestFixed64(long value) {

        testOneofCase_ = 10;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>fixed64 test_fixed64 = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestFixed64() {
        if (testOneofCase_ == 10) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>float test_float = 11;</code>
       * @return Whether the testFloat field is set.
       */
      public boolean hasTestFloat() {
        return testOneofCase_ == 11;
      }
      /**
       * <code>float test_float = 11;</code>
       * @return The testFloat.
       */
      public float getTestFloat() {
        if (testOneofCase_ == 11) {
          return (java.lang.Float) testOneof_;
        }
        return 0F;
      }
      /**
       * <code>float test_float = 11;</code>
       * @param value The testFloat to set.
       * @return This builder for chaining.
       */
      public Builder setTestFloat(float value) {

        testOneofCase_ = 11;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float test_float = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestFloat() {
        if (testOneofCase_ == 11) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>double test_double = 12;</code>
       * @return Whether the testDouble field is set.
       */
      public boolean hasTestDouble() {
        return testOneofCase_ == 12;
      }
      /**
       * <code>double test_double = 12;</code>
       * @return The testDouble.
       */
      public double getTestDouble() {
        if (testOneofCase_ == 12) {
          return (java.lang.Double) testOneof_;
        }
        return 0D;
      }
      /**
       * <code>double test_double = 12;</code>
       * @param value The testDouble to set.
       * @return This builder for chaining.
       */
      public Builder setTestDouble(double value) {

        testOneofCase_ = 12;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>double test_double = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestDouble() {
        if (testOneofCase_ == 12) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>bool test_boolean = 13;</code>
       * @return Whether the testBoolean field is set.
       */
      public boolean hasTestBoolean() {
        return testOneofCase_ == 13;
      }
      /**
       * <code>bool test_boolean = 13;</code>
       * @return The testBoolean.
       */
      public boolean getTestBoolean() {
        if (testOneofCase_ == 13) {
          return (java.lang.Boolean) testOneof_;
        }
        return false;
      }
      /**
       * <code>bool test_boolean = 13;</code>
       * @param value The testBoolean to set.
       * @return This builder for chaining.
       */
      public Builder setTestBoolean(boolean value) {

        testOneofCase_ = 13;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool test_boolean = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestBoolean() {
        if (testOneofCase_ == 13) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>.foo.TestEnumSmall test_enum_small = 14;</code>
       * @return Whether the testEnumSmall field is set.
       */
      @java.lang.Override
      public boolean hasTestEnumSmall() {
        return testOneofCase_ == 14;
      }
      /**
       * <code>.foo.TestEnumSmall test_enum_small = 14;</code>
       * @return The testEnumSmall.
       */
      @java.lang.Override
      public foo.TestFull.TestEnumSmall getTestEnumSmall() {
        if (testOneofCase_ == 14) {
          foo.TestFull.TestEnumSmall result = foo.TestFull.TestEnumSmall.forNumber(
              (java.lang.Integer) testOneof_);
          return result == null ? foo.TestFull.TestEnumSmall.NEG_VALUE : result;
        }
        return foo.TestFull.TestEnumSmall.NEG_VALUE;
      }
      /**
       * <code>.foo.TestEnumSmall test_enum_small = 14;</code>
       * @param value The testEnumSmall to set.
       * @return This builder for chaining.
       */
      public Builder setTestEnumSmall(foo.TestFull.TestEnumSmall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        testOneofCase_ = 14;
        testOneof_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.foo.TestEnumSmall test_enum_small = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestEnumSmall() {
        if (testOneofCase_ == 14) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>.foo.TestEnum test_enum = 15;</code>
       * @return Whether the testEnum field is set.
       */
      @java.lang.Override
      public boolean hasTestEnum() {
        return testOneofCase_ == 15;
      }
      /**
       * <code>.foo.TestEnum test_enum = 15;</code>
       * @return The testEnum.
       */
      @java.lang.Override
      public foo.TestFull.TestEnum getTestEnum() {
        if (testOneofCase_ == 15) {
          foo.TestFull.TestEnum result = foo.TestFull.TestEnum.forNumber(
              (java.lang.Integer) testOneof_);
          return result == null ? foo.TestFull.TestEnum.VALUENEG123456 : result;
        }
        return foo.TestFull.TestEnum.VALUENEG123456;
      }
      /**
       * <code>.foo.TestEnum test_enum = 15;</code>
       * @param value The testEnum to set.
       * @return This builder for chaining.
       */
      public Builder setTestEnum(foo.TestFull.TestEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        testOneofCase_ = 15;
        testOneof_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.foo.TestEnum test_enum = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestEnum() {
        if (testOneofCase_ == 15) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>string test_string = 16;</code>
       * @return Whether the testString field is set.
       */
      @java.lang.Override
      public boolean hasTestString() {
        return testOneofCase_ == 16;
      }
      /**
       * <code>string test_string = 16;</code>
       * @return The testString.
       */
      @java.lang.Override
      public java.lang.String getTestString() {
        java.lang.Object ref = "";
        if (testOneofCase_ == 16) {
          ref = testOneof_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (testOneofCase_ == 16) {
            if (bs.isValidUtf8()) {
              testOneof_ = s;
            }
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string test_string = 16;</code>
       * @return The bytes for testString.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getTestStringBytes() {
        java.lang.Object ref = "";
        if (testOneofCase_ == 16) {
          ref = testOneof_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (testOneofCase_ == 16) {
            testOneof_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string test_string = 16;</code>
       * @param value The testString to set.
       * @return This builder for chaining.
       */
      public Builder setTestString(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        testOneofCase_ = 16;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string test_string = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestString() {
        if (testOneofCase_ == 16) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <code>string test_string = 16;</code>
       * @param value The bytes for testString to set.
       * @return This builder for chaining.
       */
      public Builder setTestStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        testOneofCase_ = 16;
        testOneof_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>bytes test_bytes = 17;</code>
       * @return Whether the testBytes field is set.
       */
      public boolean hasTestBytes() {
        return testOneofCase_ == 17;
      }
      /**
       * <code>bytes test_bytes = 17;</code>
       * @return The testBytes.
       */
      public com.google.protobuf.ByteString getTestBytes() {
        if (testOneofCase_ == 17) {
          return (com.google.protobuf.ByteString) testOneof_;
        }
        return com.google.protobuf.ByteString.EMPTY;
      }
      /**
       * <code>bytes test_bytes = 17;</code>
       * @param value The testBytes to set.
       * @return This builder for chaining.
       */
      public Builder setTestBytes(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        testOneofCase_ = 17;
        testOneof_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes test_bytes = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestBytes() {
        if (testOneofCase_ == 17) {
          testOneofCase_ = 0;
          testOneof_ = null;
          onChanged();
        }
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder> testMessageBuilder_;
      /**
       * <code>.foo.SubMess test_message = 18;</code>
       * @return Whether the testMessage field is set.
       */
      @java.lang.Override
      public boolean hasTestMessage() {
        return testOneofCase_ == 18;
      }
      /**
       * <code>.foo.SubMess test_message = 18;</code>
       * @return The testMessage.
       */
      @java.lang.Override
      public foo.TestFull.SubMess getTestMessage() {
        if (testMessageBuilder_ == null) {
          if (testOneofCase_ == 18) {
            return (foo.TestFull.SubMess) testOneof_;
          }
          return foo.TestFull.SubMess.getDefaultInstance();
        } else {
          if (testOneofCase_ == 18) {
            return testMessageBuilder_.getMessage();
          }
          return foo.TestFull.SubMess.getDefaultInstance();
        }
      }
      /**
       * <code>.foo.SubMess test_message = 18;</code>
       */
      public Builder setTestMessage(foo.TestFull.SubMess value) {
        if (testMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          testOneof_ = value;
          onChanged();
        } else {
          testMessageBuilder_.setMessage(value);
        }
        testOneofCase_ = 18;
        return this;
      }
      /**
       * <code>.foo.SubMess test_message = 18;</code>
       */
      public Builder setTestMessage(
          foo.TestFull.SubMess.Builder builderForValue) {
        if (testMessageBuilder_ == null) {
          testOneof_ = builderForValue.build();
          onChanged();
        } else {
          testMessageBuilder_.setMessage(builderForValue.build());
        }
        testOneofCase_ = 18;
        return this;
      }
      /**
       * <code>.foo.SubMess test_message = 18;</code>
       */
      public Builder mergeTestMessage(foo.TestFull.SubMess value) {
        if (testMessageBuilder_ == null) {
          if (testOneofCase_ == 18 &&
              testOneof_ != foo.TestFull.SubMess.getDefaultInstance()) {
            testOneof_ = foo.TestFull.SubMess.newBuilder((foo.TestFull.SubMess) testOneof_)
                .mergeFrom(value).buildPartial();
          } else {
            testOneof_ = value;
          }
          onChanged();
        } else {
          if (testOneofCase_ == 18) {
            testMessageBuilder_.mergeFrom(value);
          } else {
            testMessageBuilder_.setMessage(value);
          }
        }
        testOneofCase_ = 18;
        return this;
      }
      /**
       * <code>.foo.SubMess test_message = 18;</code>
       */
      public Builder clearTestMessage() {
        if (testMessageBuilder_ == null) {
          if (testOneofCase_ == 18) {
            testOneofCase_ = 0;
            testOneof_ = null;
            onChanged();
          }
        } else {
          if (testOneofCase_ == 18) {
            testOneofCase_ = 0;
            testOneof_ = null;
          }
          testMessageBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.foo.SubMess test_message = 18;</code>
       */
      public foo.TestFull.SubMess.Builder getTestMessageBuilder() {
        return getTestMessageFieldBuilder().getBuilder();
      }
      /**
       * <code>.foo.SubMess test_message = 18;</code>
       */
      @java.lang.Override
      public foo.TestFull.SubMessOrBuilder getTestMessageOrBuilder() {
        if ((testOneofCase_ == 18) && (testMessageBuilder_ != null)) {
          return testMessageBuilder_.getMessageOrBuilder();
        } else {
          if (testOneofCase_ == 18) {
            return (foo.TestFull.SubMess) testOneof_;
          }
          return foo.TestFull.SubMess.getDefaultInstance();
        }
      }
      /**
       * <code>.foo.SubMess test_message = 18;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder> 
          getTestMessageFieldBuilder() {
        if (testMessageBuilder_ == null) {
          if (!(testOneofCase_ == 18)) {
            testOneof_ = foo.TestFull.SubMess.getDefaultInstance();
          }
          testMessageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder>(
                  (foo.TestFull.SubMess) testOneof_,
                  getParentForChildren(),
                  isClean());
          testOneof_ = null;
        }
        testOneofCase_ = 18;
        onChanged();
        return testMessageBuilder_;
      }

      private int optInt_ ;
      /**
       * <code>optional int32 opt_int = 19;</code>
       * @return Whether the optInt field is set.
       */
      @java.lang.Override
      public boolean hasOptInt() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * <code>optional int32 opt_int = 19;</code>
       * @return The optInt.
       */
      @java.lang.Override
      public int getOptInt() {
        return optInt_;
      }
      /**
       * <code>optional int32 opt_int = 19;</code>
       * @param value The optInt to set.
       * @return This builder for chaining.
       */
      public Builder setOptInt(int value) {

        optInt_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 opt_int = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptInt() {
        bitField0_ = (bitField0_ & ~0x00040000);
        optInt_ = 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:foo.TestMessOneof)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessOneof)
    private static final foo.TestFull.TestMessOneof DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessOneof();
    }

    public static foo.TestFull.TestMessOneof getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessOneof getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredInt32OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredInt32)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required int32 test = 42;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required int32 test = 42;</code>
     * @return The test.
     */
    int getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredInt32}
   */
  public static final class TestMessRequiredInt32 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredInt32)
      TestMessRequiredInt32OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredInt32.newBuilder() to construct.
    private TestMessRequiredInt32(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredInt32() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredInt32_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredInt32_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredInt32.class, foo.TestFull.TestMessRequiredInt32.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 42;
    private int test_ = 0;
    /**
     * <code>required int32 test = 42;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required int32 test = 42;</code>
     * @return The test.
     */
    @java.lang.Override
    public int getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(42, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(42, test_);
      }
      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 foo.TestFull.TestMessRequiredInt32)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredInt32 other = (foo.TestFull.TestMessRequiredInt32) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (getTest()
            != other.getTest()) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + getTest();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredInt32_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredInt32.class, foo.TestFull.TestMessRequiredInt32.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredInt32.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredInt32_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredInt32 getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredInt32.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredInt32 build() {
        foo.TestFull.TestMessRequiredInt32 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredInt32 buildPartial() {
        foo.TestFull.TestMessRequiredInt32 result = new foo.TestFull.TestMessRequiredInt32(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredInt32 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredInt32) {
          return mergeFrom((foo.TestFull.TestMessRequiredInt32)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredInt32 other) {
        if (other == foo.TestFull.TestMessRequiredInt32.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 336: {
                test_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 336
              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 test_ ;
      /**
       * <code>required int32 test = 42;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required int32 test = 42;</code>
       * @return The test.
       */
      @java.lang.Override
      public int getTest() {
        return test_;
      }
      /**
       * <code>required int32 test = 42;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(int value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 test = 42;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = 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:foo.TestMessRequiredInt32)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredInt32)
    private static final foo.TestFull.TestMessRequiredInt32 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredInt32();
    }

    public static foo.TestFull.TestMessRequiredInt32 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredInt32 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredSInt32OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredSInt32)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required sint32 test = 43;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required sint32 test = 43;</code>
     * @return The test.
     */
    int getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredSInt32}
   */
  public static final class TestMessRequiredSInt32 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredSInt32)
      TestMessRequiredSInt32OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredSInt32.newBuilder() to construct.
    private TestMessRequiredSInt32(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredSInt32() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredSInt32_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredSInt32_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredSInt32.class, foo.TestFull.TestMessRequiredSInt32.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 43;
    private int test_ = 0;
    /**
     * <code>required sint32 test = 43;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required sint32 test = 43;</code>
     * @return The test.
     */
    @java.lang.Override
    public int getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeSInt32(43, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt32Size(43, test_);
      }
      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 foo.TestFull.TestMessRequiredSInt32)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredSInt32 other = (foo.TestFull.TestMessRequiredSInt32) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (getTest()
            != other.getTest()) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + getTest();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredSInt32_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredSInt32.class, foo.TestFull.TestMessRequiredSInt32.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredSInt32.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredSInt32_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredSInt32 getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredSInt32.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredSInt32 build() {
        foo.TestFull.TestMessRequiredSInt32 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredSInt32 buildPartial() {
        foo.TestFull.TestMessRequiredSInt32 result = new foo.TestFull.TestMessRequiredSInt32(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredSInt32 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredSInt32) {
          return mergeFrom((foo.TestFull.TestMessRequiredSInt32)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredSInt32 other) {
        if (other == foo.TestFull.TestMessRequiredSInt32.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 344: {
                test_ = input.readSInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 344
              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 test_ ;
      /**
       * <code>required sint32 test = 43;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required sint32 test = 43;</code>
       * @return The test.
       */
      @java.lang.Override
      public int getTest() {
        return test_;
      }
      /**
       * <code>required sint32 test = 43;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(int value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required sint32 test = 43;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = 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:foo.TestMessRequiredSInt32)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredSInt32)
    private static final foo.TestFull.TestMessRequiredSInt32 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredSInt32();
    }

    public static foo.TestFull.TestMessRequiredSInt32 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredSInt32 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredSFixed32OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredSFixed32)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required sfixed32 test = 100;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required sfixed32 test = 100;</code>
     * @return The test.
     */
    int getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredSFixed32}
   */
  public static final class TestMessRequiredSFixed32 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredSFixed32)
      TestMessRequiredSFixed32OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredSFixed32.newBuilder() to construct.
    private TestMessRequiredSFixed32(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredSFixed32() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredSFixed32_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredSFixed32_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredSFixed32.class, foo.TestFull.TestMessRequiredSFixed32.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 100;
    private int test_ = 0;
    /**
     * <code>required sfixed32 test = 100;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required sfixed32 test = 100;</code>
     * @return The test.
     */
    @java.lang.Override
    public int getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeSFixed32(100, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSFixed32Size(100, test_);
      }
      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 foo.TestFull.TestMessRequiredSFixed32)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredSFixed32 other = (foo.TestFull.TestMessRequiredSFixed32) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (getTest()
            != other.getTest()) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + getTest();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredSFixed32_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredSFixed32.class, foo.TestFull.TestMessRequiredSFixed32.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredSFixed32.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredSFixed32_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredSFixed32 getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredSFixed32.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredSFixed32 build() {
        foo.TestFull.TestMessRequiredSFixed32 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredSFixed32 buildPartial() {
        foo.TestFull.TestMessRequiredSFixed32 result = new foo.TestFull.TestMessRequiredSFixed32(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredSFixed32 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredSFixed32) {
          return mergeFrom((foo.TestFull.TestMessRequiredSFixed32)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredSFixed32 other) {
        if (other == foo.TestFull.TestMessRequiredSFixed32.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 805: {
                test_ = input.readSFixed32();
                bitField0_ |= 0x00000001;
                break;
              } // case 805
              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 test_ ;
      /**
       * <code>required sfixed32 test = 100;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required sfixed32 test = 100;</code>
       * @return The test.
       */
      @java.lang.Override
      public int getTest() {
        return test_;
      }
      /**
       * <code>required sfixed32 test = 100;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(int value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required sfixed32 test = 100;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = 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:foo.TestMessRequiredSFixed32)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredSFixed32)
    private static final foo.TestFull.TestMessRequiredSFixed32 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredSFixed32();
    }

    public static foo.TestFull.TestMessRequiredSFixed32 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredSFixed32 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredInt64OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredInt64)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required int64 test = 1;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required int64 test = 1;</code>
     * @return The test.
     */
    long getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredInt64}
   */
  public static final class TestMessRequiredInt64 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredInt64)
      TestMessRequiredInt64OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredInt64.newBuilder() to construct.
    private TestMessRequiredInt64(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredInt64() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredInt64_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredInt64_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredInt64.class, foo.TestFull.TestMessRequiredInt64.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 1;
    private long test_ = 0L;
    /**
     * <code>required int64 test = 1;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required int64 test = 1;</code>
     * @return The test.
     */
    @java.lang.Override
    public long getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt64(1, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, test_);
      }
      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 foo.TestFull.TestMessRequiredInt64)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredInt64 other = (foo.TestFull.TestMessRequiredInt64) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (getTest()
            != other.getTest()) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTest());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredInt64_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredInt64.class, foo.TestFull.TestMessRequiredInt64.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredInt64.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredInt64_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredInt64 getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredInt64.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredInt64 build() {
        foo.TestFull.TestMessRequiredInt64 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredInt64 buildPartial() {
        foo.TestFull.TestMessRequiredInt64 result = new foo.TestFull.TestMessRequiredInt64(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredInt64 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredInt64) {
          return mergeFrom((foo.TestFull.TestMessRequiredInt64)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredInt64 other) {
        if (other == foo.TestFull.TestMessRequiredInt64.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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: {
                test_ = input.readInt64();
                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 long test_ ;
      /**
       * <code>required int64 test = 1;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required int64 test = 1;</code>
       * @return The test.
       */
      @java.lang.Override
      public long getTest() {
        return test_;
      }
      /**
       * <code>required int64 test = 1;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(long value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 test = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = 0L;
        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:foo.TestMessRequiredInt64)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredInt64)
    private static final foo.TestFull.TestMessRequiredInt64 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredInt64();
    }

    public static foo.TestFull.TestMessRequiredInt64 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredInt64 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredSInt64OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredSInt64)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required sint64 test = 11;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required sint64 test = 11;</code>
     * @return The test.
     */
    long getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredSInt64}
   */
  public static final class TestMessRequiredSInt64 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredSInt64)
      TestMessRequiredSInt64OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredSInt64.newBuilder() to construct.
    private TestMessRequiredSInt64(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredSInt64() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredSInt64_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredSInt64_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredSInt64.class, foo.TestFull.TestMessRequiredSInt64.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 11;
    private long test_ = 0L;
    /**
     * <code>required sint64 test = 11;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required sint64 test = 11;</code>
     * @return The test.
     */
    @java.lang.Override
    public long getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeSInt64(11, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt64Size(11, test_);
      }
      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 foo.TestFull.TestMessRequiredSInt64)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredSInt64 other = (foo.TestFull.TestMessRequiredSInt64) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (getTest()
            != other.getTest()) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTest());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredSInt64_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredSInt64.class, foo.TestFull.TestMessRequiredSInt64.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredSInt64.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredSInt64_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredSInt64 getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredSInt64.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredSInt64 build() {
        foo.TestFull.TestMessRequiredSInt64 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredSInt64 buildPartial() {
        foo.TestFull.TestMessRequiredSInt64 result = new foo.TestFull.TestMessRequiredSInt64(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredSInt64 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredSInt64) {
          return mergeFrom((foo.TestFull.TestMessRequiredSInt64)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredSInt64 other) {
        if (other == foo.TestFull.TestMessRequiredSInt64.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 88: {
                test_ = input.readSInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 88
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long test_ ;
      /**
       * <code>required sint64 test = 11;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required sint64 test = 11;</code>
       * @return The test.
       */
      @java.lang.Override
      public long getTest() {
        return test_;
      }
      /**
       * <code>required sint64 test = 11;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(long value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required sint64 test = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = 0L;
        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:foo.TestMessRequiredSInt64)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredSInt64)
    private static final foo.TestFull.TestMessRequiredSInt64 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredSInt64();
    }

    public static foo.TestFull.TestMessRequiredSInt64 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredSInt64 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredSFixed64OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredSFixed64)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required sfixed64 test = 12;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required sfixed64 test = 12;</code>
     * @return The test.
     */
    long getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredSFixed64}
   */
  public static final class TestMessRequiredSFixed64 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredSFixed64)
      TestMessRequiredSFixed64OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredSFixed64.newBuilder() to construct.
    private TestMessRequiredSFixed64(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredSFixed64() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredSFixed64_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredSFixed64_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredSFixed64.class, foo.TestFull.TestMessRequiredSFixed64.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 12;
    private long test_ = 0L;
    /**
     * <code>required sfixed64 test = 12;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required sfixed64 test = 12;</code>
     * @return The test.
     */
    @java.lang.Override
    public long getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeSFixed64(12, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSFixed64Size(12, test_);
      }
      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 foo.TestFull.TestMessRequiredSFixed64)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredSFixed64 other = (foo.TestFull.TestMessRequiredSFixed64) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (getTest()
            != other.getTest()) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTest());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredSFixed64_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredSFixed64.class, foo.TestFull.TestMessRequiredSFixed64.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredSFixed64.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredSFixed64_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredSFixed64 getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredSFixed64.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredSFixed64 build() {
        foo.TestFull.TestMessRequiredSFixed64 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredSFixed64 buildPartial() {
        foo.TestFull.TestMessRequiredSFixed64 result = new foo.TestFull.TestMessRequiredSFixed64(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredSFixed64 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredSFixed64) {
          return mergeFrom((foo.TestFull.TestMessRequiredSFixed64)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredSFixed64 other) {
        if (other == foo.TestFull.TestMessRequiredSFixed64.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 97: {
                test_ = input.readSFixed64();
                bitField0_ |= 0x00000001;
                break;
              } // case 97
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long test_ ;
      /**
       * <code>required sfixed64 test = 12;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required sfixed64 test = 12;</code>
       * @return The test.
       */
      @java.lang.Override
      public long getTest() {
        return test_;
      }
      /**
       * <code>required sfixed64 test = 12;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(long value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required sfixed64 test = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = 0L;
        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:foo.TestMessRequiredSFixed64)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredSFixed64)
    private static final foo.TestFull.TestMessRequiredSFixed64 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredSFixed64();
    }

    public static foo.TestFull.TestMessRequiredSFixed64 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredSFixed64 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredUInt32OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredUInt32)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required uint32 test = 1;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required uint32 test = 1;</code>
     * @return The test.
     */
    int getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredUInt32}
   */
  public static final class TestMessRequiredUInt32 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredUInt32)
      TestMessRequiredUInt32OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredUInt32.newBuilder() to construct.
    private TestMessRequiredUInt32(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredUInt32() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredUInt32_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredUInt32_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredUInt32.class, foo.TestFull.TestMessRequiredUInt32.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 1;
    private int test_ = 0;
    /**
     * <code>required uint32 test = 1;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required uint32 test = 1;</code>
     * @return The test.
     */
    @java.lang.Override
    public int getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(1, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, test_);
      }
      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 foo.TestFull.TestMessRequiredUInt32)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredUInt32 other = (foo.TestFull.TestMessRequiredUInt32) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (getTest()
            != other.getTest()) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + getTest();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredUInt32_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredUInt32.class, foo.TestFull.TestMessRequiredUInt32.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredUInt32.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredUInt32_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredUInt32 getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredUInt32.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredUInt32 build() {
        foo.TestFull.TestMessRequiredUInt32 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredUInt32 buildPartial() {
        foo.TestFull.TestMessRequiredUInt32 result = new foo.TestFull.TestMessRequiredUInt32(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredUInt32 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredUInt32) {
          return mergeFrom((foo.TestFull.TestMessRequiredUInt32)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredUInt32 other) {
        if (other == foo.TestFull.TestMessRequiredUInt32.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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: {
                test_ = input.readUInt32();
                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 test_ ;
      /**
       * <code>required uint32 test = 1;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required uint32 test = 1;</code>
       * @return The test.
       */
      @java.lang.Override
      public int getTest() {
        return test_;
      }
      /**
       * <code>required uint32 test = 1;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(int value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 test = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = 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:foo.TestMessRequiredUInt32)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredUInt32)
    private static final foo.TestFull.TestMessRequiredUInt32 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredUInt32();
    }

    public static foo.TestFull.TestMessRequiredUInt32 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredUInt32 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredFixed32OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredFixed32)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required fixed32 test = 1;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required fixed32 test = 1;</code>
     * @return The test.
     */
    int getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredFixed32}
   */
  public static final class TestMessRequiredFixed32 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredFixed32)
      TestMessRequiredFixed32OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredFixed32.newBuilder() to construct.
    private TestMessRequiredFixed32(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredFixed32() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredFixed32_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredFixed32_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredFixed32.class, foo.TestFull.TestMessRequiredFixed32.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 1;
    private int test_ = 0;
    /**
     * <code>required fixed32 test = 1;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required fixed32 test = 1;</code>
     * @return The test.
     */
    @java.lang.Override
    public int getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFixed32(1, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(1, test_);
      }
      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 foo.TestFull.TestMessRequiredFixed32)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredFixed32 other = (foo.TestFull.TestMessRequiredFixed32) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (getTest()
            != other.getTest()) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + getTest();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredFixed32_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredFixed32.class, foo.TestFull.TestMessRequiredFixed32.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredFixed32.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredFixed32_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredFixed32 getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredFixed32.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredFixed32 build() {
        foo.TestFull.TestMessRequiredFixed32 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredFixed32 buildPartial() {
        foo.TestFull.TestMessRequiredFixed32 result = new foo.TestFull.TestMessRequiredFixed32(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredFixed32 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredFixed32) {
          return mergeFrom((foo.TestFull.TestMessRequiredFixed32)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredFixed32 other) {
        if (other == foo.TestFull.TestMessRequiredFixed32.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 13: {
                test_ = input.readFixed32();
                bitField0_ |= 0x00000001;
                break;
              } // case 13
              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 test_ ;
      /**
       * <code>required fixed32 test = 1;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required fixed32 test = 1;</code>
       * @return The test.
       */
      @java.lang.Override
      public int getTest() {
        return test_;
      }
      /**
       * <code>required fixed32 test = 1;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(int value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 test = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = 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:foo.TestMessRequiredFixed32)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredFixed32)
    private static final foo.TestFull.TestMessRequiredFixed32 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredFixed32();
    }

    public static foo.TestFull.TestMessRequiredFixed32 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredFixed32 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredUInt64OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredUInt64)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required uint64 test = 1;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required uint64 test = 1;</code>
     * @return The test.
     */
    long getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredUInt64}
   */
  public static final class TestMessRequiredUInt64 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredUInt64)
      TestMessRequiredUInt64OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredUInt64.newBuilder() to construct.
    private TestMessRequiredUInt64(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredUInt64() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredUInt64_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredUInt64_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredUInt64.class, foo.TestFull.TestMessRequiredUInt64.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 1;
    private long test_ = 0L;
    /**
     * <code>required uint64 test = 1;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required uint64 test = 1;</code>
     * @return The test.
     */
    @java.lang.Override
    public long getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt64(1, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, test_);
      }
      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 foo.TestFull.TestMessRequiredUInt64)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredUInt64 other = (foo.TestFull.TestMessRequiredUInt64) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (getTest()
            != other.getTest()) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTest());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredUInt64_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredUInt64.class, foo.TestFull.TestMessRequiredUInt64.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredUInt64.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredUInt64_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredUInt64 getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredUInt64.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredUInt64 build() {
        foo.TestFull.TestMessRequiredUInt64 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredUInt64 buildPartial() {
        foo.TestFull.TestMessRequiredUInt64 result = new foo.TestFull.TestMessRequiredUInt64(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredUInt64 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredUInt64) {
          return mergeFrom((foo.TestFull.TestMessRequiredUInt64)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredUInt64 other) {
        if (other == foo.TestFull.TestMessRequiredUInt64.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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: {
                test_ = input.readUInt64();
                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 long test_ ;
      /**
       * <code>required uint64 test = 1;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required uint64 test = 1;</code>
       * @return The test.
       */
      @java.lang.Override
      public long getTest() {
        return test_;
      }
      /**
       * <code>required uint64 test = 1;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(long value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 test = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = 0L;
        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:foo.TestMessRequiredUInt64)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredUInt64)
    private static final foo.TestFull.TestMessRequiredUInt64 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredUInt64();
    }

    public static foo.TestFull.TestMessRequiredUInt64 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredUInt64 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredFixed64OrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredFixed64)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required fixed64 test = 1;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required fixed64 test = 1;</code>
     * @return The test.
     */
    long getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredFixed64}
   */
  public static final class TestMessRequiredFixed64 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredFixed64)
      TestMessRequiredFixed64OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredFixed64.newBuilder() to construct.
    private TestMessRequiredFixed64(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredFixed64() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredFixed64_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredFixed64_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredFixed64.class, foo.TestFull.TestMessRequiredFixed64.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 1;
    private long test_ = 0L;
    /**
     * <code>required fixed64 test = 1;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required fixed64 test = 1;</code>
     * @return The test.
     */
    @java.lang.Override
    public long getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFixed64(1, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed64Size(1, test_);
      }
      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 foo.TestFull.TestMessRequiredFixed64)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredFixed64 other = (foo.TestFull.TestMessRequiredFixed64) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (getTest()
            != other.getTest()) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTest());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredFixed64_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredFixed64.class, foo.TestFull.TestMessRequiredFixed64.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredFixed64.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredFixed64_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredFixed64 getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredFixed64.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredFixed64 build() {
        foo.TestFull.TestMessRequiredFixed64 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredFixed64 buildPartial() {
        foo.TestFull.TestMessRequiredFixed64 result = new foo.TestFull.TestMessRequiredFixed64(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredFixed64 result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredFixed64) {
          return mergeFrom((foo.TestFull.TestMessRequiredFixed64)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredFixed64 other) {
        if (other == foo.TestFull.TestMessRequiredFixed64.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 9: {
                test_ = input.readFixed64();
                bitField0_ |= 0x00000001;
                break;
              } // case 9
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long test_ ;
      /**
       * <code>required fixed64 test = 1;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required fixed64 test = 1;</code>
       * @return The test.
       */
      @java.lang.Override
      public long getTest() {
        return test_;
      }
      /**
       * <code>required fixed64 test = 1;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(long value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed64 test = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = 0L;
        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:foo.TestMessRequiredFixed64)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredFixed64)
    private static final foo.TestFull.TestMessRequiredFixed64 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredFixed64();
    }

    public static foo.TestFull.TestMessRequiredFixed64 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredFixed64 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredFloatOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredFloat)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required float test = 1;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required float test = 1;</code>
     * @return The test.
     */
    float getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredFloat}
   */
  public static final class TestMessRequiredFloat extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredFloat)
      TestMessRequiredFloatOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredFloat.newBuilder() to construct.
    private TestMessRequiredFloat(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredFloat() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredFloat_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredFloat_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredFloat.class, foo.TestFull.TestMessRequiredFloat.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 1;
    private float test_ = 0F;
    /**
     * <code>required float test = 1;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required float test = 1;</code>
     * @return The test.
     */
    @java.lang.Override
    public float getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFloat(1, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(1, test_);
      }
      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 foo.TestFull.TestMessRequiredFloat)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredFloat other = (foo.TestFull.TestMessRequiredFloat) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (java.lang.Float.floatToIntBits(getTest())
            != java.lang.Float.floatToIntBits(
                other.getTest())) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + java.lang.Float.floatToIntBits(
            getTest());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredFloat_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredFloat.class, foo.TestFull.TestMessRequiredFloat.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredFloat.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredFloat_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredFloat getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredFloat.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredFloat build() {
        foo.TestFull.TestMessRequiredFloat result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredFloat buildPartial() {
        foo.TestFull.TestMessRequiredFloat result = new foo.TestFull.TestMessRequiredFloat(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredFloat result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredFloat) {
          return mergeFrom((foo.TestFull.TestMessRequiredFloat)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredFloat other) {
        if (other == foo.TestFull.TestMessRequiredFloat.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 13: {
                test_ = input.readFloat();
                bitField0_ |= 0x00000001;
                break;
              } // case 13
              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 float test_ ;
      /**
       * <code>required float test = 1;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required float test = 1;</code>
       * @return The test.
       */
      @java.lang.Override
      public float getTest() {
        return test_;
      }
      /**
       * <code>required float test = 1;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(float value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required float test = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = 0F;
        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:foo.TestMessRequiredFloat)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredFloat)
    private static final foo.TestFull.TestMessRequiredFloat DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredFloat();
    }

    public static foo.TestFull.TestMessRequiredFloat getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredFloat getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredDoubleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredDouble)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required double test = 1;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required double test = 1;</code>
     * @return The test.
     */
    double getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredDouble}
   */
  public static final class TestMessRequiredDouble extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredDouble)
      TestMessRequiredDoubleOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredDouble.newBuilder() to construct.
    private TestMessRequiredDouble(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredDouble() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredDouble_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredDouble_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredDouble.class, foo.TestFull.TestMessRequiredDouble.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 1;
    private double test_ = 0D;
    /**
     * <code>required double test = 1;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required double test = 1;</code>
     * @return The test.
     */
    @java.lang.Override
    public double getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeDouble(1, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, test_);
      }
      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 foo.TestFull.TestMessRequiredDouble)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredDouble other = (foo.TestFull.TestMessRequiredDouble) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (java.lang.Double.doubleToLongBits(getTest())
            != java.lang.Double.doubleToLongBits(
                other.getTest())) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getTest()));
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredDouble_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredDouble.class, foo.TestFull.TestMessRequiredDouble.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredDouble.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredDouble_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredDouble getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredDouble.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredDouble build() {
        foo.TestFull.TestMessRequiredDouble result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredDouble buildPartial() {
        foo.TestFull.TestMessRequiredDouble result = new foo.TestFull.TestMessRequiredDouble(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredDouble result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredDouble) {
          return mergeFrom((foo.TestFull.TestMessRequiredDouble)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredDouble other) {
        if (other == foo.TestFull.TestMessRequiredDouble.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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 9: {
                test_ = input.readDouble();
                bitField0_ |= 0x00000001;
                break;
              } // case 9
              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 double test_ ;
      /**
       * <code>required double test = 1;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required double test = 1;</code>
       * @return The test.
       */
      @java.lang.Override
      public double getTest() {
        return test_;
      }
      /**
       * <code>required double test = 1;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(double value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required double test = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = 0D;
        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:foo.TestMessRequiredDouble)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredDouble)
    private static final foo.TestFull.TestMessRequiredDouble DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredDouble();
    }

    public static foo.TestFull.TestMessRequiredDouble getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredDouble getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredBoolOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredBool)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required bool test = 1;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required bool test = 1;</code>
     * @return The test.
     */
    boolean getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredBool}
   */
  public static final class TestMessRequiredBool extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredBool)
      TestMessRequiredBoolOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredBool.newBuilder() to construct.
    private TestMessRequiredBool(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredBool() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredBool_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredBool_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredBool.class, foo.TestFull.TestMessRequiredBool.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 1;
    private boolean test_ = false;
    /**
     * <code>required bool test = 1;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required bool test = 1;</code>
     * @return The test.
     */
    @java.lang.Override
    public boolean getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBool(1, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, test_);
      }
      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 foo.TestFull.TestMessRequiredBool)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredBool other = (foo.TestFull.TestMessRequiredBool) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (getTest()
            != other.getTest()) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getTest());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredBool_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredBool.class, foo.TestFull.TestMessRequiredBool.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredBool.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredBool_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredBool getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredBool.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredBool build() {
        foo.TestFull.TestMessRequiredBool result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredBool buildPartial() {
        foo.TestFull.TestMessRequiredBool result = new foo.TestFull.TestMessRequiredBool(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredBool result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredBool) {
          return mergeFrom((foo.TestFull.TestMessRequiredBool)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredBool other) {
        if (other == foo.TestFull.TestMessRequiredBool.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        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: {
                test_ = input.readBool();
                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 boolean test_ ;
      /**
       * <code>required bool test = 1;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required bool test = 1;</code>
       * @return The test.
       */
      @java.lang.Override
      public boolean getTest() {
        return test_;
      }
      /**
       * <code>required bool test = 1;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(boolean value) {

        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required bool test = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:foo.TestMessRequiredBool)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredBool)
    private static final foo.TestFull.TestMessRequiredBool DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredBool();
    }

    public static foo.TestFull.TestMessRequiredBool getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredBool getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredEnumOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredEnum)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .foo.TestEnum test = 1;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required .foo.TestEnum test = 1;</code>
     * @return The test.
     */
    foo.TestFull.TestEnum getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredEnum}
   */
  public static final class TestMessRequiredEnum extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredEnum)
      TestMessRequiredEnumOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredEnum.newBuilder() to construct.
    private TestMessRequiredEnum(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredEnum() {
      test_ = -123456;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredEnum_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredEnum_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredEnum.class, foo.TestFull.TestMessRequiredEnum.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 1;
    private int test_ = -123456;
    /**
     * <code>required .foo.TestEnum test = 1;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .foo.TestEnum test = 1;</code>
     * @return The test.
     */
    @java.lang.Override public foo.TestFull.TestEnum getTest() {
      foo.TestFull.TestEnum result = foo.TestFull.TestEnum.forNumber(test_);
      return result == null ? foo.TestFull.TestEnum.VALUENEG123456 : result;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeEnum(1, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, test_);
      }
      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 foo.TestFull.TestMessRequiredEnum)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredEnum other = (foo.TestFull.TestMessRequiredEnum) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (test_ != other.test_) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + test_;
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredEnum_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredEnum.class, foo.TestFull.TestMessRequiredEnum.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredEnum.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredEnum_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredEnum getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredEnum.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredEnum build() {
        foo.TestFull.TestMessRequiredEnum result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredEnum buildPartial() {
        foo.TestFull.TestMessRequiredEnum result = new foo.TestFull.TestMessRequiredEnum(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredEnum result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredEnum) {
          return mergeFrom((foo.TestFull.TestMessRequiredEnum)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredEnum other) {
        if (other == foo.TestFull.TestMessRequiredEnum.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                int tmpRaw = input.readEnum();
                foo.TestFull.TestEnum tmpValue =
                    foo.TestFull.TestEnum.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(1, tmpRaw);
                } else {
                  test_ = tmpRaw;
                  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 test_ = -123456;
      /**
       * <code>required .foo.TestEnum test = 1;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .foo.TestEnum test = 1;</code>
       * @return The test.
       */
      @java.lang.Override
      public foo.TestFull.TestEnum getTest() {
        foo.TestFull.TestEnum result = foo.TestFull.TestEnum.forNumber(test_);
        return result == null ? foo.TestFull.TestEnum.VALUENEG123456 : result;
      }
      /**
       * <code>required .foo.TestEnum test = 1;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(foo.TestFull.TestEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        test_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestEnum test = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = -123456;
        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:foo.TestMessRequiredEnum)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredEnum)
    private static final foo.TestFull.TestMessRequiredEnum DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredEnum();
    }

    public static foo.TestFull.TestMessRequiredEnum getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredEnum getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredEnumSmallOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredEnumSmall)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .foo.TestEnumSmall test = 1;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required .foo.TestEnumSmall test = 1;</code>
     * @return The test.
     */
    foo.TestFull.TestEnumSmall getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredEnumSmall}
   */
  public static final class TestMessRequiredEnumSmall extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredEnumSmall)
      TestMessRequiredEnumSmallOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredEnumSmall.newBuilder() to construct.
    private TestMessRequiredEnumSmall(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredEnumSmall() {
      test_ = -1;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredEnumSmall_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredEnumSmall_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredEnumSmall.class, foo.TestFull.TestMessRequiredEnumSmall.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 1;
    private int test_ = -1;
    /**
     * <code>required .foo.TestEnumSmall test = 1;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .foo.TestEnumSmall test = 1;</code>
     * @return The test.
     */
    @java.lang.Override public foo.TestFull.TestEnumSmall getTest() {
      foo.TestFull.TestEnumSmall result = foo.TestFull.TestEnumSmall.forNumber(test_);
      return result == null ? foo.TestFull.TestEnumSmall.NEG_VALUE : result;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeEnum(1, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, test_);
      }
      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 foo.TestFull.TestMessRequiredEnumSmall)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredEnumSmall other = (foo.TestFull.TestMessRequiredEnumSmall) obj;

      if (hasTest() != other.hasTest()) return false;
      if (hasTest()) {
        if (test_ != other.test_) 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 (hasTest()) {
        hash = (37 * hash) + TEST_FIELD_NUMBER;
        hash = (53 * hash) + test_;
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredEnumSmall_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredEnumSmall.class, foo.TestFull.TestMessRequiredEnumSmall.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredEnumSmall.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredEnumSmall_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredEnumSmall getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredEnumSmall.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredEnumSmall build() {
        foo.TestFull.TestMessRequiredEnumSmall result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredEnumSmall buildPartial() {
        foo.TestFull.TestMessRequiredEnumSmall result = new foo.TestFull.TestMessRequiredEnumSmall(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredEnumSmall result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredEnumSmall) {
          return mergeFrom((foo.TestFull.TestMessRequiredEnumSmall)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredEnumSmall other) {
        if (other == foo.TestFull.TestMessRequiredEnumSmall.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                int tmpRaw = input.readEnum();
                foo.TestFull.TestEnumSmall tmpValue =
                    foo.TestFull.TestEnumSmall.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(1, tmpRaw);
                } else {
                  test_ = tmpRaw;
                  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 test_ = -1;
      /**
       * <code>required .foo.TestEnumSmall test = 1;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .foo.TestEnumSmall test = 1;</code>
       * @return The test.
       */
      @java.lang.Override
      public foo.TestFull.TestEnumSmall getTest() {
        foo.TestFull.TestEnumSmall result = foo.TestFull.TestEnumSmall.forNumber(test_);
        return result == null ? foo.TestFull.TestEnumSmall.NEG_VALUE : result;
      }
      /**
       * <code>required .foo.TestEnumSmall test = 1;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(foo.TestFull.TestEnumSmall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        test_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestEnumSmall test = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = -1;
        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:foo.TestMessRequiredEnumSmall)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredEnumSmall)
    private static final foo.TestFull.TestMessRequiredEnumSmall DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredEnumSmall();
    }

    public static foo.TestFull.TestMessRequiredEnumSmall getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredEnumSmall getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredStringOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredString)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string test = 1;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required string test = 1;</code>
     * @return The test.
     */
    java.lang.String getTest();
    /**
     * <code>required string test = 1;</code>
     * @return The bytes for test.
     */
    com.google.protobuf.ByteString
        getTestBytes();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredString}
   */
  public static final class TestMessRequiredString extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredString)
      TestMessRequiredStringOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredString.newBuilder() to construct.
    private TestMessRequiredString(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredString() {
      test_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredString_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredString_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredString.class, foo.TestFull.TestMessRequiredString.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object test_ = "";
    /**
     * <code>required string test = 1;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required string test = 1;</code>
     * @return The test.
     */
    @java.lang.Override
    public java.lang.String getTest() {
      java.lang.Object ref = test_;
      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 (bs.isValidUtf8()) {
          test_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string test = 1;</code>
     * @return The bytes for test.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTestBytes() {
      java.lang.Object ref = test_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        test_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, test_);
      }
      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 foo.TestFull.TestMessRequiredString)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredString other = (foo.TestFull.TestMessRequiredString) obj;

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

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredString_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredString.class, foo.TestFull.TestMessRequiredString.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredString.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredString_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredString getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredString.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredString build() {
        foo.TestFull.TestMessRequiredString result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredString buildPartial() {
        foo.TestFull.TestMessRequiredString result = new foo.TestFull.TestMessRequiredString(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredString result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredString) {
          return mergeFrom((foo.TestFull.TestMessRequiredString)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredString other) {
        if (other == foo.TestFull.TestMessRequiredString.getDefaultInstance()) return this;
        if (other.hasTest()) {
          test_ = other.test_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object test_ = "";
      /**
       * <code>required string test = 1;</code>
       * @return Whether the test field is set.
       */
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string test = 1;</code>
       * @return The test.
       */
      public java.lang.String getTest() {
        java.lang.Object ref = test_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            test_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string test = 1;</code>
       * @return The bytes for test.
       */
      public com.google.protobuf.ByteString
          getTestBytes() {
        java.lang.Object ref = test_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          test_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string test = 1;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        test_ = getDefaultInstance().getTest();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>required string test = 1;</code>
       * @param value The bytes for test to set.
       * @return This builder for chaining.
       */
      public Builder setTestBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        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:foo.TestMessRequiredString)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredString)
    private static final foo.TestFull.TestMessRequiredString DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredString();
    }

    public static foo.TestFull.TestMessRequiredString getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredString getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredBytesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredBytes)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required bytes test = 1;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required bytes test = 1;</code>
     * @return The test.
     */
    com.google.protobuf.ByteString getTest();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredBytes}
   */
  public static final class TestMessRequiredBytes extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredBytes)
      TestMessRequiredBytesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredBytes.newBuilder() to construct.
    private TestMessRequiredBytes(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredBytes() {
      test_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredBytes_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredBytes_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredBytes.class, foo.TestFull.TestMessRequiredBytes.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString test_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>required bytes test = 1;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required bytes test = 1;</code>
     * @return The test.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTest() {
      return test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBytes(1, test_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, test_);
      }
      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 foo.TestFull.TestMessRequiredBytes)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredBytes other = (foo.TestFull.TestMessRequiredBytes) obj;

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

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredBytes_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredBytes.class, foo.TestFull.TestMessRequiredBytes.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredBytes.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        test_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredBytes_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredBytes getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredBytes.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredBytes build() {
        foo.TestFull.TestMessRequiredBytes result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredBytes buildPartial() {
        foo.TestFull.TestMessRequiredBytes result = new foo.TestFull.TestMessRequiredBytes(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredBytes result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = test_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredBytes) {
          return mergeFrom((foo.TestFull.TestMessRequiredBytes)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredBytes other) {
        if (other == foo.TestFull.TestMessRequiredBytes.getDefaultInstance()) return this;
        if (other.hasTest()) {
          setTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private com.google.protobuf.ByteString test_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>required bytes test = 1;</code>
       * @return Whether the test field is set.
       */
      @java.lang.Override
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required bytes test = 1;</code>
       * @return The test.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTest() {
        return test_;
      }
      /**
       * <code>required bytes test = 1;</code>
       * @param value The test to set.
       * @return This builder for chaining.
       */
      public Builder setTest(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        test_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required bytes test = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = getDefaultInstance().getTest();
        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:foo.TestMessRequiredBytes)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredBytes)
    private static final foo.TestFull.TestMessRequiredBytes DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredBytes();
    }

    public static foo.TestFull.TestMessRequiredBytes getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredBytes getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessRequiredMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessRequiredMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .foo.SubMess test = 1;</code>
     * @return Whether the test field is set.
     */
    boolean hasTest();
    /**
     * <code>required .foo.SubMess test = 1;</code>
     * @return The test.
     */
    foo.TestFull.SubMess getTest();
    /**
     * <code>required .foo.SubMess test = 1;</code>
     */
    foo.TestFull.SubMessOrBuilder getTestOrBuilder();
  }
  /**
   * Protobuf type {@code foo.TestMessRequiredMessage}
   */
  public static final class TestMessRequiredMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessRequiredMessage)
      TestMessRequiredMessageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessRequiredMessage.newBuilder() to construct.
    private TestMessRequiredMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessRequiredMessage() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessRequiredMessage_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessRequiredMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessRequiredMessage.class, foo.TestFull.TestMessRequiredMessage.Builder.class);
    }

    private int bitField0_;
    public static final int TEST_FIELD_NUMBER = 1;
    private foo.TestFull.SubMess test_;
    /**
     * <code>required .foo.SubMess test = 1;</code>
     * @return Whether the test field is set.
     */
    @java.lang.Override
    public boolean hasTest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .foo.SubMess test = 1;</code>
     * @return The test.
     */
    @java.lang.Override
    public foo.TestFull.SubMess getTest() {
      return test_ == null ? foo.TestFull.SubMess.getDefaultInstance() : test_;
    }
    /**
     * <code>required .foo.SubMess test = 1;</code>
     */
    @java.lang.Override
    public foo.TestFull.SubMessOrBuilder getTestOrBuilder() {
      return test_ == null ? foo.TestFull.SubMess.getDefaultInstance() : test_;
    }

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

      if (!hasTest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTest().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getTest());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTest());
      }
      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 foo.TestFull.TestMessRequiredMessage)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessRequiredMessage other = (foo.TestFull.TestMessRequiredMessage) obj;

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

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessRequiredMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessRequiredMessage.class, foo.TestFull.TestMessRequiredMessage.Builder.class);
      }

      // Construct using foo.TestFull.TestMessRequiredMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTestFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        test_ = null;
        if (testBuilder_ != null) {
          testBuilder_.dispose();
          testBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessRequiredMessage_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredMessage getDefaultInstanceForType() {
        return foo.TestFull.TestMessRequiredMessage.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredMessage build() {
        foo.TestFull.TestMessRequiredMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessRequiredMessage buildPartial() {
        foo.TestFull.TestMessRequiredMessage result = new foo.TestFull.TestMessRequiredMessage(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessRequiredMessage result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.test_ = testBuilder_ == null
              ? test_
              : testBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessRequiredMessage) {
          return mergeFrom((foo.TestFull.TestMessRequiredMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessRequiredMessage other) {
        if (other == foo.TestFull.TestMessRequiredMessage.getDefaultInstance()) return this;
        if (other.hasTest()) {
          mergeTest(other.getTest());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTest()) {
          return false;
        }
        if (!getTest().isInitialized()) {
          return false;
        }
        return true;
      }

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

      private foo.TestFull.SubMess test_;
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder> testBuilder_;
      /**
       * <code>required .foo.SubMess test = 1;</code>
       * @return Whether the test field is set.
       */
      public boolean hasTest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .foo.SubMess test = 1;</code>
       * @return The test.
       */
      public foo.TestFull.SubMess getTest() {
        if (testBuilder_ == null) {
          return test_ == null ? foo.TestFull.SubMess.getDefaultInstance() : test_;
        } else {
          return testBuilder_.getMessage();
        }
      }
      /**
       * <code>required .foo.SubMess test = 1;</code>
       */
      public Builder setTest(foo.TestFull.SubMess value) {
        if (testBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          test_ = value;
        } else {
          testBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.SubMess test = 1;</code>
       */
      public Builder setTest(
          foo.TestFull.SubMess.Builder builderForValue) {
        if (testBuilder_ == null) {
          test_ = builderForValue.build();
        } else {
          testBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.SubMess test = 1;</code>
       */
      public Builder mergeTest(foo.TestFull.SubMess value) {
        if (testBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            test_ != null &&
            test_ != foo.TestFull.SubMess.getDefaultInstance()) {
            getTestBuilder().mergeFrom(value);
          } else {
            test_ = value;
          }
        } else {
          testBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.SubMess test = 1;</code>
       */
      public Builder clearTest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        test_ = null;
        if (testBuilder_ != null) {
          testBuilder_.dispose();
          testBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.SubMess test = 1;</code>
       */
      public foo.TestFull.SubMess.Builder getTestBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getTestFieldBuilder().getBuilder();
      }
      /**
       * <code>required .foo.SubMess test = 1;</code>
       */
      public foo.TestFull.SubMessOrBuilder getTestOrBuilder() {
        if (testBuilder_ != null) {
          return testBuilder_.getMessageOrBuilder();
        } else {
          return test_ == null ?
              foo.TestFull.SubMess.getDefaultInstance() : test_;
        }
      }
      /**
       * <code>required .foo.SubMess test = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder> 
          getTestFieldBuilder() {
        if (testBuilder_ == null) {
          testBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder>(
                  getTest(),
                  getParentForChildren(),
                  isClean());
          test_ = null;
        }
        return testBuilder_;
      }
      @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:foo.TestMessRequiredMessage)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessRequiredMessage)
    private static final foo.TestFull.TestMessRequiredMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessRequiredMessage();
    }

    public static foo.TestFull.TestMessRequiredMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessRequiredMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EmptyMessOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.EmptyMess)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code foo.EmptyMess}
   */
  public static final class EmptyMess extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.EmptyMess)
      EmptyMessOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EmptyMess.newBuilder() to construct.
    private EmptyMess(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EmptyMess() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_EmptyMess_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_EmptyMess_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.EmptyMess.class, foo.TestFull.EmptyMess.Builder.class);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

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

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof foo.TestFull.EmptyMess)) {
        return super.equals(obj);
      }
      foo.TestFull.EmptyMess other = (foo.TestFull.EmptyMess) obj;

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

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

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_EmptyMess_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.EmptyMess.class, foo.TestFull.EmptyMess.Builder.class);
      }

      // Construct using foo.TestFull.EmptyMess.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_EmptyMess_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.EmptyMess getDefaultInstanceForType() {
        return foo.TestFull.EmptyMess.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.EmptyMess build() {
        foo.TestFull.EmptyMess result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.EmptyMess buildPartial() {
        foo.TestFull.EmptyMess result = new foo.TestFull.EmptyMess(this);
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(foo.TestFull.EmptyMess other) {
        if (other == foo.TestFull.EmptyMess.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      @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:foo.EmptyMess)
    }

    // @@protoc_insertion_point(class_scope:foo.EmptyMess)
    private static final foo.TestFull.EmptyMess DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.EmptyMess();
    }

    public static foo.TestFull.EmptyMess getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.EmptyMess getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DefaultRequiredValuesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.DefaultRequiredValues)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required int32 v_int32 = 1 [default = -42];</code>
     * @return Whether the vInt32 field is set.
     */
    boolean hasVInt32();
    /**
     * <code>required int32 v_int32 = 1 [default = -42];</code>
     * @return The vInt32.
     */
    int getVInt32();

    /**
     * <code>required uint32 v_uint32 = 2 [default = 666];</code>
     * @return Whether the vUint32 field is set.
     */
    boolean hasVUint32();
    /**
     * <code>required uint32 v_uint32 = 2 [default = 666];</code>
     * @return The vUint32.
     */
    int getVUint32();

    /**
     * <code>required int32 v_int64 = 3 [default = 100000];</code>
     * @return Whether the vInt64 field is set.
     */
    boolean hasVInt64();
    /**
     * <code>required int32 v_int64 = 3 [default = 100000];</code>
     * @return The vInt64.
     */
    int getVInt64();

    /**
     * <code>required uint32 v_uint64 = 4 [default = 100001];</code>
     * @return Whether the vUint64 field is set.
     */
    boolean hasVUint64();
    /**
     * <code>required uint32 v_uint64 = 4 [default = 100001];</code>
     * @return The vUint64.
     */
    int getVUint64();

    /**
     * <code>required float v_float = 5 [default = 2.5];</code>
     * @return Whether the vFloat field is set.
     */
    boolean hasVFloat();
    /**
     * <code>required float v_float = 5 [default = 2.5];</code>
     * @return The vFloat.
     */
    float getVFloat();

    /**
     * <code>required double v_double = 6 [default = 4.5];</code>
     * @return Whether the vDouble field is set.
     */
    boolean hasVDouble();
    /**
     * <code>required double v_double = 6 [default = 4.5];</code>
     * @return The vDouble.
     */
    double getVDouble();

    /**
     * <code>required string v_string = 7 [default = "hi mom&#92;n"];</code>
     * @return Whether the vString field is set.
     */
    boolean hasVString();
    /**
     * <code>required string v_string = 7 [default = "hi mom&#92;n"];</code>
     * @return The vString.
     */
    java.lang.String getVString();
    /**
     * <code>required string v_string = 7 [default = "hi mom&#92;n"];</code>
     * @return The bytes for vString.
     */
    com.google.protobuf.ByteString
        getVStringBytes();

    /**
     * <code>required bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
     * @return Whether the vBytes field is set.
     */
    boolean hasVBytes();
    /**
     * <code>required bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
     * @return The vBytes.
     */
    com.google.protobuf.ByteString getVBytes();
  }
  /**
   * Protobuf type {@code foo.DefaultRequiredValues}
   */
  public static final class DefaultRequiredValues extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.DefaultRequiredValues)
      DefaultRequiredValuesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DefaultRequiredValues.newBuilder() to construct.
    private DefaultRequiredValues(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DefaultRequiredValues() {
      vInt32_ = -42;
      vUint32_ = 666;
      vInt64_ = 100000;
      vUint64_ = 100001;
      vFloat_ = 2.5F;
      vDouble_ = 4.5D;
      vString_ = "hi mom\n";
      vBytes_ = com.google.protobuf.Internal.bytesDefaultValue("a \000 character");
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_DefaultRequiredValues_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_DefaultRequiredValues_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.DefaultRequiredValues.class, foo.TestFull.DefaultRequiredValues.Builder.class);
    }

    private int bitField0_;
    public static final int V_INT32_FIELD_NUMBER = 1;
    private int vInt32_ = -42;
    /**
     * <code>required int32 v_int32 = 1 [default = -42];</code>
     * @return Whether the vInt32 field is set.
     */
    @java.lang.Override
    public boolean hasVInt32() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required int32 v_int32 = 1 [default = -42];</code>
     * @return The vInt32.
     */
    @java.lang.Override
    public int getVInt32() {
      return vInt32_;
    }

    public static final int V_UINT32_FIELD_NUMBER = 2;
    private int vUint32_ = 666;
    /**
     * <code>required uint32 v_uint32 = 2 [default = 666];</code>
     * @return Whether the vUint32 field is set.
     */
    @java.lang.Override
    public boolean hasVUint32() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required uint32 v_uint32 = 2 [default = 666];</code>
     * @return The vUint32.
     */
    @java.lang.Override
    public int getVUint32() {
      return vUint32_;
    }

    public static final int V_INT64_FIELD_NUMBER = 3;
    private int vInt64_ = 100000;
    /**
     * <code>required int32 v_int64 = 3 [default = 100000];</code>
     * @return Whether the vInt64 field is set.
     */
    @java.lang.Override
    public boolean hasVInt64() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required int32 v_int64 = 3 [default = 100000];</code>
     * @return The vInt64.
     */
    @java.lang.Override
    public int getVInt64() {
      return vInt64_;
    }

    public static final int V_UINT64_FIELD_NUMBER = 4;
    private int vUint64_ = 100001;
    /**
     * <code>required uint32 v_uint64 = 4 [default = 100001];</code>
     * @return Whether the vUint64 field is set.
     */
    @java.lang.Override
    public boolean hasVUint64() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required uint32 v_uint64 = 4 [default = 100001];</code>
     * @return The vUint64.
     */
    @java.lang.Override
    public int getVUint64() {
      return vUint64_;
    }

    public static final int V_FLOAT_FIELD_NUMBER = 5;
    private float vFloat_ = 2.5F;
    /**
     * <code>required float v_float = 5 [default = 2.5];</code>
     * @return Whether the vFloat field is set.
     */
    @java.lang.Override
    public boolean hasVFloat() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>required float v_float = 5 [default = 2.5];</code>
     * @return The vFloat.
     */
    @java.lang.Override
    public float getVFloat() {
      return vFloat_;
    }

    public static final int V_DOUBLE_FIELD_NUMBER = 6;
    private double vDouble_ = 4.5D;
    /**
     * <code>required double v_double = 6 [default = 4.5];</code>
     * @return Whether the vDouble field is set.
     */
    @java.lang.Override
    public boolean hasVDouble() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>required double v_double = 6 [default = 4.5];</code>
     * @return The vDouble.
     */
    @java.lang.Override
    public double getVDouble() {
      return vDouble_;
    }

    public static final int V_STRING_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object vString_ = "hi mom\n";
    /**
     * <code>required string v_string = 7 [default = "hi mom&#92;n"];</code>
     * @return Whether the vString field is set.
     */
    @java.lang.Override
    public boolean hasVString() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>required string v_string = 7 [default = "hi mom&#92;n"];</code>
     * @return The vString.
     */
    @java.lang.Override
    public java.lang.String getVString() {
      java.lang.Object ref = vString_;
      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 (bs.isValidUtf8()) {
          vString_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string v_string = 7 [default = "hi mom&#92;n"];</code>
     * @return The bytes for vString.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVStringBytes() {
      java.lang.Object ref = vString_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        vString_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int V_BYTES_FIELD_NUMBER = 8;
    private com.google.protobuf.ByteString vBytes_ = com.google.protobuf.Internal.bytesDefaultValue("a \000 character");
    /**
     * <code>required bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
     * @return Whether the vBytes field is set.
     */
    @java.lang.Override
    public boolean hasVBytes() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>required bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
     * @return The vBytes.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getVBytes() {
      return vBytes_;
    }

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

      if (!hasVInt32()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVUint32()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVInt64()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVUint64()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVFloat()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVDouble()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVString()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVBytes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(1, vInt32_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(2, vUint32_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(3, vInt64_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt32(4, vUint64_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeFloat(5, vFloat_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeDouble(6, vDouble_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, vString_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeBytes(8, vBytes_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, vInt32_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, vUint32_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, vInt64_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, vUint64_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(5, vFloat_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(6, vDouble_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, vString_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(8, vBytes_);
      }
      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 foo.TestFull.DefaultRequiredValues)) {
        return super.equals(obj);
      }
      foo.TestFull.DefaultRequiredValues other = (foo.TestFull.DefaultRequiredValues) obj;

      if (hasVInt32() != other.hasVInt32()) return false;
      if (hasVInt32()) {
        if (getVInt32()
            != other.getVInt32()) return false;
      }
      if (hasVUint32() != other.hasVUint32()) return false;
      if (hasVUint32()) {
        if (getVUint32()
            != other.getVUint32()) return false;
      }
      if (hasVInt64() != other.hasVInt64()) return false;
      if (hasVInt64()) {
        if (getVInt64()
            != other.getVInt64()) return false;
      }
      if (hasVUint64() != other.hasVUint64()) return false;
      if (hasVUint64()) {
        if (getVUint64()
            != other.getVUint64()) return false;
      }
      if (hasVFloat() != other.hasVFloat()) return false;
      if (hasVFloat()) {
        if (java.lang.Float.floatToIntBits(getVFloat())
            != java.lang.Float.floatToIntBits(
                other.getVFloat())) return false;
      }
      if (hasVDouble() != other.hasVDouble()) return false;
      if (hasVDouble()) {
        if (java.lang.Double.doubleToLongBits(getVDouble())
            != java.lang.Double.doubleToLongBits(
                other.getVDouble())) return false;
      }
      if (hasVString() != other.hasVString()) return false;
      if (hasVString()) {
        if (!getVString()
            .equals(other.getVString())) return false;
      }
      if (hasVBytes() != other.hasVBytes()) return false;
      if (hasVBytes()) {
        if (!getVBytes()
            .equals(other.getVBytes())) 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 (hasVInt32()) {
        hash = (37 * hash) + V_INT32_FIELD_NUMBER;
        hash = (53 * hash) + getVInt32();
      }
      if (hasVUint32()) {
        hash = (37 * hash) + V_UINT32_FIELD_NUMBER;
        hash = (53 * hash) + getVUint32();
      }
      if (hasVInt64()) {
        hash = (37 * hash) + V_INT64_FIELD_NUMBER;
        hash = (53 * hash) + getVInt64();
      }
      if (hasVUint64()) {
        hash = (37 * hash) + V_UINT64_FIELD_NUMBER;
        hash = (53 * hash) + getVUint64();
      }
      if (hasVFloat()) {
        hash = (37 * hash) + V_FLOAT_FIELD_NUMBER;
        hash = (53 * hash) + java.lang.Float.floatToIntBits(
            getVFloat());
      }
      if (hasVDouble()) {
        hash = (37 * hash) + V_DOUBLE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getVDouble()));
      }
      if (hasVString()) {
        hash = (37 * hash) + V_STRING_FIELD_NUMBER;
        hash = (53 * hash) + getVString().hashCode();
      }
      if (hasVBytes()) {
        hash = (37 * hash) + V_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + getVBytes().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_DefaultRequiredValues_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.DefaultRequiredValues.class, foo.TestFull.DefaultRequiredValues.Builder.class);
      }

      // Construct using foo.TestFull.DefaultRequiredValues.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        vInt32_ = -42;
        vUint32_ = 666;
        vInt64_ = 100000;
        vUint64_ = 100001;
        vFloat_ = 2.5F;
        vDouble_ = 4.5D;
        vString_ = "hi mom\n";
        vBytes_ = com.google.protobuf.Internal.bytesDefaultValue("a \000 character");
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_DefaultRequiredValues_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.DefaultRequiredValues getDefaultInstanceForType() {
        return foo.TestFull.DefaultRequiredValues.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.DefaultRequiredValues build() {
        foo.TestFull.DefaultRequiredValues result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.DefaultRequiredValues buildPartial() {
        foo.TestFull.DefaultRequiredValues result = new foo.TestFull.DefaultRequiredValues(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.DefaultRequiredValues result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.vInt32_ = vInt32_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.vUint32_ = vUint32_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.vInt64_ = vInt64_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.vUint64_ = vUint64_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.vFloat_ = vFloat_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.vDouble_ = vDouble_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.vString_ = vString_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.vBytes_ = vBytes_;
          to_bitField0_ |= 0x00000080;
        }
        result.bitField0_ |= to_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 foo.TestFull.DefaultRequiredValues) {
          return mergeFrom((foo.TestFull.DefaultRequiredValues)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.DefaultRequiredValues other) {
        if (other == foo.TestFull.DefaultRequiredValues.getDefaultInstance()) return this;
        if (other.hasVInt32()) {
          setVInt32(other.getVInt32());
        }
        if (other.hasVUint32()) {
          setVUint32(other.getVUint32());
        }
        if (other.hasVInt64()) {
          setVInt64(other.getVInt64());
        }
        if (other.hasVUint64()) {
          setVUint64(other.getVUint64());
        }
        if (other.hasVFloat()) {
          setVFloat(other.getVFloat());
        }
        if (other.hasVDouble()) {
          setVDouble(other.getVDouble());
        }
        if (other.hasVString()) {
          vString_ = other.vString_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (other.hasVBytes()) {
          setVBytes(other.getVBytes());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasVInt32()) {
          return false;
        }
        if (!hasVUint32()) {
          return false;
        }
        if (!hasVInt64()) {
          return false;
        }
        if (!hasVUint64()) {
          return false;
        }
        if (!hasVFloat()) {
          return false;
        }
        if (!hasVDouble()) {
          return false;
        }
        if (!hasVString()) {
          return false;
        }
        if (!hasVBytes()) {
          return false;
        }
        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: {
                vInt32_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                vUint32_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                vInt64_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                vUint64_ = input.readUInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 45: {
                vFloat_ = input.readFloat();
                bitField0_ |= 0x00000010;
                break;
              } // case 45
              case 49: {
                vDouble_ = input.readDouble();
                bitField0_ |= 0x00000020;
                break;
              } // case 49
              case 58: {
                vString_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                vBytes_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              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 vInt32_ = -42;
      /**
       * <code>required int32 v_int32 = 1 [default = -42];</code>
       * @return Whether the vInt32 field is set.
       */
      @java.lang.Override
      public boolean hasVInt32() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required int32 v_int32 = 1 [default = -42];</code>
       * @return The vInt32.
       */
      @java.lang.Override
      public int getVInt32() {
        return vInt32_;
      }
      /**
       * <code>required int32 v_int32 = 1 [default = -42];</code>
       * @param value The vInt32 to set.
       * @return This builder for chaining.
       */
      public Builder setVInt32(int value) {

        vInt32_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 v_int32 = 1 [default = -42];</code>
       * @return This builder for chaining.
       */
      public Builder clearVInt32() {
        bitField0_ = (bitField0_ & ~0x00000001);
        vInt32_ = -42;
        onChanged();
        return this;
      }

      private int vUint32_ = 666;
      /**
       * <code>required uint32 v_uint32 = 2 [default = 666];</code>
       * @return Whether the vUint32 field is set.
       */
      @java.lang.Override
      public boolean hasVUint32() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required uint32 v_uint32 = 2 [default = 666];</code>
       * @return The vUint32.
       */
      @java.lang.Override
      public int getVUint32() {
        return vUint32_;
      }
      /**
       * <code>required uint32 v_uint32 = 2 [default = 666];</code>
       * @param value The vUint32 to set.
       * @return This builder for chaining.
       */
      public Builder setVUint32(int value) {

        vUint32_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 v_uint32 = 2 [default = 666];</code>
       * @return This builder for chaining.
       */
      public Builder clearVUint32() {
        bitField0_ = (bitField0_ & ~0x00000002);
        vUint32_ = 666;
        onChanged();
        return this;
      }

      private int vInt64_ = 100000;
      /**
       * <code>required int32 v_int64 = 3 [default = 100000];</code>
       * @return Whether the vInt64 field is set.
       */
      @java.lang.Override
      public boolean hasVInt64() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required int32 v_int64 = 3 [default = 100000];</code>
       * @return The vInt64.
       */
      @java.lang.Override
      public int getVInt64() {
        return vInt64_;
      }
      /**
       * <code>required int32 v_int64 = 3 [default = 100000];</code>
       * @param value The vInt64 to set.
       * @return This builder for chaining.
       */
      public Builder setVInt64(int value) {

        vInt64_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 v_int64 = 3 [default = 100000];</code>
       * @return This builder for chaining.
       */
      public Builder clearVInt64() {
        bitField0_ = (bitField0_ & ~0x00000004);
        vInt64_ = 100000;
        onChanged();
        return this;
      }

      private int vUint64_ = 100001;
      /**
       * <code>required uint32 v_uint64 = 4 [default = 100001];</code>
       * @return Whether the vUint64 field is set.
       */
      @java.lang.Override
      public boolean hasVUint64() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required uint32 v_uint64 = 4 [default = 100001];</code>
       * @return The vUint64.
       */
      @java.lang.Override
      public int getVUint64() {
        return vUint64_;
      }
      /**
       * <code>required uint32 v_uint64 = 4 [default = 100001];</code>
       * @param value The vUint64 to set.
       * @return This builder for chaining.
       */
      public Builder setVUint64(int value) {

        vUint64_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 v_uint64 = 4 [default = 100001];</code>
       * @return This builder for chaining.
       */
      public Builder clearVUint64() {
        bitField0_ = (bitField0_ & ~0x00000008);
        vUint64_ = 100001;
        onChanged();
        return this;
      }

      private float vFloat_ = 2.5F;
      /**
       * <code>required float v_float = 5 [default = 2.5];</code>
       * @return Whether the vFloat field is set.
       */
      @java.lang.Override
      public boolean hasVFloat() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>required float v_float = 5 [default = 2.5];</code>
       * @return The vFloat.
       */
      @java.lang.Override
      public float getVFloat() {
        return vFloat_;
      }
      /**
       * <code>required float v_float = 5 [default = 2.5];</code>
       * @param value The vFloat to set.
       * @return This builder for chaining.
       */
      public Builder setVFloat(float value) {

        vFloat_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>required float v_float = 5 [default = 2.5];</code>
       * @return This builder for chaining.
       */
      public Builder clearVFloat() {
        bitField0_ = (bitField0_ & ~0x00000010);
        vFloat_ = 2.5F;
        onChanged();
        return this;
      }

      private double vDouble_ = 4.5D;
      /**
       * <code>required double v_double = 6 [default = 4.5];</code>
       * @return Whether the vDouble field is set.
       */
      @java.lang.Override
      public boolean hasVDouble() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>required double v_double = 6 [default = 4.5];</code>
       * @return The vDouble.
       */
      @java.lang.Override
      public double getVDouble() {
        return vDouble_;
      }
      /**
       * <code>required double v_double = 6 [default = 4.5];</code>
       * @param value The vDouble to set.
       * @return This builder for chaining.
       */
      public Builder setVDouble(double value) {

        vDouble_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>required double v_double = 6 [default = 4.5];</code>
       * @return This builder for chaining.
       */
      public Builder clearVDouble() {
        bitField0_ = (bitField0_ & ~0x00000020);
        vDouble_ = 4.5D;
        onChanged();
        return this;
      }

      private java.lang.Object vString_ = "hi mom\n";
      /**
       * <code>required string v_string = 7 [default = "hi mom&#92;n"];</code>
       * @return Whether the vString field is set.
       */
      public boolean hasVString() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>required string v_string = 7 [default = "hi mom&#92;n"];</code>
       * @return The vString.
       */
      public java.lang.String getVString() {
        java.lang.Object ref = vString_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            vString_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string v_string = 7 [default = "hi mom&#92;n"];</code>
       * @return The bytes for vString.
       */
      public com.google.protobuf.ByteString
          getVStringBytes() {
        java.lang.Object ref = vString_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          vString_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string v_string = 7 [default = "hi mom&#92;n"];</code>
       * @param value The vString to set.
       * @return This builder for chaining.
       */
      public Builder setVString(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        vString_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>required string v_string = 7 [default = "hi mom&#92;n"];</code>
       * @return This builder for chaining.
       */
      public Builder clearVString() {
        vString_ = getDefaultInstance().getVString();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <code>required string v_string = 7 [default = "hi mom&#92;n"];</code>
       * @param value The bytes for vString to set.
       * @return This builder for chaining.
       */
      public Builder setVStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        vString_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString vBytes_ = com.google.protobuf.Internal.bytesDefaultValue("a \000 character");
      /**
       * <code>required bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
       * @return Whether the vBytes field is set.
       */
      @java.lang.Override
      public boolean hasVBytes() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>required bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
       * @return The vBytes.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getVBytes() {
        return vBytes_;
      }
      /**
       * <code>required bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
       * @param value The vBytes to set.
       * @return This builder for chaining.
       */
      public Builder setVBytes(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        vBytes_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>required bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
       * @return This builder for chaining.
       */
      public Builder clearVBytes() {
        bitField0_ = (bitField0_ & ~0x00000080);
        vBytes_ = getDefaultInstance().getVBytes();
        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:foo.DefaultRequiredValues)
    }

    // @@protoc_insertion_point(class_scope:foo.DefaultRequiredValues)
    private static final foo.TestFull.DefaultRequiredValues DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.DefaultRequiredValues();
    }

    public static foo.TestFull.DefaultRequiredValues getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.DefaultRequiredValues getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DefaultOptionalValuesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.DefaultOptionalValues)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional int32 v_int32 = 1 [default = -42];</code>
     * @return Whether the vInt32 field is set.
     */
    boolean hasVInt32();
    /**
     * <code>optional int32 v_int32 = 1 [default = -42];</code>
     * @return The vInt32.
     */
    int getVInt32();

    /**
     * <code>optional uint32 v_uint32 = 2 [default = 666];</code>
     * @return Whether the vUint32 field is set.
     */
    boolean hasVUint32();
    /**
     * <code>optional uint32 v_uint32 = 2 [default = 666];</code>
     * @return The vUint32.
     */
    int getVUint32();

    /**
     * <code>optional int32 v_int64 = 3 [default = 100000];</code>
     * @return Whether the vInt64 field is set.
     */
    boolean hasVInt64();
    /**
     * <code>optional int32 v_int64 = 3 [default = 100000];</code>
     * @return The vInt64.
     */
    int getVInt64();

    /**
     * <code>optional uint32 v_uint64 = 4 [default = 100001];</code>
     * @return Whether the vUint64 field is set.
     */
    boolean hasVUint64();
    /**
     * <code>optional uint32 v_uint64 = 4 [default = 100001];</code>
     * @return The vUint64.
     */
    int getVUint64();

    /**
     * <code>optional float v_float = 5 [default = 2.5];</code>
     * @return Whether the vFloat field is set.
     */
    boolean hasVFloat();
    /**
     * <code>optional float v_float = 5 [default = 2.5];</code>
     * @return The vFloat.
     */
    float getVFloat();

    /**
     * <code>optional double v_double = 6 [default = 4.5];</code>
     * @return Whether the vDouble field is set.
     */
    boolean hasVDouble();
    /**
     * <code>optional double v_double = 6 [default = 4.5];</code>
     * @return The vDouble.
     */
    double getVDouble();

    /**
     * <code>optional string v_string = 7 [default = "hi mom&#92;n"];</code>
     * @return Whether the vString field is set.
     */
    boolean hasVString();
    /**
     * <code>optional string v_string = 7 [default = "hi mom&#92;n"];</code>
     * @return The vString.
     */
    java.lang.String getVString();
    /**
     * <code>optional string v_string = 7 [default = "hi mom&#92;n"];</code>
     * @return The bytes for vString.
     */
    com.google.protobuf.ByteString
        getVStringBytes();

    /**
     * <code>optional bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
     * @return Whether the vBytes field is set.
     */
    boolean hasVBytes();
    /**
     * <code>optional bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
     * @return The vBytes.
     */
    com.google.protobuf.ByteString getVBytes();
  }
  /**
   * Protobuf type {@code foo.DefaultOptionalValues}
   */
  public static final class DefaultOptionalValues extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.DefaultOptionalValues)
      DefaultOptionalValuesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DefaultOptionalValues.newBuilder() to construct.
    private DefaultOptionalValues(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DefaultOptionalValues() {
      vInt32_ = -42;
      vUint32_ = 666;
      vInt64_ = 100000;
      vUint64_ = 100001;
      vFloat_ = 2.5F;
      vDouble_ = 4.5D;
      vString_ = "hi mom\n";
      vBytes_ = com.google.protobuf.Internal.bytesDefaultValue("a \000 character");
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_DefaultOptionalValues_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_DefaultOptionalValues_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.DefaultOptionalValues.class, foo.TestFull.DefaultOptionalValues.Builder.class);
    }

    private int bitField0_;
    public static final int V_INT32_FIELD_NUMBER = 1;
    private int vInt32_ = -42;
    /**
     * <code>optional int32 v_int32 = 1 [default = -42];</code>
     * @return Whether the vInt32 field is set.
     */
    @java.lang.Override
    public boolean hasVInt32() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional int32 v_int32 = 1 [default = -42];</code>
     * @return The vInt32.
     */
    @java.lang.Override
    public int getVInt32() {
      return vInt32_;
    }

    public static final int V_UINT32_FIELD_NUMBER = 2;
    private int vUint32_ = 666;
    /**
     * <code>optional uint32 v_uint32 = 2 [default = 666];</code>
     * @return Whether the vUint32 field is set.
     */
    @java.lang.Override
    public boolean hasVUint32() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional uint32 v_uint32 = 2 [default = 666];</code>
     * @return The vUint32.
     */
    @java.lang.Override
    public int getVUint32() {
      return vUint32_;
    }

    public static final int V_INT64_FIELD_NUMBER = 3;
    private int vInt64_ = 100000;
    /**
     * <code>optional int32 v_int64 = 3 [default = 100000];</code>
     * @return Whether the vInt64 field is set.
     */
    @java.lang.Override
    public boolean hasVInt64() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional int32 v_int64 = 3 [default = 100000];</code>
     * @return The vInt64.
     */
    @java.lang.Override
    public int getVInt64() {
      return vInt64_;
    }

    public static final int V_UINT64_FIELD_NUMBER = 4;
    private int vUint64_ = 100001;
    /**
     * <code>optional uint32 v_uint64 = 4 [default = 100001];</code>
     * @return Whether the vUint64 field is set.
     */
    @java.lang.Override
    public boolean hasVUint64() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional uint32 v_uint64 = 4 [default = 100001];</code>
     * @return The vUint64.
     */
    @java.lang.Override
    public int getVUint64() {
      return vUint64_;
    }

    public static final int V_FLOAT_FIELD_NUMBER = 5;
    private float vFloat_ = 2.5F;
    /**
     * <code>optional float v_float = 5 [default = 2.5];</code>
     * @return Whether the vFloat field is set.
     */
    @java.lang.Override
    public boolean hasVFloat() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional float v_float = 5 [default = 2.5];</code>
     * @return The vFloat.
     */
    @java.lang.Override
    public float getVFloat() {
      return vFloat_;
    }

    public static final int V_DOUBLE_FIELD_NUMBER = 6;
    private double vDouble_ = 4.5D;
    /**
     * <code>optional double v_double = 6 [default = 4.5];</code>
     * @return Whether the vDouble field is set.
     */
    @java.lang.Override
    public boolean hasVDouble() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional double v_double = 6 [default = 4.5];</code>
     * @return The vDouble.
     */
    @java.lang.Override
    public double getVDouble() {
      return vDouble_;
    }

    public static final int V_STRING_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object vString_ = "hi mom\n";
    /**
     * <code>optional string v_string = 7 [default = "hi mom&#92;n"];</code>
     * @return Whether the vString field is set.
     */
    @java.lang.Override
    public boolean hasVString() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional string v_string = 7 [default = "hi mom&#92;n"];</code>
     * @return The vString.
     */
    @java.lang.Override
    public java.lang.String getVString() {
      java.lang.Object ref = vString_;
      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 (bs.isValidUtf8()) {
          vString_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string v_string = 7 [default = "hi mom&#92;n"];</code>
     * @return The bytes for vString.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVStringBytes() {
      java.lang.Object ref = vString_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        vString_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int V_BYTES_FIELD_NUMBER = 8;
    private com.google.protobuf.ByteString vBytes_ = com.google.protobuf.Internal.bytesDefaultValue("a \000 character");
    /**
     * <code>optional bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
     * @return Whether the vBytes field is set.
     */
    @java.lang.Override
    public boolean hasVBytes() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
     * @return The vBytes.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getVBytes() {
      return vBytes_;
    }

    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 (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(1, vInt32_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(2, vUint32_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(3, vInt64_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt32(4, vUint64_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeFloat(5, vFloat_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeDouble(6, vDouble_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, vString_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeBytes(8, vBytes_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, vInt32_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, vUint32_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, vInt64_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, vUint64_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(5, vFloat_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(6, vDouble_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, vString_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(8, vBytes_);
      }
      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 foo.TestFull.DefaultOptionalValues)) {
        return super.equals(obj);
      }
      foo.TestFull.DefaultOptionalValues other = (foo.TestFull.DefaultOptionalValues) obj;

      if (hasVInt32() != other.hasVInt32()) return false;
      if (hasVInt32()) {
        if (getVInt32()
            != other.getVInt32()) return false;
      }
      if (hasVUint32() != other.hasVUint32()) return false;
      if (hasVUint32()) {
        if (getVUint32()
            != other.getVUint32()) return false;
      }
      if (hasVInt64() != other.hasVInt64()) return false;
      if (hasVInt64()) {
        if (getVInt64()
            != other.getVInt64()) return false;
      }
      if (hasVUint64() != other.hasVUint64()) return false;
      if (hasVUint64()) {
        if (getVUint64()
            != other.getVUint64()) return false;
      }
      if (hasVFloat() != other.hasVFloat()) return false;
      if (hasVFloat()) {
        if (java.lang.Float.floatToIntBits(getVFloat())
            != java.lang.Float.floatToIntBits(
                other.getVFloat())) return false;
      }
      if (hasVDouble() != other.hasVDouble()) return false;
      if (hasVDouble()) {
        if (java.lang.Double.doubleToLongBits(getVDouble())
            != java.lang.Double.doubleToLongBits(
                other.getVDouble())) return false;
      }
      if (hasVString() != other.hasVString()) return false;
      if (hasVString()) {
        if (!getVString()
            .equals(other.getVString())) return false;
      }
      if (hasVBytes() != other.hasVBytes()) return false;
      if (hasVBytes()) {
        if (!getVBytes()
            .equals(other.getVBytes())) 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 (hasVInt32()) {
        hash = (37 * hash) + V_INT32_FIELD_NUMBER;
        hash = (53 * hash) + getVInt32();
      }
      if (hasVUint32()) {
        hash = (37 * hash) + V_UINT32_FIELD_NUMBER;
        hash = (53 * hash) + getVUint32();
      }
      if (hasVInt64()) {
        hash = (37 * hash) + V_INT64_FIELD_NUMBER;
        hash = (53 * hash) + getVInt64();
      }
      if (hasVUint64()) {
        hash = (37 * hash) + V_UINT64_FIELD_NUMBER;
        hash = (53 * hash) + getVUint64();
      }
      if (hasVFloat()) {
        hash = (37 * hash) + V_FLOAT_FIELD_NUMBER;
        hash = (53 * hash) + java.lang.Float.floatToIntBits(
            getVFloat());
      }
      if (hasVDouble()) {
        hash = (37 * hash) + V_DOUBLE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getVDouble()));
      }
      if (hasVString()) {
        hash = (37 * hash) + V_STRING_FIELD_NUMBER;
        hash = (53 * hash) + getVString().hashCode();
      }
      if (hasVBytes()) {
        hash = (37 * hash) + V_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + getVBytes().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_DefaultOptionalValues_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.DefaultOptionalValues.class, foo.TestFull.DefaultOptionalValues.Builder.class);
      }

      // Construct using foo.TestFull.DefaultOptionalValues.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        vInt32_ = -42;
        vUint32_ = 666;
        vInt64_ = 100000;
        vUint64_ = 100001;
        vFloat_ = 2.5F;
        vDouble_ = 4.5D;
        vString_ = "hi mom\n";
        vBytes_ = com.google.protobuf.Internal.bytesDefaultValue("a \000 character");
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_DefaultOptionalValues_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.DefaultOptionalValues getDefaultInstanceForType() {
        return foo.TestFull.DefaultOptionalValues.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.DefaultOptionalValues build() {
        foo.TestFull.DefaultOptionalValues result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.DefaultOptionalValues buildPartial() {
        foo.TestFull.DefaultOptionalValues result = new foo.TestFull.DefaultOptionalValues(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.DefaultOptionalValues result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.vInt32_ = vInt32_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.vUint32_ = vUint32_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.vInt64_ = vInt64_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.vUint64_ = vUint64_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.vFloat_ = vFloat_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.vDouble_ = vDouble_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.vString_ = vString_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.vBytes_ = vBytes_;
          to_bitField0_ |= 0x00000080;
        }
        result.bitField0_ |= to_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 foo.TestFull.DefaultOptionalValues) {
          return mergeFrom((foo.TestFull.DefaultOptionalValues)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.DefaultOptionalValues other) {
        if (other == foo.TestFull.DefaultOptionalValues.getDefaultInstance()) return this;
        if (other.hasVInt32()) {
          setVInt32(other.getVInt32());
        }
        if (other.hasVUint32()) {
          setVUint32(other.getVUint32());
        }
        if (other.hasVInt64()) {
          setVInt64(other.getVInt64());
        }
        if (other.hasVUint64()) {
          setVUint64(other.getVUint64());
        }
        if (other.hasVFloat()) {
          setVFloat(other.getVFloat());
        }
        if (other.hasVDouble()) {
          setVDouble(other.getVDouble());
        }
        if (other.hasVString()) {
          vString_ = other.vString_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (other.hasVBytes()) {
          setVBytes(other.getVBytes());
        }
        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: {
                vInt32_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                vUint32_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                vInt64_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                vUint64_ = input.readUInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 45: {
                vFloat_ = input.readFloat();
                bitField0_ |= 0x00000010;
                break;
              } // case 45
              case 49: {
                vDouble_ = input.readDouble();
                bitField0_ |= 0x00000020;
                break;
              } // case 49
              case 58: {
                vString_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                vBytes_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              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 vInt32_ = -42;
      /**
       * <code>optional int32 v_int32 = 1 [default = -42];</code>
       * @return Whether the vInt32 field is set.
       */
      @java.lang.Override
      public boolean hasVInt32() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional int32 v_int32 = 1 [default = -42];</code>
       * @return The vInt32.
       */
      @java.lang.Override
      public int getVInt32() {
        return vInt32_;
      }
      /**
       * <code>optional int32 v_int32 = 1 [default = -42];</code>
       * @param value The vInt32 to set.
       * @return This builder for chaining.
       */
      public Builder setVInt32(int value) {

        vInt32_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 v_int32 = 1 [default = -42];</code>
       * @return This builder for chaining.
       */
      public Builder clearVInt32() {
        bitField0_ = (bitField0_ & ~0x00000001);
        vInt32_ = -42;
        onChanged();
        return this;
      }

      private int vUint32_ = 666;
      /**
       * <code>optional uint32 v_uint32 = 2 [default = 666];</code>
       * @return Whether the vUint32 field is set.
       */
      @java.lang.Override
      public boolean hasVUint32() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional uint32 v_uint32 = 2 [default = 666];</code>
       * @return The vUint32.
       */
      @java.lang.Override
      public int getVUint32() {
        return vUint32_;
      }
      /**
       * <code>optional uint32 v_uint32 = 2 [default = 666];</code>
       * @param value The vUint32 to set.
       * @return This builder for chaining.
       */
      public Builder setVUint32(int value) {

        vUint32_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 v_uint32 = 2 [default = 666];</code>
       * @return This builder for chaining.
       */
      public Builder clearVUint32() {
        bitField0_ = (bitField0_ & ~0x00000002);
        vUint32_ = 666;
        onChanged();
        return this;
      }

      private int vInt64_ = 100000;
      /**
       * <code>optional int32 v_int64 = 3 [default = 100000];</code>
       * @return Whether the vInt64 field is set.
       */
      @java.lang.Override
      public boolean hasVInt64() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional int32 v_int64 = 3 [default = 100000];</code>
       * @return The vInt64.
       */
      @java.lang.Override
      public int getVInt64() {
        return vInt64_;
      }
      /**
       * <code>optional int32 v_int64 = 3 [default = 100000];</code>
       * @param value The vInt64 to set.
       * @return This builder for chaining.
       */
      public Builder setVInt64(int value) {

        vInt64_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 v_int64 = 3 [default = 100000];</code>
       * @return This builder for chaining.
       */
      public Builder clearVInt64() {
        bitField0_ = (bitField0_ & ~0x00000004);
        vInt64_ = 100000;
        onChanged();
        return this;
      }

      private int vUint64_ = 100001;
      /**
       * <code>optional uint32 v_uint64 = 4 [default = 100001];</code>
       * @return Whether the vUint64 field is set.
       */
      @java.lang.Override
      public boolean hasVUint64() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional uint32 v_uint64 = 4 [default = 100001];</code>
       * @return The vUint64.
       */
      @java.lang.Override
      public int getVUint64() {
        return vUint64_;
      }
      /**
       * <code>optional uint32 v_uint64 = 4 [default = 100001];</code>
       * @param value The vUint64 to set.
       * @return This builder for chaining.
       */
      public Builder setVUint64(int value) {

        vUint64_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 v_uint64 = 4 [default = 100001];</code>
       * @return This builder for chaining.
       */
      public Builder clearVUint64() {
        bitField0_ = (bitField0_ & ~0x00000008);
        vUint64_ = 100001;
        onChanged();
        return this;
      }

      private float vFloat_ = 2.5F;
      /**
       * <code>optional float v_float = 5 [default = 2.5];</code>
       * @return Whether the vFloat field is set.
       */
      @java.lang.Override
      public boolean hasVFloat() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional float v_float = 5 [default = 2.5];</code>
       * @return The vFloat.
       */
      @java.lang.Override
      public float getVFloat() {
        return vFloat_;
      }
      /**
       * <code>optional float v_float = 5 [default = 2.5];</code>
       * @param value The vFloat to set.
       * @return This builder for chaining.
       */
      public Builder setVFloat(float value) {

        vFloat_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional float v_float = 5 [default = 2.5];</code>
       * @return This builder for chaining.
       */
      public Builder clearVFloat() {
        bitField0_ = (bitField0_ & ~0x00000010);
        vFloat_ = 2.5F;
        onChanged();
        return this;
      }

      private double vDouble_ = 4.5D;
      /**
       * <code>optional double v_double = 6 [default = 4.5];</code>
       * @return Whether the vDouble field is set.
       */
      @java.lang.Override
      public boolean hasVDouble() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional double v_double = 6 [default = 4.5];</code>
       * @return The vDouble.
       */
      @java.lang.Override
      public double getVDouble() {
        return vDouble_;
      }
      /**
       * <code>optional double v_double = 6 [default = 4.5];</code>
       * @param value The vDouble to set.
       * @return This builder for chaining.
       */
      public Builder setVDouble(double value) {

        vDouble_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>optional double v_double = 6 [default = 4.5];</code>
       * @return This builder for chaining.
       */
      public Builder clearVDouble() {
        bitField0_ = (bitField0_ & ~0x00000020);
        vDouble_ = 4.5D;
        onChanged();
        return this;
      }

      private java.lang.Object vString_ = "hi mom\n";
      /**
       * <code>optional string v_string = 7 [default = "hi mom&#92;n"];</code>
       * @return Whether the vString field is set.
       */
      public boolean hasVString() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional string v_string = 7 [default = "hi mom&#92;n"];</code>
       * @return The vString.
       */
      public java.lang.String getVString() {
        java.lang.Object ref = vString_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            vString_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string v_string = 7 [default = "hi mom&#92;n"];</code>
       * @return The bytes for vString.
       */
      public com.google.protobuf.ByteString
          getVStringBytes() {
        java.lang.Object ref = vString_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          vString_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string v_string = 7 [default = "hi mom&#92;n"];</code>
       * @param value The vString to set.
       * @return This builder for chaining.
       */
      public Builder setVString(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        vString_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>optional string v_string = 7 [default = "hi mom&#92;n"];</code>
       * @return This builder for chaining.
       */
      public Builder clearVString() {
        vString_ = getDefaultInstance().getVString();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <code>optional string v_string = 7 [default = "hi mom&#92;n"];</code>
       * @param value The bytes for vString to set.
       * @return This builder for chaining.
       */
      public Builder setVStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        vString_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString vBytes_ = com.google.protobuf.Internal.bytesDefaultValue("a \000 character");
      /**
       * <code>optional bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
       * @return Whether the vBytes field is set.
       */
      @java.lang.Override
      public boolean hasVBytes() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
       * @return The vBytes.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getVBytes() {
        return vBytes_;
      }
      /**
       * <code>optional bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
       * @param value The vBytes to set.
       * @return This builder for chaining.
       */
      public Builder setVBytes(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        vBytes_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes v_bytes = 8 [default = "a &#92;000 character"];</code>
       * @return This builder for chaining.
       */
      public Builder clearVBytes() {
        bitField0_ = (bitField0_ & ~0x00000080);
        vBytes_ = getDefaultInstance().getVBytes();
        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:foo.DefaultOptionalValues)
    }

    // @@protoc_insertion_point(class_scope:foo.DefaultOptionalValues)
    private static final foo.TestFull.DefaultOptionalValues DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.DefaultOptionalValues();
    }

    public static foo.TestFull.DefaultOptionalValues getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.DefaultOptionalValues getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LowerCaseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.LowerCase)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional .foo.LowerCase.CaseEnum value = 1 [default = lower];</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <code>optional .foo.LowerCase.CaseEnum value = 1 [default = lower];</code>
     * @return The value.
     */
    foo.TestFull.LowerCase.CaseEnum getValue();
  }
  /**
   * Protobuf type {@code foo.LowerCase}
   */
  public static final class LowerCase extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.LowerCase)
      LowerCaseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LowerCase.newBuilder() to construct.
    private LowerCase(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LowerCase() {
      value_ = 2;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_LowerCase_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_LowerCase_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.LowerCase.class, foo.TestFull.LowerCase.Builder.class);
    }

    /**
     * Protobuf enum {@code foo.LowerCase.CaseEnum}
     */
    public enum CaseEnum
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UPPER = 1;</code>
       */
      UPPER(1),
      /**
       * <code>lower = 2;</code>
       */
      lower(2),
      ;

      /**
       * <code>UPPER = 1;</code>
       */
      public static final int UPPER_VALUE = 1;
      /**
       * <code>lower = 2;</code>
       */
      public static final int lower_VALUE = 2;


      public final int getNumber() {
        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 CaseEnum 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 CaseEnum forNumber(int value) {
        switch (value) {
          case 1: return UPPER;
          case 2: return lower;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return foo.TestFull.LowerCase.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:foo.LowerCase.CaseEnum)
    }

    private int bitField0_;
    public static final int VALUE_FIELD_NUMBER = 1;
    private int value_ = 2;
    /**
     * <code>optional .foo.LowerCase.CaseEnum value = 1 [default = lower];</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override public boolean hasValue() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional .foo.LowerCase.CaseEnum value = 1 [default = lower];</code>
     * @return The value.
     */
    @java.lang.Override public foo.TestFull.LowerCase.CaseEnum getValue() {
      foo.TestFull.LowerCase.CaseEnum result = foo.TestFull.LowerCase.CaseEnum.forNumber(value_);
      return result == null ? foo.TestFull.LowerCase.CaseEnum.lower : result;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeEnum(1, value_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, value_);
      }
      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 foo.TestFull.LowerCase)) {
        return super.equals(obj);
      }
      foo.TestFull.LowerCase other = (foo.TestFull.LowerCase) obj;

      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (value_ != other.value_) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_LowerCase_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.LowerCase.class, foo.TestFull.LowerCase.Builder.class);
      }

      // Construct using foo.TestFull.LowerCase.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_LowerCase_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.LowerCase getDefaultInstanceForType() {
        return foo.TestFull.LowerCase.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.LowerCase build() {
        foo.TestFull.LowerCase result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.LowerCase buildPartial() {
        foo.TestFull.LowerCase result = new foo.TestFull.LowerCase(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.LowerCase result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.value_ = value_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_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 foo.TestFull.LowerCase) {
          return mergeFrom((foo.TestFull.LowerCase)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.LowerCase other) {
        if (other == foo.TestFull.LowerCase.getDefaultInstance()) return this;
        if (other.hasValue()) {
          setValue(other.getValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                int tmpRaw = input.readEnum();
                foo.TestFull.LowerCase.CaseEnum tmpValue =
                    foo.TestFull.LowerCase.CaseEnum.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(1, tmpRaw);
                } else {
                  value_ = tmpRaw;
                  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 value_ = 2;
      /**
       * <code>optional .foo.LowerCase.CaseEnum value = 1 [default = lower];</code>
       * @return Whether the value field is set.
       */
      @java.lang.Override public boolean hasValue() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .foo.LowerCase.CaseEnum value = 1 [default = lower];</code>
       * @return The value.
       */
      @java.lang.Override
      public foo.TestFull.LowerCase.CaseEnum getValue() {
        foo.TestFull.LowerCase.CaseEnum result = foo.TestFull.LowerCase.CaseEnum.forNumber(value_);
        return result == null ? foo.TestFull.LowerCase.CaseEnum.lower : result;
      }
      /**
       * <code>optional .foo.LowerCase.CaseEnum value = 1 [default = lower];</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(foo.TestFull.LowerCase.CaseEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        value_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.LowerCase.CaseEnum value = 1 [default = lower];</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = 2;
        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:foo.LowerCase)
    }

    // @@protoc_insertion_point(class_scope:foo.LowerCase)
    private static final foo.TestFull.LowerCase DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.LowerCase();
    }

    public static foo.TestFull.LowerCase getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.LowerCase getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AllocValuesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.AllocValues)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional bytes o_bytes = 1;</code>
     * @return Whether the oBytes field is set.
     */
    boolean hasOBytes();
    /**
     * <code>optional bytes o_bytes = 1;</code>
     * @return The oBytes.
     */
    com.google.protobuf.ByteString getOBytes();

    /**
     * <code>repeated string r_string = 2;</code>
     * @return A list containing the rString.
     */
    java.util.List<java.lang.String>
        getRStringList();
    /**
     * <code>repeated string r_string = 2;</code>
     * @return The count of rString.
     */
    int getRStringCount();
    /**
     * <code>repeated string r_string = 2;</code>
     * @param index The index of the element to return.
     * @return The rString at the given index.
     */
    java.lang.String getRString(int index);
    /**
     * <code>repeated string r_string = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the rString at the given index.
     */
    com.google.protobuf.ByteString
        getRStringBytes(int index);

    /**
     * <code>required string a_string = 3;</code>
     * @return Whether the aString field is set.
     */
    boolean hasAString();
    /**
     * <code>required string a_string = 3;</code>
     * @return The aString.
     */
    java.lang.String getAString();
    /**
     * <code>required string a_string = 3;</code>
     * @return The bytes for aString.
     */
    com.google.protobuf.ByteString
        getAStringBytes();

    /**
     * <code>required bytes a_bytes = 4;</code>
     * @return Whether the aBytes field is set.
     */
    boolean hasABytes();
    /**
     * <code>required bytes a_bytes = 4;</code>
     * @return The aBytes.
     */
    com.google.protobuf.ByteString getABytes();

    /**
     * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
     * @return Whether the aMess field is set.
     */
    boolean hasAMess();
    /**
     * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
     * @return The aMess.
     */
    foo.TestFull.DefaultRequiredValues getAMess();
    /**
     * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
     */
    foo.TestFull.DefaultRequiredValuesOrBuilder getAMessOrBuilder();
  }
  /**
   * Protobuf type {@code foo.AllocValues}
   */
  public static final class AllocValues extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.AllocValues)
      AllocValuesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AllocValues.newBuilder() to construct.
    private AllocValues(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AllocValues() {
      oBytes_ = com.google.protobuf.ByteString.EMPTY;
      rString_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      aString_ = "";
      aBytes_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_AllocValues_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_AllocValues_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.AllocValues.class, foo.TestFull.AllocValues.Builder.class);
    }

    private int bitField0_;
    public static final int O_BYTES_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString oBytes_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>optional bytes o_bytes = 1;</code>
     * @return Whether the oBytes field is set.
     */
    @java.lang.Override
    public boolean hasOBytes() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional bytes o_bytes = 1;</code>
     * @return The oBytes.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getOBytes() {
      return oBytes_;
    }

    public static final int R_STRING_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList rString_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <code>repeated string r_string = 2;</code>
     * @return A list containing the rString.
     */
    public com.google.protobuf.ProtocolStringList
        getRStringList() {
      return rString_;
    }
    /**
     * <code>repeated string r_string = 2;</code>
     * @return The count of rString.
     */
    public int getRStringCount() {
      return rString_.size();
    }
    /**
     * <code>repeated string r_string = 2;</code>
     * @param index The index of the element to return.
     * @return The rString at the given index.
     */
    public java.lang.String getRString(int index) {
      return rString_.get(index);
    }
    /**
     * <code>repeated string r_string = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the rString at the given index.
     */
    public com.google.protobuf.ByteString
        getRStringBytes(int index) {
      return rString_.getByteString(index);
    }

    public static final int A_STRING_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object aString_ = "";
    /**
     * <code>required string a_string = 3;</code>
     * @return Whether the aString field is set.
     */
    @java.lang.Override
    public boolean hasAString() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required string a_string = 3;</code>
     * @return The aString.
     */
    @java.lang.Override
    public java.lang.String getAString() {
      java.lang.Object ref = aString_;
      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 (bs.isValidUtf8()) {
          aString_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string a_string = 3;</code>
     * @return The bytes for aString.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAStringBytes() {
      java.lang.Object ref = aString_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        aString_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int A_BYTES_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString aBytes_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>required bytes a_bytes = 4;</code>
     * @return Whether the aBytes field is set.
     */
    @java.lang.Override
    public boolean hasABytes() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required bytes a_bytes = 4;</code>
     * @return The aBytes.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getABytes() {
      return aBytes_;
    }

    public static final int A_MESS_FIELD_NUMBER = 5;
    private foo.TestFull.DefaultRequiredValues aMess_;
    /**
     * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
     * @return Whether the aMess field is set.
     */
    @java.lang.Override
    public boolean hasAMess() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
     * @return The aMess.
     */
    @java.lang.Override
    public foo.TestFull.DefaultRequiredValues getAMess() {
      return aMess_ == null ? foo.TestFull.DefaultRequiredValues.getDefaultInstance() : aMess_;
    }
    /**
     * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
     */
    @java.lang.Override
    public foo.TestFull.DefaultRequiredValuesOrBuilder getAMessOrBuilder() {
      return aMess_ == null ? foo.TestFull.DefaultRequiredValues.getDefaultInstance() : aMess_;
    }

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

      if (!hasAString()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasABytes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAMess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAMess().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBytes(1, oBytes_);
      }
      for (int i = 0; i < rString_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, rString_.getRaw(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, aString_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBytes(4, aBytes_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(5, getAMess());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, oBytes_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < rString_.size(); i++) {
          dataSize += computeStringSizeNoTag(rString_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getRStringList().size();
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, aString_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, aBytes_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getAMess());
      }
      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 foo.TestFull.AllocValues)) {
        return super.equals(obj);
      }
      foo.TestFull.AllocValues other = (foo.TestFull.AllocValues) obj;

      if (hasOBytes() != other.hasOBytes()) return false;
      if (hasOBytes()) {
        if (!getOBytes()
            .equals(other.getOBytes())) return false;
      }
      if (!getRStringList()
          .equals(other.getRStringList())) return false;
      if (hasAString() != other.hasAString()) return false;
      if (hasAString()) {
        if (!getAString()
            .equals(other.getAString())) return false;
      }
      if (hasABytes() != other.hasABytes()) return false;
      if (hasABytes()) {
        if (!getABytes()
            .equals(other.getABytes())) return false;
      }
      if (hasAMess() != other.hasAMess()) return false;
      if (hasAMess()) {
        if (!getAMess()
            .equals(other.getAMess())) 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 (hasOBytes()) {
        hash = (37 * hash) + O_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + getOBytes().hashCode();
      }
      if (getRStringCount() > 0) {
        hash = (37 * hash) + R_STRING_FIELD_NUMBER;
        hash = (53 * hash) + getRStringList().hashCode();
      }
      if (hasAString()) {
        hash = (37 * hash) + A_STRING_FIELD_NUMBER;
        hash = (53 * hash) + getAString().hashCode();
      }
      if (hasABytes()) {
        hash = (37 * hash) + A_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + getABytes().hashCode();
      }
      if (hasAMess()) {
        hash = (37 * hash) + A_MESS_FIELD_NUMBER;
        hash = (53 * hash) + getAMess().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_AllocValues_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.AllocValues.class, foo.TestFull.AllocValues.Builder.class);
      }

      // Construct using foo.TestFull.AllocValues.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAMessFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        oBytes_ = com.google.protobuf.ByteString.EMPTY;
        rString_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        aString_ = "";
        aBytes_ = com.google.protobuf.ByteString.EMPTY;
        aMess_ = null;
        if (aMessBuilder_ != null) {
          aMessBuilder_.dispose();
          aMessBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_AllocValues_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.AllocValues getDefaultInstanceForType() {
        return foo.TestFull.AllocValues.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.AllocValues build() {
        foo.TestFull.AllocValues result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.AllocValues buildPartial() {
        foo.TestFull.AllocValues result = new foo.TestFull.AllocValues(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.AllocValues result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.oBytes_ = oBytes_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          rString_.makeImmutable();
          result.rString_ = rString_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.aString_ = aString_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.aBytes_ = aBytes_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.aMess_ = aMessBuilder_ == null
              ? aMess_
              : aMessBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        result.bitField0_ |= to_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 foo.TestFull.AllocValues) {
          return mergeFrom((foo.TestFull.AllocValues)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.AllocValues other) {
        if (other == foo.TestFull.AllocValues.getDefaultInstance()) return this;
        if (other.hasOBytes()) {
          setOBytes(other.getOBytes());
        }
        if (!other.rString_.isEmpty()) {
          if (rString_.isEmpty()) {
            rString_ = other.rString_;
            bitField0_ |= 0x00000002;
          } else {
            ensureRStringIsMutable();
            rString_.addAll(other.rString_);
          }
          onChanged();
        }
        if (other.hasAString()) {
          aString_ = other.aString_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasABytes()) {
          setABytes(other.getABytes());
        }
        if (other.hasAMess()) {
          mergeAMess(other.getAMess());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasAString()) {
          return false;
        }
        if (!hasABytes()) {
          return false;
        }
        if (!hasAMess()) {
          return false;
        }
        if (!getAMess().isInitialized()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                oBytes_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureRStringIsMutable();
                rString_.add(bs);
                break;
              } // case 18
              case 26: {
                aString_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                aBytes_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getAMessFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              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.ByteString oBytes_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes o_bytes = 1;</code>
       * @return Whether the oBytes field is set.
       */
      @java.lang.Override
      public boolean hasOBytes() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional bytes o_bytes = 1;</code>
       * @return The oBytes.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getOBytes() {
        return oBytes_;
      }
      /**
       * <code>optional bytes o_bytes = 1;</code>
       * @param value The oBytes to set.
       * @return This builder for chaining.
       */
      public Builder setOBytes(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        oBytes_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes o_bytes = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOBytes() {
        bitField0_ = (bitField0_ & ~0x00000001);
        oBytes_ = getDefaultInstance().getOBytes();
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList rString_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureRStringIsMutable() {
        if (!rString_.isModifiable()) {
          rString_ = new com.google.protobuf.LazyStringArrayList(rString_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <code>repeated string r_string = 2;</code>
       * @return A list containing the rString.
       */
      public com.google.protobuf.ProtocolStringList
          getRStringList() {
        rString_.makeImmutable();
        return rString_;
      }
      /**
       * <code>repeated string r_string = 2;</code>
       * @return The count of rString.
       */
      public int getRStringCount() {
        return rString_.size();
      }
      /**
       * <code>repeated string r_string = 2;</code>
       * @param index The index of the element to return.
       * @return The rString at the given index.
       */
      public java.lang.String getRString(int index) {
        return rString_.get(index);
      }
      /**
       * <code>repeated string r_string = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the rString at the given index.
       */
      public com.google.protobuf.ByteString
          getRStringBytes(int index) {
        return rString_.getByteString(index);
      }
      /**
       * <code>repeated string r_string = 2;</code>
       * @param index The index to set the value at.
       * @param value The rString to set.
       * @return This builder for chaining.
       */
      public Builder setRString(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureRStringIsMutable();
        rString_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string r_string = 2;</code>
       * @param value The rString to add.
       * @return This builder for chaining.
       */
      public Builder addRString(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureRStringIsMutable();
        rString_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string r_string = 2;</code>
       * @param values The rString to add.
       * @return This builder for chaining.
       */
      public Builder addAllRString(
          java.lang.Iterable<java.lang.String> values) {
        ensureRStringIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, rString_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string r_string = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRString() {
        rString_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string r_string = 2;</code>
       * @param value The bytes of the rString to add.
       * @return This builder for chaining.
       */
      public Builder addRStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureRStringIsMutable();
        rString_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object aString_ = "";
      /**
       * <code>required string a_string = 3;</code>
       * @return Whether the aString field is set.
       */
      public boolean hasAString() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required string a_string = 3;</code>
       * @return The aString.
       */
      public java.lang.String getAString() {
        java.lang.Object ref = aString_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            aString_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string a_string = 3;</code>
       * @return The bytes for aString.
       */
      public com.google.protobuf.ByteString
          getAStringBytes() {
        java.lang.Object ref = aString_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          aString_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string a_string = 3;</code>
       * @param value The aString to set.
       * @return This builder for chaining.
       */
      public Builder setAString(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        aString_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>required string a_string = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAString() {
        aString_ = getDefaultInstance().getAString();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>required string a_string = 3;</code>
       * @param value The bytes for aString to set.
       * @return This builder for chaining.
       */
      public Builder setAStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        aString_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString aBytes_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>required bytes a_bytes = 4;</code>
       * @return Whether the aBytes field is set.
       */
      @java.lang.Override
      public boolean hasABytes() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required bytes a_bytes = 4;</code>
       * @return The aBytes.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getABytes() {
        return aBytes_;
      }
      /**
       * <code>required bytes a_bytes = 4;</code>
       * @param value The aBytes to set.
       * @return This builder for chaining.
       */
      public Builder setABytes(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        aBytes_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>required bytes a_bytes = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearABytes() {
        bitField0_ = (bitField0_ & ~0x00000008);
        aBytes_ = getDefaultInstance().getABytes();
        onChanged();
        return this;
      }

      private foo.TestFull.DefaultRequiredValues aMess_;
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.DefaultRequiredValues, foo.TestFull.DefaultRequiredValues.Builder, foo.TestFull.DefaultRequiredValuesOrBuilder> aMessBuilder_;
      /**
       * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
       * @return Whether the aMess field is set.
       */
      public boolean hasAMess() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
       * @return The aMess.
       */
      public foo.TestFull.DefaultRequiredValues getAMess() {
        if (aMessBuilder_ == null) {
          return aMess_ == null ? foo.TestFull.DefaultRequiredValues.getDefaultInstance() : aMess_;
        } else {
          return aMessBuilder_.getMessage();
        }
      }
      /**
       * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
       */
      public Builder setAMess(foo.TestFull.DefaultRequiredValues value) {
        if (aMessBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          aMess_ = value;
        } else {
          aMessBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
       */
      public Builder setAMess(
          foo.TestFull.DefaultRequiredValues.Builder builderForValue) {
        if (aMessBuilder_ == null) {
          aMess_ = builderForValue.build();
        } else {
          aMessBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
       */
      public Builder mergeAMess(foo.TestFull.DefaultRequiredValues value) {
        if (aMessBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            aMess_ != null &&
            aMess_ != foo.TestFull.DefaultRequiredValues.getDefaultInstance()) {
            getAMessBuilder().mergeFrom(value);
          } else {
            aMess_ = value;
          }
        } else {
          aMessBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
       */
      public Builder clearAMess() {
        bitField0_ = (bitField0_ & ~0x00000010);
        aMess_ = null;
        if (aMessBuilder_ != null) {
          aMessBuilder_.dispose();
          aMessBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
       */
      public foo.TestFull.DefaultRequiredValues.Builder getAMessBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getAMessFieldBuilder().getBuilder();
      }
      /**
       * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
       */
      public foo.TestFull.DefaultRequiredValuesOrBuilder getAMessOrBuilder() {
        if (aMessBuilder_ != null) {
          return aMessBuilder_.getMessageOrBuilder();
        } else {
          return aMess_ == null ?
              foo.TestFull.DefaultRequiredValues.getDefaultInstance() : aMess_;
        }
      }
      /**
       * <code>required .foo.DefaultRequiredValues a_mess = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.DefaultRequiredValues, foo.TestFull.DefaultRequiredValues.Builder, foo.TestFull.DefaultRequiredValuesOrBuilder> 
          getAMessFieldBuilder() {
        if (aMessBuilder_ == null) {
          aMessBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              foo.TestFull.DefaultRequiredValues, foo.TestFull.DefaultRequiredValues.Builder, foo.TestFull.DefaultRequiredValuesOrBuilder>(
                  getAMess(),
                  getParentForChildren(),
                  isClean());
          aMess_ = null;
        }
        return aMessBuilder_;
      }
      @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:foo.AllocValues)
    }

    // @@protoc_insertion_point(class_scope:foo.AllocValues)
    private static final foo.TestFull.AllocValues DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.AllocValues();
    }

    public static foo.TestFull.AllocValues getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.AllocValues getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestRequiredFieldsBitmapOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestRequiredFieldsBitmap)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string field1 = 1;</code>
     * @return Whether the field1 field is set.
     */
    boolean hasField1();
    /**
     * <code>required string field1 = 1;</code>
     * @return The field1.
     */
    java.lang.String getField1();
    /**
     * <code>required string field1 = 1;</code>
     * @return The bytes for field1.
     */
    com.google.protobuf.ByteString
        getField1Bytes();

    /**
     * <code>optional string field2 = 2;</code>
     * @return Whether the field2 field is set.
     */
    boolean hasField2();
    /**
     * <code>optional string field2 = 2;</code>
     * @return The field2.
     */
    java.lang.String getField2();
    /**
     * <code>optional string field2 = 2;</code>
     * @return The bytes for field2.
     */
    com.google.protobuf.ByteString
        getField2Bytes();

    /**
     * <code>optional string field3 = 3;</code>
     * @return Whether the field3 field is set.
     */
    boolean hasField3();
    /**
     * <code>optional string field3 = 3;</code>
     * @return The field3.
     */
    java.lang.String getField3();
    /**
     * <code>optional string field3 = 3;</code>
     * @return The bytes for field3.
     */
    com.google.protobuf.ByteString
        getField3Bytes();

    /**
     * <code>optional string field4 = 4;</code>
     * @return Whether the field4 field is set.
     */
    boolean hasField4();
    /**
     * <code>optional string field4 = 4;</code>
     * @return The field4.
     */
    java.lang.String getField4();
    /**
     * <code>optional string field4 = 4;</code>
     * @return The bytes for field4.
     */
    com.google.protobuf.ByteString
        getField4Bytes();

    /**
     * <code>optional string field5 = 5;</code>
     * @return Whether the field5 field is set.
     */
    boolean hasField5();
    /**
     * <code>optional string field5 = 5;</code>
     * @return The field5.
     */
    java.lang.String getField5();
    /**
     * <code>optional string field5 = 5;</code>
     * @return The bytes for field5.
     */
    com.google.protobuf.ByteString
        getField5Bytes();

    /**
     * <code>optional string field6 = 6;</code>
     * @return Whether the field6 field is set.
     */
    boolean hasField6();
    /**
     * <code>optional string field6 = 6;</code>
     * @return The field6.
     */
    java.lang.String getField6();
    /**
     * <code>optional string field6 = 6;</code>
     * @return The bytes for field6.
     */
    com.google.protobuf.ByteString
        getField6Bytes();

    /**
     * <code>optional string field7 = 7;</code>
     * @return Whether the field7 field is set.
     */
    boolean hasField7();
    /**
     * <code>optional string field7 = 7;</code>
     * @return The field7.
     */
    java.lang.String getField7();
    /**
     * <code>optional string field7 = 7;</code>
     * @return The bytes for field7.
     */
    com.google.protobuf.ByteString
        getField7Bytes();

    /**
     * <code>optional string field8 = 8;</code>
     * @return Whether the field8 field is set.
     */
    boolean hasField8();
    /**
     * <code>optional string field8 = 8;</code>
     * @return The field8.
     */
    java.lang.String getField8();
    /**
     * <code>optional string field8 = 8;</code>
     * @return The bytes for field8.
     */
    com.google.protobuf.ByteString
        getField8Bytes();

    /**
     * <code>optional string field9 = 9;</code>
     * @return Whether the field9 field is set.
     */
    boolean hasField9();
    /**
     * <code>optional string field9 = 9;</code>
     * @return The field9.
     */
    java.lang.String getField9();
    /**
     * <code>optional string field9 = 9;</code>
     * @return The bytes for field9.
     */
    com.google.protobuf.ByteString
        getField9Bytes();

    /**
     * <code>optional string field10 = 10;</code>
     * @return Whether the field10 field is set.
     */
    boolean hasField10();
    /**
     * <code>optional string field10 = 10;</code>
     * @return The field10.
     */
    java.lang.String getField10();
    /**
     * <code>optional string field10 = 10;</code>
     * @return The bytes for field10.
     */
    com.google.protobuf.ByteString
        getField10Bytes();

    /**
     * <code>optional string field11 = 11;</code>
     * @return Whether the field11 field is set.
     */
    boolean hasField11();
    /**
     * <code>optional string field11 = 11;</code>
     * @return The field11.
     */
    java.lang.String getField11();
    /**
     * <code>optional string field11 = 11;</code>
     * @return The bytes for field11.
     */
    com.google.protobuf.ByteString
        getField11Bytes();

    /**
     * <code>optional string field12 = 12;</code>
     * @return Whether the field12 field is set.
     */
    boolean hasField12();
    /**
     * <code>optional string field12 = 12;</code>
     * @return The field12.
     */
    java.lang.String getField12();
    /**
     * <code>optional string field12 = 12;</code>
     * @return The bytes for field12.
     */
    com.google.protobuf.ByteString
        getField12Bytes();

    /**
     * <code>optional string field13 = 13;</code>
     * @return Whether the field13 field is set.
     */
    boolean hasField13();
    /**
     * <code>optional string field13 = 13;</code>
     * @return The field13.
     */
    java.lang.String getField13();
    /**
     * <code>optional string field13 = 13;</code>
     * @return The bytes for field13.
     */
    com.google.protobuf.ByteString
        getField13Bytes();

    /**
     * <code>optional string field14 = 14;</code>
     * @return Whether the field14 field is set.
     */
    boolean hasField14();
    /**
     * <code>optional string field14 = 14;</code>
     * @return The field14.
     */
    java.lang.String getField14();
    /**
     * <code>optional string field14 = 14;</code>
     * @return The bytes for field14.
     */
    com.google.protobuf.ByteString
        getField14Bytes();

    /**
     * <code>optional string field15 = 15;</code>
     * @return Whether the field15 field is set.
     */
    boolean hasField15();
    /**
     * <code>optional string field15 = 15;</code>
     * @return The field15.
     */
    java.lang.String getField15();
    /**
     * <code>optional string field15 = 15;</code>
     * @return The bytes for field15.
     */
    com.google.protobuf.ByteString
        getField15Bytes();

    /**
     * <code>optional string field16 = 16;</code>
     * @return Whether the field16 field is set.
     */
    boolean hasField16();
    /**
     * <code>optional string field16 = 16;</code>
     * @return The field16.
     */
    java.lang.String getField16();
    /**
     * <code>optional string field16 = 16;</code>
     * @return The bytes for field16.
     */
    com.google.protobuf.ByteString
        getField16Bytes();

    /**
     * <code>optional string field17 = 17;</code>
     * @return Whether the field17 field is set.
     */
    boolean hasField17();
    /**
     * <code>optional string field17 = 17;</code>
     * @return The field17.
     */
    java.lang.String getField17();
    /**
     * <code>optional string field17 = 17;</code>
     * @return The bytes for field17.
     */
    com.google.protobuf.ByteString
        getField17Bytes();

    /**
     * <code>optional string field18 = 18;</code>
     * @return Whether the field18 field is set.
     */
    boolean hasField18();
    /**
     * <code>optional string field18 = 18;</code>
     * @return The field18.
     */
    java.lang.String getField18();
    /**
     * <code>optional string field18 = 18;</code>
     * @return The bytes for field18.
     */
    com.google.protobuf.ByteString
        getField18Bytes();

    /**
     * <code>optional string field19 = 19;</code>
     * @return Whether the field19 field is set.
     */
    boolean hasField19();
    /**
     * <code>optional string field19 = 19;</code>
     * @return The field19.
     */
    java.lang.String getField19();
    /**
     * <code>optional string field19 = 19;</code>
     * @return The bytes for field19.
     */
    com.google.protobuf.ByteString
        getField19Bytes();

    /**
     * <code>optional string field20 = 20;</code>
     * @return Whether the field20 field is set.
     */
    boolean hasField20();
    /**
     * <code>optional string field20 = 20;</code>
     * @return The field20.
     */
    java.lang.String getField20();
    /**
     * <code>optional string field20 = 20;</code>
     * @return The bytes for field20.
     */
    com.google.protobuf.ByteString
        getField20Bytes();

    /**
     * <code>optional string field21 = 21;</code>
     * @return Whether the field21 field is set.
     */
    boolean hasField21();
    /**
     * <code>optional string field21 = 21;</code>
     * @return The field21.
     */
    java.lang.String getField21();
    /**
     * <code>optional string field21 = 21;</code>
     * @return The bytes for field21.
     */
    com.google.protobuf.ByteString
        getField21Bytes();

    /**
     * <code>optional string field22 = 22;</code>
     * @return Whether the field22 field is set.
     */
    boolean hasField22();
    /**
     * <code>optional string field22 = 22;</code>
     * @return The field22.
     */
    java.lang.String getField22();
    /**
     * <code>optional string field22 = 22;</code>
     * @return The bytes for field22.
     */
    com.google.protobuf.ByteString
        getField22Bytes();

    /**
     * <code>optional string field23 = 23;</code>
     * @return Whether the field23 field is set.
     */
    boolean hasField23();
    /**
     * <code>optional string field23 = 23;</code>
     * @return The field23.
     */
    java.lang.String getField23();
    /**
     * <code>optional string field23 = 23;</code>
     * @return The bytes for field23.
     */
    com.google.protobuf.ByteString
        getField23Bytes();

    /**
     * <code>optional string field24 = 24;</code>
     * @return Whether the field24 field is set.
     */
    boolean hasField24();
    /**
     * <code>optional string field24 = 24;</code>
     * @return The field24.
     */
    java.lang.String getField24();
    /**
     * <code>optional string field24 = 24;</code>
     * @return The bytes for field24.
     */
    com.google.protobuf.ByteString
        getField24Bytes();

    /**
     * <code>optional string field25 = 25;</code>
     * @return Whether the field25 field is set.
     */
    boolean hasField25();
    /**
     * <code>optional string field25 = 25;</code>
     * @return The field25.
     */
    java.lang.String getField25();
    /**
     * <code>optional string field25 = 25;</code>
     * @return The bytes for field25.
     */
    com.google.protobuf.ByteString
        getField25Bytes();

    /**
     * <code>optional string field26 = 26;</code>
     * @return Whether the field26 field is set.
     */
    boolean hasField26();
    /**
     * <code>optional string field26 = 26;</code>
     * @return The field26.
     */
    java.lang.String getField26();
    /**
     * <code>optional string field26 = 26;</code>
     * @return The bytes for field26.
     */
    com.google.protobuf.ByteString
        getField26Bytes();

    /**
     * <code>optional string field27 = 27;</code>
     * @return Whether the field27 field is set.
     */
    boolean hasField27();
    /**
     * <code>optional string field27 = 27;</code>
     * @return The field27.
     */
    java.lang.String getField27();
    /**
     * <code>optional string field27 = 27;</code>
     * @return The bytes for field27.
     */
    com.google.protobuf.ByteString
        getField27Bytes();

    /**
     * <code>optional string field28 = 28;</code>
     * @return Whether the field28 field is set.
     */
    boolean hasField28();
    /**
     * <code>optional string field28 = 28;</code>
     * @return The field28.
     */
    java.lang.String getField28();
    /**
     * <code>optional string field28 = 28;</code>
     * @return The bytes for field28.
     */
    com.google.protobuf.ByteString
        getField28Bytes();

    /**
     * <code>optional string field29 = 29;</code>
     * @return Whether the field29 field is set.
     */
    boolean hasField29();
    /**
     * <code>optional string field29 = 29;</code>
     * @return The field29.
     */
    java.lang.String getField29();
    /**
     * <code>optional string field29 = 29;</code>
     * @return The bytes for field29.
     */
    com.google.protobuf.ByteString
        getField29Bytes();

    /**
     * <code>optional string field30 = 30;</code>
     * @return Whether the field30 field is set.
     */
    boolean hasField30();
    /**
     * <code>optional string field30 = 30;</code>
     * @return The field30.
     */
    java.lang.String getField30();
    /**
     * <code>optional string field30 = 30;</code>
     * @return The bytes for field30.
     */
    com.google.protobuf.ByteString
        getField30Bytes();

    /**
     * <code>optional string field31 = 31;</code>
     * @return Whether the field31 field is set.
     */
    boolean hasField31();
    /**
     * <code>optional string field31 = 31;</code>
     * @return The field31.
     */
    java.lang.String getField31();
    /**
     * <code>optional string field31 = 31;</code>
     * @return The bytes for field31.
     */
    com.google.protobuf.ByteString
        getField31Bytes();

    /**
     * <code>optional string field32 = 32;</code>
     * @return Whether the field32 field is set.
     */
    boolean hasField32();
    /**
     * <code>optional string field32 = 32;</code>
     * @return The field32.
     */
    java.lang.String getField32();
    /**
     * <code>optional string field32 = 32;</code>
     * @return The bytes for field32.
     */
    com.google.protobuf.ByteString
        getField32Bytes();

    /**
     * <code>optional string field33 = 33;</code>
     * @return Whether the field33 field is set.
     */
    boolean hasField33();
    /**
     * <code>optional string field33 = 33;</code>
     * @return The field33.
     */
    java.lang.String getField33();
    /**
     * <code>optional string field33 = 33;</code>
     * @return The bytes for field33.
     */
    com.google.protobuf.ByteString
        getField33Bytes();

    /**
     * <code>optional string field34 = 34;</code>
     * @return Whether the field34 field is set.
     */
    boolean hasField34();
    /**
     * <code>optional string field34 = 34;</code>
     * @return The field34.
     */
    java.lang.String getField34();
    /**
     * <code>optional string field34 = 34;</code>
     * @return The bytes for field34.
     */
    com.google.protobuf.ByteString
        getField34Bytes();

    /**
     * <code>optional string field35 = 35;</code>
     * @return Whether the field35 field is set.
     */
    boolean hasField35();
    /**
     * <code>optional string field35 = 35;</code>
     * @return The field35.
     */
    java.lang.String getField35();
    /**
     * <code>optional string field35 = 35;</code>
     * @return The bytes for field35.
     */
    com.google.protobuf.ByteString
        getField35Bytes();

    /**
     * <code>optional string field36 = 36;</code>
     * @return Whether the field36 field is set.
     */
    boolean hasField36();
    /**
     * <code>optional string field36 = 36;</code>
     * @return The field36.
     */
    java.lang.String getField36();
    /**
     * <code>optional string field36 = 36;</code>
     * @return The bytes for field36.
     */
    com.google.protobuf.ByteString
        getField36Bytes();

    /**
     * <code>optional string field37 = 37;</code>
     * @return Whether the field37 field is set.
     */
    boolean hasField37();
    /**
     * <code>optional string field37 = 37;</code>
     * @return The field37.
     */
    java.lang.String getField37();
    /**
     * <code>optional string field37 = 37;</code>
     * @return The bytes for field37.
     */
    com.google.protobuf.ByteString
        getField37Bytes();

    /**
     * <code>optional string field38 = 38;</code>
     * @return Whether the field38 field is set.
     */
    boolean hasField38();
    /**
     * <code>optional string field38 = 38;</code>
     * @return The field38.
     */
    java.lang.String getField38();
    /**
     * <code>optional string field38 = 38;</code>
     * @return The bytes for field38.
     */
    com.google.protobuf.ByteString
        getField38Bytes();

    /**
     * <code>optional string field39 = 39;</code>
     * @return Whether the field39 field is set.
     */
    boolean hasField39();
    /**
     * <code>optional string field39 = 39;</code>
     * @return The field39.
     */
    java.lang.String getField39();
    /**
     * <code>optional string field39 = 39;</code>
     * @return The bytes for field39.
     */
    com.google.protobuf.ByteString
        getField39Bytes();

    /**
     * <code>optional string field40 = 40;</code>
     * @return Whether the field40 field is set.
     */
    boolean hasField40();
    /**
     * <code>optional string field40 = 40;</code>
     * @return The field40.
     */
    java.lang.String getField40();
    /**
     * <code>optional string field40 = 40;</code>
     * @return The bytes for field40.
     */
    com.google.protobuf.ByteString
        getField40Bytes();

    /**
     * <code>optional string field41 = 41;</code>
     * @return Whether the field41 field is set.
     */
    boolean hasField41();
    /**
     * <code>optional string field41 = 41;</code>
     * @return The field41.
     */
    java.lang.String getField41();
    /**
     * <code>optional string field41 = 41;</code>
     * @return The bytes for field41.
     */
    com.google.protobuf.ByteString
        getField41Bytes();

    /**
     * <code>optional string field42 = 42;</code>
     * @return Whether the field42 field is set.
     */
    boolean hasField42();
    /**
     * <code>optional string field42 = 42;</code>
     * @return The field42.
     */
    java.lang.String getField42();
    /**
     * <code>optional string field42 = 42;</code>
     * @return The bytes for field42.
     */
    com.google.protobuf.ByteString
        getField42Bytes();

    /**
     * <code>optional string field43 = 43;</code>
     * @return Whether the field43 field is set.
     */
    boolean hasField43();
    /**
     * <code>optional string field43 = 43;</code>
     * @return The field43.
     */
    java.lang.String getField43();
    /**
     * <code>optional string field43 = 43;</code>
     * @return The bytes for field43.
     */
    com.google.protobuf.ByteString
        getField43Bytes();

    /**
     * <code>optional string field44 = 44;</code>
     * @return Whether the field44 field is set.
     */
    boolean hasField44();
    /**
     * <code>optional string field44 = 44;</code>
     * @return The field44.
     */
    java.lang.String getField44();
    /**
     * <code>optional string field44 = 44;</code>
     * @return The bytes for field44.
     */
    com.google.protobuf.ByteString
        getField44Bytes();

    /**
     * <code>optional string field45 = 45;</code>
     * @return Whether the field45 field is set.
     */
    boolean hasField45();
    /**
     * <code>optional string field45 = 45;</code>
     * @return The field45.
     */
    java.lang.String getField45();
    /**
     * <code>optional string field45 = 45;</code>
     * @return The bytes for field45.
     */
    com.google.protobuf.ByteString
        getField45Bytes();

    /**
     * <code>optional string field46 = 46;</code>
     * @return Whether the field46 field is set.
     */
    boolean hasField46();
    /**
     * <code>optional string field46 = 46;</code>
     * @return The field46.
     */
    java.lang.String getField46();
    /**
     * <code>optional string field46 = 46;</code>
     * @return The bytes for field46.
     */
    com.google.protobuf.ByteString
        getField46Bytes();

    /**
     * <code>optional string field47 = 47;</code>
     * @return Whether the field47 field is set.
     */
    boolean hasField47();
    /**
     * <code>optional string field47 = 47;</code>
     * @return The field47.
     */
    java.lang.String getField47();
    /**
     * <code>optional string field47 = 47;</code>
     * @return The bytes for field47.
     */
    com.google.protobuf.ByteString
        getField47Bytes();

    /**
     * <code>optional string field48 = 48;</code>
     * @return Whether the field48 field is set.
     */
    boolean hasField48();
    /**
     * <code>optional string field48 = 48;</code>
     * @return The field48.
     */
    java.lang.String getField48();
    /**
     * <code>optional string field48 = 48;</code>
     * @return The bytes for field48.
     */
    com.google.protobuf.ByteString
        getField48Bytes();

    /**
     * <code>optional string field49 = 49;</code>
     * @return Whether the field49 field is set.
     */
    boolean hasField49();
    /**
     * <code>optional string field49 = 49;</code>
     * @return The field49.
     */
    java.lang.String getField49();
    /**
     * <code>optional string field49 = 49;</code>
     * @return The bytes for field49.
     */
    com.google.protobuf.ByteString
        getField49Bytes();

    /**
     * <code>optional string field50 = 50;</code>
     * @return Whether the field50 field is set.
     */
    boolean hasField50();
    /**
     * <code>optional string field50 = 50;</code>
     * @return The field50.
     */
    java.lang.String getField50();
    /**
     * <code>optional string field50 = 50;</code>
     * @return The bytes for field50.
     */
    com.google.protobuf.ByteString
        getField50Bytes();

    /**
     * <code>optional string field51 = 51;</code>
     * @return Whether the field51 field is set.
     */
    boolean hasField51();
    /**
     * <code>optional string field51 = 51;</code>
     * @return The field51.
     */
    java.lang.String getField51();
    /**
     * <code>optional string field51 = 51;</code>
     * @return The bytes for field51.
     */
    com.google.protobuf.ByteString
        getField51Bytes();

    /**
     * <code>optional string field52 = 52;</code>
     * @return Whether the field52 field is set.
     */
    boolean hasField52();
    /**
     * <code>optional string field52 = 52;</code>
     * @return The field52.
     */
    java.lang.String getField52();
    /**
     * <code>optional string field52 = 52;</code>
     * @return The bytes for field52.
     */
    com.google.protobuf.ByteString
        getField52Bytes();

    /**
     * <code>optional string field53 = 53;</code>
     * @return Whether the field53 field is set.
     */
    boolean hasField53();
    /**
     * <code>optional string field53 = 53;</code>
     * @return The field53.
     */
    java.lang.String getField53();
    /**
     * <code>optional string field53 = 53;</code>
     * @return The bytes for field53.
     */
    com.google.protobuf.ByteString
        getField53Bytes();

    /**
     * <code>optional string field54 = 54;</code>
     * @return Whether the field54 field is set.
     */
    boolean hasField54();
    /**
     * <code>optional string field54 = 54;</code>
     * @return The field54.
     */
    java.lang.String getField54();
    /**
     * <code>optional string field54 = 54;</code>
     * @return The bytes for field54.
     */
    com.google.protobuf.ByteString
        getField54Bytes();

    /**
     * <code>optional string field55 = 55;</code>
     * @return Whether the field55 field is set.
     */
    boolean hasField55();
    /**
     * <code>optional string field55 = 55;</code>
     * @return The field55.
     */
    java.lang.String getField55();
    /**
     * <code>optional string field55 = 55;</code>
     * @return The bytes for field55.
     */
    com.google.protobuf.ByteString
        getField55Bytes();

    /**
     * <code>optional string field56 = 56;</code>
     * @return Whether the field56 field is set.
     */
    boolean hasField56();
    /**
     * <code>optional string field56 = 56;</code>
     * @return The field56.
     */
    java.lang.String getField56();
    /**
     * <code>optional string field56 = 56;</code>
     * @return The bytes for field56.
     */
    com.google.protobuf.ByteString
        getField56Bytes();

    /**
     * <code>optional string field57 = 57;</code>
     * @return Whether the field57 field is set.
     */
    boolean hasField57();
    /**
     * <code>optional string field57 = 57;</code>
     * @return The field57.
     */
    java.lang.String getField57();
    /**
     * <code>optional string field57 = 57;</code>
     * @return The bytes for field57.
     */
    com.google.protobuf.ByteString
        getField57Bytes();

    /**
     * <code>optional string field58 = 58;</code>
     * @return Whether the field58 field is set.
     */
    boolean hasField58();
    /**
     * <code>optional string field58 = 58;</code>
     * @return The field58.
     */
    java.lang.String getField58();
    /**
     * <code>optional string field58 = 58;</code>
     * @return The bytes for field58.
     */
    com.google.protobuf.ByteString
        getField58Bytes();

    /**
     * <code>optional string field59 = 59;</code>
     * @return Whether the field59 field is set.
     */
    boolean hasField59();
    /**
     * <code>optional string field59 = 59;</code>
     * @return The field59.
     */
    java.lang.String getField59();
    /**
     * <code>optional string field59 = 59;</code>
     * @return The bytes for field59.
     */
    com.google.protobuf.ByteString
        getField59Bytes();

    /**
     * <code>optional string field60 = 60;</code>
     * @return Whether the field60 field is set.
     */
    boolean hasField60();
    /**
     * <code>optional string field60 = 60;</code>
     * @return The field60.
     */
    java.lang.String getField60();
    /**
     * <code>optional string field60 = 60;</code>
     * @return The bytes for field60.
     */
    com.google.protobuf.ByteString
        getField60Bytes();

    /**
     * <code>optional string field61 = 61;</code>
     * @return Whether the field61 field is set.
     */
    boolean hasField61();
    /**
     * <code>optional string field61 = 61;</code>
     * @return The field61.
     */
    java.lang.String getField61();
    /**
     * <code>optional string field61 = 61;</code>
     * @return The bytes for field61.
     */
    com.google.protobuf.ByteString
        getField61Bytes();

    /**
     * <code>optional string field62 = 62;</code>
     * @return Whether the field62 field is set.
     */
    boolean hasField62();
    /**
     * <code>optional string field62 = 62;</code>
     * @return The field62.
     */
    java.lang.String getField62();
    /**
     * <code>optional string field62 = 62;</code>
     * @return The bytes for field62.
     */
    com.google.protobuf.ByteString
        getField62Bytes();

    /**
     * <code>optional string field63 = 63;</code>
     * @return Whether the field63 field is set.
     */
    boolean hasField63();
    /**
     * <code>optional string field63 = 63;</code>
     * @return The field63.
     */
    java.lang.String getField63();
    /**
     * <code>optional string field63 = 63;</code>
     * @return The bytes for field63.
     */
    com.google.protobuf.ByteString
        getField63Bytes();

    /**
     * <code>optional string field64 = 64;</code>
     * @return Whether the field64 field is set.
     */
    boolean hasField64();
    /**
     * <code>optional string field64 = 64;</code>
     * @return The field64.
     */
    java.lang.String getField64();
    /**
     * <code>optional string field64 = 64;</code>
     * @return The bytes for field64.
     */
    com.google.protobuf.ByteString
        getField64Bytes();

    /**
     * <code>optional string field65 = 65;</code>
     * @return Whether the field65 field is set.
     */
    boolean hasField65();
    /**
     * <code>optional string field65 = 65;</code>
     * @return The field65.
     */
    java.lang.String getField65();
    /**
     * <code>optional string field65 = 65;</code>
     * @return The bytes for field65.
     */
    com.google.protobuf.ByteString
        getField65Bytes();

    /**
     * <code>optional string field66 = 66;</code>
     * @return Whether the field66 field is set.
     */
    boolean hasField66();
    /**
     * <code>optional string field66 = 66;</code>
     * @return The field66.
     */
    java.lang.String getField66();
    /**
     * <code>optional string field66 = 66;</code>
     * @return The bytes for field66.
     */
    com.google.protobuf.ByteString
        getField66Bytes();

    /**
     * <code>optional string field67 = 67;</code>
     * @return Whether the field67 field is set.
     */
    boolean hasField67();
    /**
     * <code>optional string field67 = 67;</code>
     * @return The field67.
     */
    java.lang.String getField67();
    /**
     * <code>optional string field67 = 67;</code>
     * @return The bytes for field67.
     */
    com.google.protobuf.ByteString
        getField67Bytes();

    /**
     * <code>optional string field68 = 68;</code>
     * @return Whether the field68 field is set.
     */
    boolean hasField68();
    /**
     * <code>optional string field68 = 68;</code>
     * @return The field68.
     */
    java.lang.String getField68();
    /**
     * <code>optional string field68 = 68;</code>
     * @return The bytes for field68.
     */
    com.google.protobuf.ByteString
        getField68Bytes();

    /**
     * <code>optional string field69 = 69;</code>
     * @return Whether the field69 field is set.
     */
    boolean hasField69();
    /**
     * <code>optional string field69 = 69;</code>
     * @return The field69.
     */
    java.lang.String getField69();
    /**
     * <code>optional string field69 = 69;</code>
     * @return The bytes for field69.
     */
    com.google.protobuf.ByteString
        getField69Bytes();

    /**
     * <code>optional string field70 = 70;</code>
     * @return Whether the field70 field is set.
     */
    boolean hasField70();
    /**
     * <code>optional string field70 = 70;</code>
     * @return The field70.
     */
    java.lang.String getField70();
    /**
     * <code>optional string field70 = 70;</code>
     * @return The bytes for field70.
     */
    com.google.protobuf.ByteString
        getField70Bytes();

    /**
     * <code>optional string field71 = 71;</code>
     * @return Whether the field71 field is set.
     */
    boolean hasField71();
    /**
     * <code>optional string field71 = 71;</code>
     * @return The field71.
     */
    java.lang.String getField71();
    /**
     * <code>optional string field71 = 71;</code>
     * @return The bytes for field71.
     */
    com.google.protobuf.ByteString
        getField71Bytes();

    /**
     * <code>optional string field72 = 72;</code>
     * @return Whether the field72 field is set.
     */
    boolean hasField72();
    /**
     * <code>optional string field72 = 72;</code>
     * @return The field72.
     */
    java.lang.String getField72();
    /**
     * <code>optional string field72 = 72;</code>
     * @return The bytes for field72.
     */
    com.google.protobuf.ByteString
        getField72Bytes();

    /**
     * <code>optional string field73 = 73;</code>
     * @return Whether the field73 field is set.
     */
    boolean hasField73();
    /**
     * <code>optional string field73 = 73;</code>
     * @return The field73.
     */
    java.lang.String getField73();
    /**
     * <code>optional string field73 = 73;</code>
     * @return The bytes for field73.
     */
    com.google.protobuf.ByteString
        getField73Bytes();

    /**
     * <code>optional string field74 = 74;</code>
     * @return Whether the field74 field is set.
     */
    boolean hasField74();
    /**
     * <code>optional string field74 = 74;</code>
     * @return The field74.
     */
    java.lang.String getField74();
    /**
     * <code>optional string field74 = 74;</code>
     * @return The bytes for field74.
     */
    com.google.protobuf.ByteString
        getField74Bytes();

    /**
     * <code>optional string field75 = 75;</code>
     * @return Whether the field75 field is set.
     */
    boolean hasField75();
    /**
     * <code>optional string field75 = 75;</code>
     * @return The field75.
     */
    java.lang.String getField75();
    /**
     * <code>optional string field75 = 75;</code>
     * @return The bytes for field75.
     */
    com.google.protobuf.ByteString
        getField75Bytes();

    /**
     * <code>optional string field76 = 76;</code>
     * @return Whether the field76 field is set.
     */
    boolean hasField76();
    /**
     * <code>optional string field76 = 76;</code>
     * @return The field76.
     */
    java.lang.String getField76();
    /**
     * <code>optional string field76 = 76;</code>
     * @return The bytes for field76.
     */
    com.google.protobuf.ByteString
        getField76Bytes();

    /**
     * <code>optional string field77 = 77;</code>
     * @return Whether the field77 field is set.
     */
    boolean hasField77();
    /**
     * <code>optional string field77 = 77;</code>
     * @return The field77.
     */
    java.lang.String getField77();
    /**
     * <code>optional string field77 = 77;</code>
     * @return The bytes for field77.
     */
    com.google.protobuf.ByteString
        getField77Bytes();

    /**
     * <code>optional string field78 = 78;</code>
     * @return Whether the field78 field is set.
     */
    boolean hasField78();
    /**
     * <code>optional string field78 = 78;</code>
     * @return The field78.
     */
    java.lang.String getField78();
    /**
     * <code>optional string field78 = 78;</code>
     * @return The bytes for field78.
     */
    com.google.protobuf.ByteString
        getField78Bytes();

    /**
     * <code>optional string field79 = 79;</code>
     * @return Whether the field79 field is set.
     */
    boolean hasField79();
    /**
     * <code>optional string field79 = 79;</code>
     * @return The field79.
     */
    java.lang.String getField79();
    /**
     * <code>optional string field79 = 79;</code>
     * @return The bytes for field79.
     */
    com.google.protobuf.ByteString
        getField79Bytes();

    /**
     * <code>optional string field80 = 80;</code>
     * @return Whether the field80 field is set.
     */
    boolean hasField80();
    /**
     * <code>optional string field80 = 80;</code>
     * @return The field80.
     */
    java.lang.String getField80();
    /**
     * <code>optional string field80 = 80;</code>
     * @return The bytes for field80.
     */
    com.google.protobuf.ByteString
        getField80Bytes();

    /**
     * <code>optional string field81 = 81;</code>
     * @return Whether the field81 field is set.
     */
    boolean hasField81();
    /**
     * <code>optional string field81 = 81;</code>
     * @return The field81.
     */
    java.lang.String getField81();
    /**
     * <code>optional string field81 = 81;</code>
     * @return The bytes for field81.
     */
    com.google.protobuf.ByteString
        getField81Bytes();

    /**
     * <code>optional string field82 = 82;</code>
     * @return Whether the field82 field is set.
     */
    boolean hasField82();
    /**
     * <code>optional string field82 = 82;</code>
     * @return The field82.
     */
    java.lang.String getField82();
    /**
     * <code>optional string field82 = 82;</code>
     * @return The bytes for field82.
     */
    com.google.protobuf.ByteString
        getField82Bytes();

    /**
     * <code>optional string field83 = 83;</code>
     * @return Whether the field83 field is set.
     */
    boolean hasField83();
    /**
     * <code>optional string field83 = 83;</code>
     * @return The field83.
     */
    java.lang.String getField83();
    /**
     * <code>optional string field83 = 83;</code>
     * @return The bytes for field83.
     */
    com.google.protobuf.ByteString
        getField83Bytes();

    /**
     * <code>optional string field84 = 84;</code>
     * @return Whether the field84 field is set.
     */
    boolean hasField84();
    /**
     * <code>optional string field84 = 84;</code>
     * @return The field84.
     */
    java.lang.String getField84();
    /**
     * <code>optional string field84 = 84;</code>
     * @return The bytes for field84.
     */
    com.google.protobuf.ByteString
        getField84Bytes();

    /**
     * <code>optional string field85 = 85;</code>
     * @return Whether the field85 field is set.
     */
    boolean hasField85();
    /**
     * <code>optional string field85 = 85;</code>
     * @return The field85.
     */
    java.lang.String getField85();
    /**
     * <code>optional string field85 = 85;</code>
     * @return The bytes for field85.
     */
    com.google.protobuf.ByteString
        getField85Bytes();

    /**
     * <code>optional string field86 = 86;</code>
     * @return Whether the field86 field is set.
     */
    boolean hasField86();
    /**
     * <code>optional string field86 = 86;</code>
     * @return The field86.
     */
    java.lang.String getField86();
    /**
     * <code>optional string field86 = 86;</code>
     * @return The bytes for field86.
     */
    com.google.protobuf.ByteString
        getField86Bytes();

    /**
     * <code>optional string field87 = 87;</code>
     * @return Whether the field87 field is set.
     */
    boolean hasField87();
    /**
     * <code>optional string field87 = 87;</code>
     * @return The field87.
     */
    java.lang.String getField87();
    /**
     * <code>optional string field87 = 87;</code>
     * @return The bytes for field87.
     */
    com.google.protobuf.ByteString
        getField87Bytes();

    /**
     * <code>optional string field88 = 88;</code>
     * @return Whether the field88 field is set.
     */
    boolean hasField88();
    /**
     * <code>optional string field88 = 88;</code>
     * @return The field88.
     */
    java.lang.String getField88();
    /**
     * <code>optional string field88 = 88;</code>
     * @return The bytes for field88.
     */
    com.google.protobuf.ByteString
        getField88Bytes();

    /**
     * <code>optional string field89 = 89;</code>
     * @return Whether the field89 field is set.
     */
    boolean hasField89();
    /**
     * <code>optional string field89 = 89;</code>
     * @return The field89.
     */
    java.lang.String getField89();
    /**
     * <code>optional string field89 = 89;</code>
     * @return The bytes for field89.
     */
    com.google.protobuf.ByteString
        getField89Bytes();

    /**
     * <code>optional string field90 = 90;</code>
     * @return Whether the field90 field is set.
     */
    boolean hasField90();
    /**
     * <code>optional string field90 = 90;</code>
     * @return The field90.
     */
    java.lang.String getField90();
    /**
     * <code>optional string field90 = 90;</code>
     * @return The bytes for field90.
     */
    com.google.protobuf.ByteString
        getField90Bytes();

    /**
     * <code>optional string field91 = 91;</code>
     * @return Whether the field91 field is set.
     */
    boolean hasField91();
    /**
     * <code>optional string field91 = 91;</code>
     * @return The field91.
     */
    java.lang.String getField91();
    /**
     * <code>optional string field91 = 91;</code>
     * @return The bytes for field91.
     */
    com.google.protobuf.ByteString
        getField91Bytes();

    /**
     * <code>optional string field92 = 92;</code>
     * @return Whether the field92 field is set.
     */
    boolean hasField92();
    /**
     * <code>optional string field92 = 92;</code>
     * @return The field92.
     */
    java.lang.String getField92();
    /**
     * <code>optional string field92 = 92;</code>
     * @return The bytes for field92.
     */
    com.google.protobuf.ByteString
        getField92Bytes();

    /**
     * <code>optional string field93 = 93;</code>
     * @return Whether the field93 field is set.
     */
    boolean hasField93();
    /**
     * <code>optional string field93 = 93;</code>
     * @return The field93.
     */
    java.lang.String getField93();
    /**
     * <code>optional string field93 = 93;</code>
     * @return The bytes for field93.
     */
    com.google.protobuf.ByteString
        getField93Bytes();

    /**
     * <code>optional string field94 = 94;</code>
     * @return Whether the field94 field is set.
     */
    boolean hasField94();
    /**
     * <code>optional string field94 = 94;</code>
     * @return The field94.
     */
    java.lang.String getField94();
    /**
     * <code>optional string field94 = 94;</code>
     * @return The bytes for field94.
     */
    com.google.protobuf.ByteString
        getField94Bytes();

    /**
     * <code>optional string field95 = 95;</code>
     * @return Whether the field95 field is set.
     */
    boolean hasField95();
    /**
     * <code>optional string field95 = 95;</code>
     * @return The field95.
     */
    java.lang.String getField95();
    /**
     * <code>optional string field95 = 95;</code>
     * @return The bytes for field95.
     */
    com.google.protobuf.ByteString
        getField95Bytes();

    /**
     * <code>optional string field96 = 96;</code>
     * @return Whether the field96 field is set.
     */
    boolean hasField96();
    /**
     * <code>optional string field96 = 96;</code>
     * @return The field96.
     */
    java.lang.String getField96();
    /**
     * <code>optional string field96 = 96;</code>
     * @return The bytes for field96.
     */
    com.google.protobuf.ByteString
        getField96Bytes();

    /**
     * <code>optional string field97 = 97;</code>
     * @return Whether the field97 field is set.
     */
    boolean hasField97();
    /**
     * <code>optional string field97 = 97;</code>
     * @return The field97.
     */
    java.lang.String getField97();
    /**
     * <code>optional string field97 = 97;</code>
     * @return The bytes for field97.
     */
    com.google.protobuf.ByteString
        getField97Bytes();

    /**
     * <code>optional string field98 = 98;</code>
     * @return Whether the field98 field is set.
     */
    boolean hasField98();
    /**
     * <code>optional string field98 = 98;</code>
     * @return The field98.
     */
    java.lang.String getField98();
    /**
     * <code>optional string field98 = 98;</code>
     * @return The bytes for field98.
     */
    com.google.protobuf.ByteString
        getField98Bytes();

    /**
     * <code>optional string field99 = 99;</code>
     * @return Whether the field99 field is set.
     */
    boolean hasField99();
    /**
     * <code>optional string field99 = 99;</code>
     * @return The field99.
     */
    java.lang.String getField99();
    /**
     * <code>optional string field99 = 99;</code>
     * @return The bytes for field99.
     */
    com.google.protobuf.ByteString
        getField99Bytes();

    /**
     * <code>optional string field100 = 100;</code>
     * @return Whether the field100 field is set.
     */
    boolean hasField100();
    /**
     * <code>optional string field100 = 100;</code>
     * @return The field100.
     */
    java.lang.String getField100();
    /**
     * <code>optional string field100 = 100;</code>
     * @return The bytes for field100.
     */
    com.google.protobuf.ByteString
        getField100Bytes();

    /**
     * <code>optional string field101 = 101;</code>
     * @return Whether the field101 field is set.
     */
    boolean hasField101();
    /**
     * <code>optional string field101 = 101;</code>
     * @return The field101.
     */
    java.lang.String getField101();
    /**
     * <code>optional string field101 = 101;</code>
     * @return The bytes for field101.
     */
    com.google.protobuf.ByteString
        getField101Bytes();

    /**
     * <code>optional string field102 = 102;</code>
     * @return Whether the field102 field is set.
     */
    boolean hasField102();
    /**
     * <code>optional string field102 = 102;</code>
     * @return The field102.
     */
    java.lang.String getField102();
    /**
     * <code>optional string field102 = 102;</code>
     * @return The bytes for field102.
     */
    com.google.protobuf.ByteString
        getField102Bytes();

    /**
     * <code>optional string field103 = 103;</code>
     * @return Whether the field103 field is set.
     */
    boolean hasField103();
    /**
     * <code>optional string field103 = 103;</code>
     * @return The field103.
     */
    java.lang.String getField103();
    /**
     * <code>optional string field103 = 103;</code>
     * @return The bytes for field103.
     */
    com.google.protobuf.ByteString
        getField103Bytes();

    /**
     * <code>optional string field104 = 104;</code>
     * @return Whether the field104 field is set.
     */
    boolean hasField104();
    /**
     * <code>optional string field104 = 104;</code>
     * @return The field104.
     */
    java.lang.String getField104();
    /**
     * <code>optional string field104 = 104;</code>
     * @return The bytes for field104.
     */
    com.google.protobuf.ByteString
        getField104Bytes();

    /**
     * <code>optional string field105 = 105;</code>
     * @return Whether the field105 field is set.
     */
    boolean hasField105();
    /**
     * <code>optional string field105 = 105;</code>
     * @return The field105.
     */
    java.lang.String getField105();
    /**
     * <code>optional string field105 = 105;</code>
     * @return The bytes for field105.
     */
    com.google.protobuf.ByteString
        getField105Bytes();

    /**
     * <code>optional string field106 = 106;</code>
     * @return Whether the field106 field is set.
     */
    boolean hasField106();
    /**
     * <code>optional string field106 = 106;</code>
     * @return The field106.
     */
    java.lang.String getField106();
    /**
     * <code>optional string field106 = 106;</code>
     * @return The bytes for field106.
     */
    com.google.protobuf.ByteString
        getField106Bytes();

    /**
     * <code>optional string field107 = 107;</code>
     * @return Whether the field107 field is set.
     */
    boolean hasField107();
    /**
     * <code>optional string field107 = 107;</code>
     * @return The field107.
     */
    java.lang.String getField107();
    /**
     * <code>optional string field107 = 107;</code>
     * @return The bytes for field107.
     */
    com.google.protobuf.ByteString
        getField107Bytes();

    /**
     * <code>optional string field108 = 108;</code>
     * @return Whether the field108 field is set.
     */
    boolean hasField108();
    /**
     * <code>optional string field108 = 108;</code>
     * @return The field108.
     */
    java.lang.String getField108();
    /**
     * <code>optional string field108 = 108;</code>
     * @return The bytes for field108.
     */
    com.google.protobuf.ByteString
        getField108Bytes();

    /**
     * <code>optional string field109 = 109;</code>
     * @return Whether the field109 field is set.
     */
    boolean hasField109();
    /**
     * <code>optional string field109 = 109;</code>
     * @return The field109.
     */
    java.lang.String getField109();
    /**
     * <code>optional string field109 = 109;</code>
     * @return The bytes for field109.
     */
    com.google.protobuf.ByteString
        getField109Bytes();

    /**
     * <code>optional string field110 = 110;</code>
     * @return Whether the field110 field is set.
     */
    boolean hasField110();
    /**
     * <code>optional string field110 = 110;</code>
     * @return The field110.
     */
    java.lang.String getField110();
    /**
     * <code>optional string field110 = 110;</code>
     * @return The bytes for field110.
     */
    com.google.protobuf.ByteString
        getField110Bytes();

    /**
     * <code>optional string field111 = 111;</code>
     * @return Whether the field111 field is set.
     */
    boolean hasField111();
    /**
     * <code>optional string field111 = 111;</code>
     * @return The field111.
     */
    java.lang.String getField111();
    /**
     * <code>optional string field111 = 111;</code>
     * @return The bytes for field111.
     */
    com.google.protobuf.ByteString
        getField111Bytes();

    /**
     * <code>optional string field112 = 112;</code>
     * @return Whether the field112 field is set.
     */
    boolean hasField112();
    /**
     * <code>optional string field112 = 112;</code>
     * @return The field112.
     */
    java.lang.String getField112();
    /**
     * <code>optional string field112 = 112;</code>
     * @return The bytes for field112.
     */
    com.google.protobuf.ByteString
        getField112Bytes();

    /**
     * <code>optional string field113 = 113;</code>
     * @return Whether the field113 field is set.
     */
    boolean hasField113();
    /**
     * <code>optional string field113 = 113;</code>
     * @return The field113.
     */
    java.lang.String getField113();
    /**
     * <code>optional string field113 = 113;</code>
     * @return The bytes for field113.
     */
    com.google.protobuf.ByteString
        getField113Bytes();

    /**
     * <code>optional string field114 = 114;</code>
     * @return Whether the field114 field is set.
     */
    boolean hasField114();
    /**
     * <code>optional string field114 = 114;</code>
     * @return The field114.
     */
    java.lang.String getField114();
    /**
     * <code>optional string field114 = 114;</code>
     * @return The bytes for field114.
     */
    com.google.protobuf.ByteString
        getField114Bytes();

    /**
     * <code>optional string field115 = 115;</code>
     * @return Whether the field115 field is set.
     */
    boolean hasField115();
    /**
     * <code>optional string field115 = 115;</code>
     * @return The field115.
     */
    java.lang.String getField115();
    /**
     * <code>optional string field115 = 115;</code>
     * @return The bytes for field115.
     */
    com.google.protobuf.ByteString
        getField115Bytes();

    /**
     * <code>optional string field116 = 116;</code>
     * @return Whether the field116 field is set.
     */
    boolean hasField116();
    /**
     * <code>optional string field116 = 116;</code>
     * @return The field116.
     */
    java.lang.String getField116();
    /**
     * <code>optional string field116 = 116;</code>
     * @return The bytes for field116.
     */
    com.google.protobuf.ByteString
        getField116Bytes();

    /**
     * <code>optional string field117 = 117;</code>
     * @return Whether the field117 field is set.
     */
    boolean hasField117();
    /**
     * <code>optional string field117 = 117;</code>
     * @return The field117.
     */
    java.lang.String getField117();
    /**
     * <code>optional string field117 = 117;</code>
     * @return The bytes for field117.
     */
    com.google.protobuf.ByteString
        getField117Bytes();

    /**
     * <code>optional string field118 = 118;</code>
     * @return Whether the field118 field is set.
     */
    boolean hasField118();
    /**
     * <code>optional string field118 = 118;</code>
     * @return The field118.
     */
    java.lang.String getField118();
    /**
     * <code>optional string field118 = 118;</code>
     * @return The bytes for field118.
     */
    com.google.protobuf.ByteString
        getField118Bytes();

    /**
     * <code>optional string field119 = 119;</code>
     * @return Whether the field119 field is set.
     */
    boolean hasField119();
    /**
     * <code>optional string field119 = 119;</code>
     * @return The field119.
     */
    java.lang.String getField119();
    /**
     * <code>optional string field119 = 119;</code>
     * @return The bytes for field119.
     */
    com.google.protobuf.ByteString
        getField119Bytes();

    /**
     * <code>optional string field120 = 120;</code>
     * @return Whether the field120 field is set.
     */
    boolean hasField120();
    /**
     * <code>optional string field120 = 120;</code>
     * @return The field120.
     */
    java.lang.String getField120();
    /**
     * <code>optional string field120 = 120;</code>
     * @return The bytes for field120.
     */
    com.google.protobuf.ByteString
        getField120Bytes();

    /**
     * <code>optional string field121 = 121;</code>
     * @return Whether the field121 field is set.
     */
    boolean hasField121();
    /**
     * <code>optional string field121 = 121;</code>
     * @return The field121.
     */
    java.lang.String getField121();
    /**
     * <code>optional string field121 = 121;</code>
     * @return The bytes for field121.
     */
    com.google.protobuf.ByteString
        getField121Bytes();

    /**
     * <code>optional string field122 = 122;</code>
     * @return Whether the field122 field is set.
     */
    boolean hasField122();
    /**
     * <code>optional string field122 = 122;</code>
     * @return The field122.
     */
    java.lang.String getField122();
    /**
     * <code>optional string field122 = 122;</code>
     * @return The bytes for field122.
     */
    com.google.protobuf.ByteString
        getField122Bytes();

    /**
     * <code>optional string field123 = 123;</code>
     * @return Whether the field123 field is set.
     */
    boolean hasField123();
    /**
     * <code>optional string field123 = 123;</code>
     * @return The field123.
     */
    java.lang.String getField123();
    /**
     * <code>optional string field123 = 123;</code>
     * @return The bytes for field123.
     */
    com.google.protobuf.ByteString
        getField123Bytes();

    /**
     * <code>optional string field124 = 124;</code>
     * @return Whether the field124 field is set.
     */
    boolean hasField124();
    /**
     * <code>optional string field124 = 124;</code>
     * @return The field124.
     */
    java.lang.String getField124();
    /**
     * <code>optional string field124 = 124;</code>
     * @return The bytes for field124.
     */
    com.google.protobuf.ByteString
        getField124Bytes();

    /**
     * <code>optional string field125 = 125;</code>
     * @return Whether the field125 field is set.
     */
    boolean hasField125();
    /**
     * <code>optional string field125 = 125;</code>
     * @return The field125.
     */
    java.lang.String getField125();
    /**
     * <code>optional string field125 = 125;</code>
     * @return The bytes for field125.
     */
    com.google.protobuf.ByteString
        getField125Bytes();

    /**
     * <code>optional string field126 = 126;</code>
     * @return Whether the field126 field is set.
     */
    boolean hasField126();
    /**
     * <code>optional string field126 = 126;</code>
     * @return The field126.
     */
    java.lang.String getField126();
    /**
     * <code>optional string field126 = 126;</code>
     * @return The bytes for field126.
     */
    com.google.protobuf.ByteString
        getField126Bytes();

    /**
     * <code>optional string field127 = 127;</code>
     * @return Whether the field127 field is set.
     */
    boolean hasField127();
    /**
     * <code>optional string field127 = 127;</code>
     * @return The field127.
     */
    java.lang.String getField127();
    /**
     * <code>optional string field127 = 127;</code>
     * @return The bytes for field127.
     */
    com.google.protobuf.ByteString
        getField127Bytes();

    /**
     * <code>optional string field128 = 128;</code>
     * @return Whether the field128 field is set.
     */
    boolean hasField128();
    /**
     * <code>optional string field128 = 128;</code>
     * @return The field128.
     */
    java.lang.String getField128();
    /**
     * <code>optional string field128 = 128;</code>
     * @return The bytes for field128.
     */
    com.google.protobuf.ByteString
        getField128Bytes();

    /**
     * <code>required string field129 = 129;</code>
     * @return Whether the field129 field is set.
     */
    boolean hasField129();
    /**
     * <code>required string field129 = 129;</code>
     * @return The field129.
     */
    java.lang.String getField129();
    /**
     * <code>required string field129 = 129;</code>
     * @return The bytes for field129.
     */
    com.google.protobuf.ByteString
        getField129Bytes();
  }
  /**
   * Protobuf type {@code foo.TestRequiredFieldsBitmap}
   */
  public static final class TestRequiredFieldsBitmap extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestRequiredFieldsBitmap)
      TestRequiredFieldsBitmapOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestRequiredFieldsBitmap.newBuilder() to construct.
    private TestRequiredFieldsBitmap(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestRequiredFieldsBitmap() {
      field1_ = "";
      field2_ = "";
      field3_ = "";
      field4_ = "";
      field5_ = "";
      field6_ = "";
      field7_ = "";
      field8_ = "";
      field9_ = "";
      field10_ = "";
      field11_ = "";
      field12_ = "";
      field13_ = "";
      field14_ = "";
      field15_ = "";
      field16_ = "";
      field17_ = "";
      field18_ = "";
      field19_ = "";
      field20_ = "";
      field21_ = "";
      field22_ = "";
      field23_ = "";
      field24_ = "";
      field25_ = "";
      field26_ = "";
      field27_ = "";
      field28_ = "";
      field29_ = "";
      field30_ = "";
      field31_ = "";
      field32_ = "";
      field33_ = "";
      field34_ = "";
      field35_ = "";
      field36_ = "";
      field37_ = "";
      field38_ = "";
      field39_ = "";
      field40_ = "";
      field41_ = "";
      field42_ = "";
      field43_ = "";
      field44_ = "";
      field45_ = "";
      field46_ = "";
      field47_ = "";
      field48_ = "";
      field49_ = "";
      field50_ = "";
      field51_ = "";
      field52_ = "";
      field53_ = "";
      field54_ = "";
      field55_ = "";
      field56_ = "";
      field57_ = "";
      field58_ = "";
      field59_ = "";
      field60_ = "";
      field61_ = "";
      field62_ = "";
      field63_ = "";
      field64_ = "";
      field65_ = "";
      field66_ = "";
      field67_ = "";
      field68_ = "";
      field69_ = "";
      field70_ = "";
      field71_ = "";
      field72_ = "";
      field73_ = "";
      field74_ = "";
      field75_ = "";
      field76_ = "";
      field77_ = "";
      field78_ = "";
      field79_ = "";
      field80_ = "";
      field81_ = "";
      field82_ = "";
      field83_ = "";
      field84_ = "";
      field85_ = "";
      field86_ = "";
      field87_ = "";
      field88_ = "";
      field89_ = "";
      field90_ = "";
      field91_ = "";
      field92_ = "";
      field93_ = "";
      field94_ = "";
      field95_ = "";
      field96_ = "";
      field97_ = "";
      field98_ = "";
      field99_ = "";
      field100_ = "";
      field101_ = "";
      field102_ = "";
      field103_ = "";
      field104_ = "";
      field105_ = "";
      field106_ = "";
      field107_ = "";
      field108_ = "";
      field109_ = "";
      field110_ = "";
      field111_ = "";
      field112_ = "";
      field113_ = "";
      field114_ = "";
      field115_ = "";
      field116_ = "";
      field117_ = "";
      field118_ = "";
      field119_ = "";
      field120_ = "";
      field121_ = "";
      field122_ = "";
      field123_ = "";
      field124_ = "";
      field125_ = "";
      field126_ = "";
      field127_ = "";
      field128_ = "";
      field129_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestRequiredFieldsBitmap_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestRequiredFieldsBitmap_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestRequiredFieldsBitmap.class, foo.TestFull.TestRequiredFieldsBitmap.Builder.class);
    }

    private int bitField0_;
    private int bitField1_;
    private int bitField2_;
    private int bitField3_;
    private int bitField4_;
    public static final int FIELD1_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field1_ = "";
    /**
     * <code>required string field1 = 1;</code>
     * @return Whether the field1 field is set.
     */
    @java.lang.Override
    public boolean hasField1() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required string field1 = 1;</code>
     * @return The field1.
     */
    @java.lang.Override
    public java.lang.String getField1() {
      java.lang.Object ref = field1_;
      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 (bs.isValidUtf8()) {
          field1_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string field1 = 1;</code>
     * @return The bytes for field1.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField1Bytes() {
      java.lang.Object ref = field1_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field1_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD2_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field2_ = "";
    /**
     * <code>optional string field2 = 2;</code>
     * @return Whether the field2 field is set.
     */
    @java.lang.Override
    public boolean hasField2() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional string field2 = 2;</code>
     * @return The field2.
     */
    @java.lang.Override
    public java.lang.String getField2() {
      java.lang.Object ref = field2_;
      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 (bs.isValidUtf8()) {
          field2_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field2 = 2;</code>
     * @return The bytes for field2.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField2Bytes() {
      java.lang.Object ref = field2_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field2_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD3_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field3_ = "";
    /**
     * <code>optional string field3 = 3;</code>
     * @return Whether the field3 field is set.
     */
    @java.lang.Override
    public boolean hasField3() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional string field3 = 3;</code>
     * @return The field3.
     */
    @java.lang.Override
    public java.lang.String getField3() {
      java.lang.Object ref = field3_;
      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 (bs.isValidUtf8()) {
          field3_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field3 = 3;</code>
     * @return The bytes for field3.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField3Bytes() {
      java.lang.Object ref = field3_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field3_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD4_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field4_ = "";
    /**
     * <code>optional string field4 = 4;</code>
     * @return Whether the field4 field is set.
     */
    @java.lang.Override
    public boolean hasField4() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional string field4 = 4;</code>
     * @return The field4.
     */
    @java.lang.Override
    public java.lang.String getField4() {
      java.lang.Object ref = field4_;
      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 (bs.isValidUtf8()) {
          field4_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field4 = 4;</code>
     * @return The bytes for field4.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField4Bytes() {
      java.lang.Object ref = field4_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field4_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD5_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field5_ = "";
    /**
     * <code>optional string field5 = 5;</code>
     * @return Whether the field5 field is set.
     */
    @java.lang.Override
    public boolean hasField5() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional string field5 = 5;</code>
     * @return The field5.
     */
    @java.lang.Override
    public java.lang.String getField5() {
      java.lang.Object ref = field5_;
      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 (bs.isValidUtf8()) {
          field5_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field5 = 5;</code>
     * @return The bytes for field5.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField5Bytes() {
      java.lang.Object ref = field5_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field5_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD6_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field6_ = "";
    /**
     * <code>optional string field6 = 6;</code>
     * @return Whether the field6 field is set.
     */
    @java.lang.Override
    public boolean hasField6() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional string field6 = 6;</code>
     * @return The field6.
     */
    @java.lang.Override
    public java.lang.String getField6() {
      java.lang.Object ref = field6_;
      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 (bs.isValidUtf8()) {
          field6_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field6 = 6;</code>
     * @return The bytes for field6.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField6Bytes() {
      java.lang.Object ref = field6_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field6_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD7_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field7_ = "";
    /**
     * <code>optional string field7 = 7;</code>
     * @return Whether the field7 field is set.
     */
    @java.lang.Override
    public boolean hasField7() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional string field7 = 7;</code>
     * @return The field7.
     */
    @java.lang.Override
    public java.lang.String getField7() {
      java.lang.Object ref = field7_;
      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 (bs.isValidUtf8()) {
          field7_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field7 = 7;</code>
     * @return The bytes for field7.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField7Bytes() {
      java.lang.Object ref = field7_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field7_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD8_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field8_ = "";
    /**
     * <code>optional string field8 = 8;</code>
     * @return Whether the field8 field is set.
     */
    @java.lang.Override
    public boolean hasField8() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional string field8 = 8;</code>
     * @return The field8.
     */
    @java.lang.Override
    public java.lang.String getField8() {
      java.lang.Object ref = field8_;
      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 (bs.isValidUtf8()) {
          field8_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field8 = 8;</code>
     * @return The bytes for field8.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField8Bytes() {
      java.lang.Object ref = field8_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field8_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD9_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field9_ = "";
    /**
     * <code>optional string field9 = 9;</code>
     * @return Whether the field9 field is set.
     */
    @java.lang.Override
    public boolean hasField9() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>optional string field9 = 9;</code>
     * @return The field9.
     */
    @java.lang.Override
    public java.lang.String getField9() {
      java.lang.Object ref = field9_;
      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 (bs.isValidUtf8()) {
          field9_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field9 = 9;</code>
     * @return The bytes for field9.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField9Bytes() {
      java.lang.Object ref = field9_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field9_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD10_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field10_ = "";
    /**
     * <code>optional string field10 = 10;</code>
     * @return Whether the field10 field is set.
     */
    @java.lang.Override
    public boolean hasField10() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>optional string field10 = 10;</code>
     * @return The field10.
     */
    @java.lang.Override
    public java.lang.String getField10() {
      java.lang.Object ref = field10_;
      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 (bs.isValidUtf8()) {
          field10_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field10 = 10;</code>
     * @return The bytes for field10.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField10Bytes() {
      java.lang.Object ref = field10_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field10_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD11_FIELD_NUMBER = 11;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field11_ = "";
    /**
     * <code>optional string field11 = 11;</code>
     * @return Whether the field11 field is set.
     */
    @java.lang.Override
    public boolean hasField11() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>optional string field11 = 11;</code>
     * @return The field11.
     */
    @java.lang.Override
    public java.lang.String getField11() {
      java.lang.Object ref = field11_;
      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 (bs.isValidUtf8()) {
          field11_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field11 = 11;</code>
     * @return The bytes for field11.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField11Bytes() {
      java.lang.Object ref = field11_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field11_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD12_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field12_ = "";
    /**
     * <code>optional string field12 = 12;</code>
     * @return Whether the field12 field is set.
     */
    @java.lang.Override
    public boolean hasField12() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <code>optional string field12 = 12;</code>
     * @return The field12.
     */
    @java.lang.Override
    public java.lang.String getField12() {
      java.lang.Object ref = field12_;
      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 (bs.isValidUtf8()) {
          field12_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field12 = 12;</code>
     * @return The bytes for field12.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField12Bytes() {
      java.lang.Object ref = field12_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field12_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD13_FIELD_NUMBER = 13;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field13_ = "";
    /**
     * <code>optional string field13 = 13;</code>
     * @return Whether the field13 field is set.
     */
    @java.lang.Override
    public boolean hasField13() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <code>optional string field13 = 13;</code>
     * @return The field13.
     */
    @java.lang.Override
    public java.lang.String getField13() {
      java.lang.Object ref = field13_;
      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 (bs.isValidUtf8()) {
          field13_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field13 = 13;</code>
     * @return The bytes for field13.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField13Bytes() {
      java.lang.Object ref = field13_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field13_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD14_FIELD_NUMBER = 14;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field14_ = "";
    /**
     * <code>optional string field14 = 14;</code>
     * @return Whether the field14 field is set.
     */
    @java.lang.Override
    public boolean hasField14() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <code>optional string field14 = 14;</code>
     * @return The field14.
     */
    @java.lang.Override
    public java.lang.String getField14() {
      java.lang.Object ref = field14_;
      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 (bs.isValidUtf8()) {
          field14_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field14 = 14;</code>
     * @return The bytes for field14.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField14Bytes() {
      java.lang.Object ref = field14_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field14_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD15_FIELD_NUMBER = 15;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field15_ = "";
    /**
     * <code>optional string field15 = 15;</code>
     * @return Whether the field15 field is set.
     */
    @java.lang.Override
    public boolean hasField15() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <code>optional string field15 = 15;</code>
     * @return The field15.
     */
    @java.lang.Override
    public java.lang.String getField15() {
      java.lang.Object ref = field15_;
      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 (bs.isValidUtf8()) {
          field15_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field15 = 15;</code>
     * @return The bytes for field15.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField15Bytes() {
      java.lang.Object ref = field15_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field15_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD16_FIELD_NUMBER = 16;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field16_ = "";
    /**
     * <code>optional string field16 = 16;</code>
     * @return Whether the field16 field is set.
     */
    @java.lang.Override
    public boolean hasField16() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <code>optional string field16 = 16;</code>
     * @return The field16.
     */
    @java.lang.Override
    public java.lang.String getField16() {
      java.lang.Object ref = field16_;
      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 (bs.isValidUtf8()) {
          field16_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field16 = 16;</code>
     * @return The bytes for field16.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField16Bytes() {
      java.lang.Object ref = field16_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field16_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD17_FIELD_NUMBER = 17;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field17_ = "";
    /**
     * <code>optional string field17 = 17;</code>
     * @return Whether the field17 field is set.
     */
    @java.lang.Override
    public boolean hasField17() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * <code>optional string field17 = 17;</code>
     * @return The field17.
     */
    @java.lang.Override
    public java.lang.String getField17() {
      java.lang.Object ref = field17_;
      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 (bs.isValidUtf8()) {
          field17_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field17 = 17;</code>
     * @return The bytes for field17.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField17Bytes() {
      java.lang.Object ref = field17_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field17_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD18_FIELD_NUMBER = 18;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field18_ = "";
    /**
     * <code>optional string field18 = 18;</code>
     * @return Whether the field18 field is set.
     */
    @java.lang.Override
    public boolean hasField18() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * <code>optional string field18 = 18;</code>
     * @return The field18.
     */
    @java.lang.Override
    public java.lang.String getField18() {
      java.lang.Object ref = field18_;
      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 (bs.isValidUtf8()) {
          field18_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field18 = 18;</code>
     * @return The bytes for field18.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField18Bytes() {
      java.lang.Object ref = field18_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field18_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD19_FIELD_NUMBER = 19;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field19_ = "";
    /**
     * <code>optional string field19 = 19;</code>
     * @return Whether the field19 field is set.
     */
    @java.lang.Override
    public boolean hasField19() {
      return ((bitField0_ & 0x00040000) != 0);
    }
    /**
     * <code>optional string field19 = 19;</code>
     * @return The field19.
     */
    @java.lang.Override
    public java.lang.String getField19() {
      java.lang.Object ref = field19_;
      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 (bs.isValidUtf8()) {
          field19_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field19 = 19;</code>
     * @return The bytes for field19.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField19Bytes() {
      java.lang.Object ref = field19_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field19_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD20_FIELD_NUMBER = 20;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field20_ = "";
    /**
     * <code>optional string field20 = 20;</code>
     * @return Whether the field20 field is set.
     */
    @java.lang.Override
    public boolean hasField20() {
      return ((bitField0_ & 0x00080000) != 0);
    }
    /**
     * <code>optional string field20 = 20;</code>
     * @return The field20.
     */
    @java.lang.Override
    public java.lang.String getField20() {
      java.lang.Object ref = field20_;
      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 (bs.isValidUtf8()) {
          field20_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field20 = 20;</code>
     * @return The bytes for field20.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField20Bytes() {
      java.lang.Object ref = field20_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field20_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD21_FIELD_NUMBER = 21;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field21_ = "";
    /**
     * <code>optional string field21 = 21;</code>
     * @return Whether the field21 field is set.
     */
    @java.lang.Override
    public boolean hasField21() {
      return ((bitField0_ & 0x00100000) != 0);
    }
    /**
     * <code>optional string field21 = 21;</code>
     * @return The field21.
     */
    @java.lang.Override
    public java.lang.String getField21() {
      java.lang.Object ref = field21_;
      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 (bs.isValidUtf8()) {
          field21_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field21 = 21;</code>
     * @return The bytes for field21.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField21Bytes() {
      java.lang.Object ref = field21_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field21_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD22_FIELD_NUMBER = 22;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field22_ = "";
    /**
     * <code>optional string field22 = 22;</code>
     * @return Whether the field22 field is set.
     */
    @java.lang.Override
    public boolean hasField22() {
      return ((bitField0_ & 0x00200000) != 0);
    }
    /**
     * <code>optional string field22 = 22;</code>
     * @return The field22.
     */
    @java.lang.Override
    public java.lang.String getField22() {
      java.lang.Object ref = field22_;
      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 (bs.isValidUtf8()) {
          field22_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field22 = 22;</code>
     * @return The bytes for field22.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField22Bytes() {
      java.lang.Object ref = field22_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field22_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD23_FIELD_NUMBER = 23;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field23_ = "";
    /**
     * <code>optional string field23 = 23;</code>
     * @return Whether the field23 field is set.
     */
    @java.lang.Override
    public boolean hasField23() {
      return ((bitField0_ & 0x00400000) != 0);
    }
    /**
     * <code>optional string field23 = 23;</code>
     * @return The field23.
     */
    @java.lang.Override
    public java.lang.String getField23() {
      java.lang.Object ref = field23_;
      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 (bs.isValidUtf8()) {
          field23_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field23 = 23;</code>
     * @return The bytes for field23.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField23Bytes() {
      java.lang.Object ref = field23_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field23_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD24_FIELD_NUMBER = 24;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field24_ = "";
    /**
     * <code>optional string field24 = 24;</code>
     * @return Whether the field24 field is set.
     */
    @java.lang.Override
    public boolean hasField24() {
      return ((bitField0_ & 0x00800000) != 0);
    }
    /**
     * <code>optional string field24 = 24;</code>
     * @return The field24.
     */
    @java.lang.Override
    public java.lang.String getField24() {
      java.lang.Object ref = field24_;
      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 (bs.isValidUtf8()) {
          field24_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field24 = 24;</code>
     * @return The bytes for field24.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField24Bytes() {
      java.lang.Object ref = field24_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field24_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD25_FIELD_NUMBER = 25;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field25_ = "";
    /**
     * <code>optional string field25 = 25;</code>
     * @return Whether the field25 field is set.
     */
    @java.lang.Override
    public boolean hasField25() {
      return ((bitField0_ & 0x01000000) != 0);
    }
    /**
     * <code>optional string field25 = 25;</code>
     * @return The field25.
     */
    @java.lang.Override
    public java.lang.String getField25() {
      java.lang.Object ref = field25_;
      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 (bs.isValidUtf8()) {
          field25_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field25 = 25;</code>
     * @return The bytes for field25.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField25Bytes() {
      java.lang.Object ref = field25_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field25_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD26_FIELD_NUMBER = 26;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field26_ = "";
    /**
     * <code>optional string field26 = 26;</code>
     * @return Whether the field26 field is set.
     */
    @java.lang.Override
    public boolean hasField26() {
      return ((bitField0_ & 0x02000000) != 0);
    }
    /**
     * <code>optional string field26 = 26;</code>
     * @return The field26.
     */
    @java.lang.Override
    public java.lang.String getField26() {
      java.lang.Object ref = field26_;
      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 (bs.isValidUtf8()) {
          field26_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field26 = 26;</code>
     * @return The bytes for field26.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField26Bytes() {
      java.lang.Object ref = field26_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field26_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD27_FIELD_NUMBER = 27;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field27_ = "";
    /**
     * <code>optional string field27 = 27;</code>
     * @return Whether the field27 field is set.
     */
    @java.lang.Override
    public boolean hasField27() {
      return ((bitField0_ & 0x04000000) != 0);
    }
    /**
     * <code>optional string field27 = 27;</code>
     * @return The field27.
     */
    @java.lang.Override
    public java.lang.String getField27() {
      java.lang.Object ref = field27_;
      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 (bs.isValidUtf8()) {
          field27_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field27 = 27;</code>
     * @return The bytes for field27.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField27Bytes() {
      java.lang.Object ref = field27_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field27_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD28_FIELD_NUMBER = 28;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field28_ = "";
    /**
     * <code>optional string field28 = 28;</code>
     * @return Whether the field28 field is set.
     */
    @java.lang.Override
    public boolean hasField28() {
      return ((bitField0_ & 0x08000000) != 0);
    }
    /**
     * <code>optional string field28 = 28;</code>
     * @return The field28.
     */
    @java.lang.Override
    public java.lang.String getField28() {
      java.lang.Object ref = field28_;
      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 (bs.isValidUtf8()) {
          field28_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field28 = 28;</code>
     * @return The bytes for field28.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField28Bytes() {
      java.lang.Object ref = field28_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field28_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD29_FIELD_NUMBER = 29;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field29_ = "";
    /**
     * <code>optional string field29 = 29;</code>
     * @return Whether the field29 field is set.
     */
    @java.lang.Override
    public boolean hasField29() {
      return ((bitField0_ & 0x10000000) != 0);
    }
    /**
     * <code>optional string field29 = 29;</code>
     * @return The field29.
     */
    @java.lang.Override
    public java.lang.String getField29() {
      java.lang.Object ref = field29_;
      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 (bs.isValidUtf8()) {
          field29_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field29 = 29;</code>
     * @return The bytes for field29.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField29Bytes() {
      java.lang.Object ref = field29_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field29_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD30_FIELD_NUMBER = 30;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field30_ = "";
    /**
     * <code>optional string field30 = 30;</code>
     * @return Whether the field30 field is set.
     */
    @java.lang.Override
    public boolean hasField30() {
      return ((bitField0_ & 0x20000000) != 0);
    }
    /**
     * <code>optional string field30 = 30;</code>
     * @return The field30.
     */
    @java.lang.Override
    public java.lang.String getField30() {
      java.lang.Object ref = field30_;
      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 (bs.isValidUtf8()) {
          field30_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field30 = 30;</code>
     * @return The bytes for field30.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField30Bytes() {
      java.lang.Object ref = field30_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field30_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD31_FIELD_NUMBER = 31;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field31_ = "";
    /**
     * <code>optional string field31 = 31;</code>
     * @return Whether the field31 field is set.
     */
    @java.lang.Override
    public boolean hasField31() {
      return ((bitField0_ & 0x40000000) != 0);
    }
    /**
     * <code>optional string field31 = 31;</code>
     * @return The field31.
     */
    @java.lang.Override
    public java.lang.String getField31() {
      java.lang.Object ref = field31_;
      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 (bs.isValidUtf8()) {
          field31_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field31 = 31;</code>
     * @return The bytes for field31.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField31Bytes() {
      java.lang.Object ref = field31_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field31_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD32_FIELD_NUMBER = 32;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field32_ = "";
    /**
     * <code>optional string field32 = 32;</code>
     * @return Whether the field32 field is set.
     */
    @java.lang.Override
    public boolean hasField32() {
      return ((bitField0_ & 0x80000000) != 0);
    }
    /**
     * <code>optional string field32 = 32;</code>
     * @return The field32.
     */
    @java.lang.Override
    public java.lang.String getField32() {
      java.lang.Object ref = field32_;
      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 (bs.isValidUtf8()) {
          field32_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field32 = 32;</code>
     * @return The bytes for field32.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField32Bytes() {
      java.lang.Object ref = field32_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field32_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD33_FIELD_NUMBER = 33;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field33_ = "";
    /**
     * <code>optional string field33 = 33;</code>
     * @return Whether the field33 field is set.
     */
    @java.lang.Override
    public boolean hasField33() {
      return ((bitField1_ & 0x00000001) != 0);
    }
    /**
     * <code>optional string field33 = 33;</code>
     * @return The field33.
     */
    @java.lang.Override
    public java.lang.String getField33() {
      java.lang.Object ref = field33_;
      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 (bs.isValidUtf8()) {
          field33_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field33 = 33;</code>
     * @return The bytes for field33.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField33Bytes() {
      java.lang.Object ref = field33_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field33_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD34_FIELD_NUMBER = 34;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field34_ = "";
    /**
     * <code>optional string field34 = 34;</code>
     * @return Whether the field34 field is set.
     */
    @java.lang.Override
    public boolean hasField34() {
      return ((bitField1_ & 0x00000002) != 0);
    }
    /**
     * <code>optional string field34 = 34;</code>
     * @return The field34.
     */
    @java.lang.Override
    public java.lang.String getField34() {
      java.lang.Object ref = field34_;
      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 (bs.isValidUtf8()) {
          field34_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field34 = 34;</code>
     * @return The bytes for field34.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField34Bytes() {
      java.lang.Object ref = field34_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field34_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD35_FIELD_NUMBER = 35;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field35_ = "";
    /**
     * <code>optional string field35 = 35;</code>
     * @return Whether the field35 field is set.
     */
    @java.lang.Override
    public boolean hasField35() {
      return ((bitField1_ & 0x00000004) != 0);
    }
    /**
     * <code>optional string field35 = 35;</code>
     * @return The field35.
     */
    @java.lang.Override
    public java.lang.String getField35() {
      java.lang.Object ref = field35_;
      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 (bs.isValidUtf8()) {
          field35_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field35 = 35;</code>
     * @return The bytes for field35.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField35Bytes() {
      java.lang.Object ref = field35_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field35_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD36_FIELD_NUMBER = 36;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field36_ = "";
    /**
     * <code>optional string field36 = 36;</code>
     * @return Whether the field36 field is set.
     */
    @java.lang.Override
    public boolean hasField36() {
      return ((bitField1_ & 0x00000008) != 0);
    }
    /**
     * <code>optional string field36 = 36;</code>
     * @return The field36.
     */
    @java.lang.Override
    public java.lang.String getField36() {
      java.lang.Object ref = field36_;
      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 (bs.isValidUtf8()) {
          field36_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field36 = 36;</code>
     * @return The bytes for field36.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField36Bytes() {
      java.lang.Object ref = field36_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field36_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD37_FIELD_NUMBER = 37;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field37_ = "";
    /**
     * <code>optional string field37 = 37;</code>
     * @return Whether the field37 field is set.
     */
    @java.lang.Override
    public boolean hasField37() {
      return ((bitField1_ & 0x00000010) != 0);
    }
    /**
     * <code>optional string field37 = 37;</code>
     * @return The field37.
     */
    @java.lang.Override
    public java.lang.String getField37() {
      java.lang.Object ref = field37_;
      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 (bs.isValidUtf8()) {
          field37_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field37 = 37;</code>
     * @return The bytes for field37.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField37Bytes() {
      java.lang.Object ref = field37_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field37_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD38_FIELD_NUMBER = 38;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field38_ = "";
    /**
     * <code>optional string field38 = 38;</code>
     * @return Whether the field38 field is set.
     */
    @java.lang.Override
    public boolean hasField38() {
      return ((bitField1_ & 0x00000020) != 0);
    }
    /**
     * <code>optional string field38 = 38;</code>
     * @return The field38.
     */
    @java.lang.Override
    public java.lang.String getField38() {
      java.lang.Object ref = field38_;
      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 (bs.isValidUtf8()) {
          field38_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field38 = 38;</code>
     * @return The bytes for field38.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField38Bytes() {
      java.lang.Object ref = field38_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field38_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD39_FIELD_NUMBER = 39;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field39_ = "";
    /**
     * <code>optional string field39 = 39;</code>
     * @return Whether the field39 field is set.
     */
    @java.lang.Override
    public boolean hasField39() {
      return ((bitField1_ & 0x00000040) != 0);
    }
    /**
     * <code>optional string field39 = 39;</code>
     * @return The field39.
     */
    @java.lang.Override
    public java.lang.String getField39() {
      java.lang.Object ref = field39_;
      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 (bs.isValidUtf8()) {
          field39_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field39 = 39;</code>
     * @return The bytes for field39.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField39Bytes() {
      java.lang.Object ref = field39_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field39_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD40_FIELD_NUMBER = 40;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field40_ = "";
    /**
     * <code>optional string field40 = 40;</code>
     * @return Whether the field40 field is set.
     */
    @java.lang.Override
    public boolean hasField40() {
      return ((bitField1_ & 0x00000080) != 0);
    }
    /**
     * <code>optional string field40 = 40;</code>
     * @return The field40.
     */
    @java.lang.Override
    public java.lang.String getField40() {
      java.lang.Object ref = field40_;
      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 (bs.isValidUtf8()) {
          field40_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field40 = 40;</code>
     * @return The bytes for field40.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField40Bytes() {
      java.lang.Object ref = field40_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field40_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD41_FIELD_NUMBER = 41;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field41_ = "";
    /**
     * <code>optional string field41 = 41;</code>
     * @return Whether the field41 field is set.
     */
    @java.lang.Override
    public boolean hasField41() {
      return ((bitField1_ & 0x00000100) != 0);
    }
    /**
     * <code>optional string field41 = 41;</code>
     * @return The field41.
     */
    @java.lang.Override
    public java.lang.String getField41() {
      java.lang.Object ref = field41_;
      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 (bs.isValidUtf8()) {
          field41_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field41 = 41;</code>
     * @return The bytes for field41.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField41Bytes() {
      java.lang.Object ref = field41_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field41_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD42_FIELD_NUMBER = 42;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field42_ = "";
    /**
     * <code>optional string field42 = 42;</code>
     * @return Whether the field42 field is set.
     */
    @java.lang.Override
    public boolean hasField42() {
      return ((bitField1_ & 0x00000200) != 0);
    }
    /**
     * <code>optional string field42 = 42;</code>
     * @return The field42.
     */
    @java.lang.Override
    public java.lang.String getField42() {
      java.lang.Object ref = field42_;
      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 (bs.isValidUtf8()) {
          field42_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field42 = 42;</code>
     * @return The bytes for field42.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField42Bytes() {
      java.lang.Object ref = field42_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field42_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD43_FIELD_NUMBER = 43;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field43_ = "";
    /**
     * <code>optional string field43 = 43;</code>
     * @return Whether the field43 field is set.
     */
    @java.lang.Override
    public boolean hasField43() {
      return ((bitField1_ & 0x00000400) != 0);
    }
    /**
     * <code>optional string field43 = 43;</code>
     * @return The field43.
     */
    @java.lang.Override
    public java.lang.String getField43() {
      java.lang.Object ref = field43_;
      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 (bs.isValidUtf8()) {
          field43_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field43 = 43;</code>
     * @return The bytes for field43.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField43Bytes() {
      java.lang.Object ref = field43_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field43_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD44_FIELD_NUMBER = 44;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field44_ = "";
    /**
     * <code>optional string field44 = 44;</code>
     * @return Whether the field44 field is set.
     */
    @java.lang.Override
    public boolean hasField44() {
      return ((bitField1_ & 0x00000800) != 0);
    }
    /**
     * <code>optional string field44 = 44;</code>
     * @return The field44.
     */
    @java.lang.Override
    public java.lang.String getField44() {
      java.lang.Object ref = field44_;
      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 (bs.isValidUtf8()) {
          field44_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field44 = 44;</code>
     * @return The bytes for field44.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField44Bytes() {
      java.lang.Object ref = field44_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field44_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD45_FIELD_NUMBER = 45;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field45_ = "";
    /**
     * <code>optional string field45 = 45;</code>
     * @return Whether the field45 field is set.
     */
    @java.lang.Override
    public boolean hasField45() {
      return ((bitField1_ & 0x00001000) != 0);
    }
    /**
     * <code>optional string field45 = 45;</code>
     * @return The field45.
     */
    @java.lang.Override
    public java.lang.String getField45() {
      java.lang.Object ref = field45_;
      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 (bs.isValidUtf8()) {
          field45_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field45 = 45;</code>
     * @return The bytes for field45.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField45Bytes() {
      java.lang.Object ref = field45_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field45_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD46_FIELD_NUMBER = 46;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field46_ = "";
    /**
     * <code>optional string field46 = 46;</code>
     * @return Whether the field46 field is set.
     */
    @java.lang.Override
    public boolean hasField46() {
      return ((bitField1_ & 0x00002000) != 0);
    }
    /**
     * <code>optional string field46 = 46;</code>
     * @return The field46.
     */
    @java.lang.Override
    public java.lang.String getField46() {
      java.lang.Object ref = field46_;
      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 (bs.isValidUtf8()) {
          field46_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field46 = 46;</code>
     * @return The bytes for field46.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField46Bytes() {
      java.lang.Object ref = field46_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field46_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD47_FIELD_NUMBER = 47;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field47_ = "";
    /**
     * <code>optional string field47 = 47;</code>
     * @return Whether the field47 field is set.
     */
    @java.lang.Override
    public boolean hasField47() {
      return ((bitField1_ & 0x00004000) != 0);
    }
    /**
     * <code>optional string field47 = 47;</code>
     * @return The field47.
     */
    @java.lang.Override
    public java.lang.String getField47() {
      java.lang.Object ref = field47_;
      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 (bs.isValidUtf8()) {
          field47_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field47 = 47;</code>
     * @return The bytes for field47.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField47Bytes() {
      java.lang.Object ref = field47_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field47_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD48_FIELD_NUMBER = 48;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field48_ = "";
    /**
     * <code>optional string field48 = 48;</code>
     * @return Whether the field48 field is set.
     */
    @java.lang.Override
    public boolean hasField48() {
      return ((bitField1_ & 0x00008000) != 0);
    }
    /**
     * <code>optional string field48 = 48;</code>
     * @return The field48.
     */
    @java.lang.Override
    public java.lang.String getField48() {
      java.lang.Object ref = field48_;
      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 (bs.isValidUtf8()) {
          field48_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field48 = 48;</code>
     * @return The bytes for field48.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField48Bytes() {
      java.lang.Object ref = field48_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field48_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD49_FIELD_NUMBER = 49;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field49_ = "";
    /**
     * <code>optional string field49 = 49;</code>
     * @return Whether the field49 field is set.
     */
    @java.lang.Override
    public boolean hasField49() {
      return ((bitField1_ & 0x00010000) != 0);
    }
    /**
     * <code>optional string field49 = 49;</code>
     * @return The field49.
     */
    @java.lang.Override
    public java.lang.String getField49() {
      java.lang.Object ref = field49_;
      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 (bs.isValidUtf8()) {
          field49_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field49 = 49;</code>
     * @return The bytes for field49.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField49Bytes() {
      java.lang.Object ref = field49_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field49_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD50_FIELD_NUMBER = 50;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field50_ = "";
    /**
     * <code>optional string field50 = 50;</code>
     * @return Whether the field50 field is set.
     */
    @java.lang.Override
    public boolean hasField50() {
      return ((bitField1_ & 0x00020000) != 0);
    }
    /**
     * <code>optional string field50 = 50;</code>
     * @return The field50.
     */
    @java.lang.Override
    public java.lang.String getField50() {
      java.lang.Object ref = field50_;
      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 (bs.isValidUtf8()) {
          field50_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field50 = 50;</code>
     * @return The bytes for field50.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField50Bytes() {
      java.lang.Object ref = field50_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field50_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD51_FIELD_NUMBER = 51;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field51_ = "";
    /**
     * <code>optional string field51 = 51;</code>
     * @return Whether the field51 field is set.
     */
    @java.lang.Override
    public boolean hasField51() {
      return ((bitField1_ & 0x00040000) != 0);
    }
    /**
     * <code>optional string field51 = 51;</code>
     * @return The field51.
     */
    @java.lang.Override
    public java.lang.String getField51() {
      java.lang.Object ref = field51_;
      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 (bs.isValidUtf8()) {
          field51_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field51 = 51;</code>
     * @return The bytes for field51.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField51Bytes() {
      java.lang.Object ref = field51_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field51_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD52_FIELD_NUMBER = 52;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field52_ = "";
    /**
     * <code>optional string field52 = 52;</code>
     * @return Whether the field52 field is set.
     */
    @java.lang.Override
    public boolean hasField52() {
      return ((bitField1_ & 0x00080000) != 0);
    }
    /**
     * <code>optional string field52 = 52;</code>
     * @return The field52.
     */
    @java.lang.Override
    public java.lang.String getField52() {
      java.lang.Object ref = field52_;
      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 (bs.isValidUtf8()) {
          field52_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field52 = 52;</code>
     * @return The bytes for field52.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField52Bytes() {
      java.lang.Object ref = field52_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field52_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD53_FIELD_NUMBER = 53;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field53_ = "";
    /**
     * <code>optional string field53 = 53;</code>
     * @return Whether the field53 field is set.
     */
    @java.lang.Override
    public boolean hasField53() {
      return ((bitField1_ & 0x00100000) != 0);
    }
    /**
     * <code>optional string field53 = 53;</code>
     * @return The field53.
     */
    @java.lang.Override
    public java.lang.String getField53() {
      java.lang.Object ref = field53_;
      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 (bs.isValidUtf8()) {
          field53_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field53 = 53;</code>
     * @return The bytes for field53.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField53Bytes() {
      java.lang.Object ref = field53_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field53_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD54_FIELD_NUMBER = 54;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field54_ = "";
    /**
     * <code>optional string field54 = 54;</code>
     * @return Whether the field54 field is set.
     */
    @java.lang.Override
    public boolean hasField54() {
      return ((bitField1_ & 0x00200000) != 0);
    }
    /**
     * <code>optional string field54 = 54;</code>
     * @return The field54.
     */
    @java.lang.Override
    public java.lang.String getField54() {
      java.lang.Object ref = field54_;
      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 (bs.isValidUtf8()) {
          field54_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field54 = 54;</code>
     * @return The bytes for field54.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField54Bytes() {
      java.lang.Object ref = field54_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field54_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD55_FIELD_NUMBER = 55;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field55_ = "";
    /**
     * <code>optional string field55 = 55;</code>
     * @return Whether the field55 field is set.
     */
    @java.lang.Override
    public boolean hasField55() {
      return ((bitField1_ & 0x00400000) != 0);
    }
    /**
     * <code>optional string field55 = 55;</code>
     * @return The field55.
     */
    @java.lang.Override
    public java.lang.String getField55() {
      java.lang.Object ref = field55_;
      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 (bs.isValidUtf8()) {
          field55_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field55 = 55;</code>
     * @return The bytes for field55.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField55Bytes() {
      java.lang.Object ref = field55_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field55_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD56_FIELD_NUMBER = 56;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field56_ = "";
    /**
     * <code>optional string field56 = 56;</code>
     * @return Whether the field56 field is set.
     */
    @java.lang.Override
    public boolean hasField56() {
      return ((bitField1_ & 0x00800000) != 0);
    }
    /**
     * <code>optional string field56 = 56;</code>
     * @return The field56.
     */
    @java.lang.Override
    public java.lang.String getField56() {
      java.lang.Object ref = field56_;
      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 (bs.isValidUtf8()) {
          field56_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field56 = 56;</code>
     * @return The bytes for field56.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField56Bytes() {
      java.lang.Object ref = field56_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field56_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD57_FIELD_NUMBER = 57;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field57_ = "";
    /**
     * <code>optional string field57 = 57;</code>
     * @return Whether the field57 field is set.
     */
    @java.lang.Override
    public boolean hasField57() {
      return ((bitField1_ & 0x01000000) != 0);
    }
    /**
     * <code>optional string field57 = 57;</code>
     * @return The field57.
     */
    @java.lang.Override
    public java.lang.String getField57() {
      java.lang.Object ref = field57_;
      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 (bs.isValidUtf8()) {
          field57_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field57 = 57;</code>
     * @return The bytes for field57.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField57Bytes() {
      java.lang.Object ref = field57_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field57_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD58_FIELD_NUMBER = 58;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field58_ = "";
    /**
     * <code>optional string field58 = 58;</code>
     * @return Whether the field58 field is set.
     */
    @java.lang.Override
    public boolean hasField58() {
      return ((bitField1_ & 0x02000000) != 0);
    }
    /**
     * <code>optional string field58 = 58;</code>
     * @return The field58.
     */
    @java.lang.Override
    public java.lang.String getField58() {
      java.lang.Object ref = field58_;
      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 (bs.isValidUtf8()) {
          field58_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field58 = 58;</code>
     * @return The bytes for field58.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField58Bytes() {
      java.lang.Object ref = field58_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field58_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD59_FIELD_NUMBER = 59;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field59_ = "";
    /**
     * <code>optional string field59 = 59;</code>
     * @return Whether the field59 field is set.
     */
    @java.lang.Override
    public boolean hasField59() {
      return ((bitField1_ & 0x04000000) != 0);
    }
    /**
     * <code>optional string field59 = 59;</code>
     * @return The field59.
     */
    @java.lang.Override
    public java.lang.String getField59() {
      java.lang.Object ref = field59_;
      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 (bs.isValidUtf8()) {
          field59_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field59 = 59;</code>
     * @return The bytes for field59.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField59Bytes() {
      java.lang.Object ref = field59_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field59_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD60_FIELD_NUMBER = 60;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field60_ = "";
    /**
     * <code>optional string field60 = 60;</code>
     * @return Whether the field60 field is set.
     */
    @java.lang.Override
    public boolean hasField60() {
      return ((bitField1_ & 0x08000000) != 0);
    }
    /**
     * <code>optional string field60 = 60;</code>
     * @return The field60.
     */
    @java.lang.Override
    public java.lang.String getField60() {
      java.lang.Object ref = field60_;
      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 (bs.isValidUtf8()) {
          field60_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field60 = 60;</code>
     * @return The bytes for field60.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField60Bytes() {
      java.lang.Object ref = field60_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field60_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD61_FIELD_NUMBER = 61;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field61_ = "";
    /**
     * <code>optional string field61 = 61;</code>
     * @return Whether the field61 field is set.
     */
    @java.lang.Override
    public boolean hasField61() {
      return ((bitField1_ & 0x10000000) != 0);
    }
    /**
     * <code>optional string field61 = 61;</code>
     * @return The field61.
     */
    @java.lang.Override
    public java.lang.String getField61() {
      java.lang.Object ref = field61_;
      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 (bs.isValidUtf8()) {
          field61_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field61 = 61;</code>
     * @return The bytes for field61.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField61Bytes() {
      java.lang.Object ref = field61_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field61_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD62_FIELD_NUMBER = 62;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field62_ = "";
    /**
     * <code>optional string field62 = 62;</code>
     * @return Whether the field62 field is set.
     */
    @java.lang.Override
    public boolean hasField62() {
      return ((bitField1_ & 0x20000000) != 0);
    }
    /**
     * <code>optional string field62 = 62;</code>
     * @return The field62.
     */
    @java.lang.Override
    public java.lang.String getField62() {
      java.lang.Object ref = field62_;
      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 (bs.isValidUtf8()) {
          field62_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field62 = 62;</code>
     * @return The bytes for field62.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField62Bytes() {
      java.lang.Object ref = field62_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field62_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD63_FIELD_NUMBER = 63;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field63_ = "";
    /**
     * <code>optional string field63 = 63;</code>
     * @return Whether the field63 field is set.
     */
    @java.lang.Override
    public boolean hasField63() {
      return ((bitField1_ & 0x40000000) != 0);
    }
    /**
     * <code>optional string field63 = 63;</code>
     * @return The field63.
     */
    @java.lang.Override
    public java.lang.String getField63() {
      java.lang.Object ref = field63_;
      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 (bs.isValidUtf8()) {
          field63_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field63 = 63;</code>
     * @return The bytes for field63.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField63Bytes() {
      java.lang.Object ref = field63_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field63_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD64_FIELD_NUMBER = 64;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field64_ = "";
    /**
     * <code>optional string field64 = 64;</code>
     * @return Whether the field64 field is set.
     */
    @java.lang.Override
    public boolean hasField64() {
      return ((bitField1_ & 0x80000000) != 0);
    }
    /**
     * <code>optional string field64 = 64;</code>
     * @return The field64.
     */
    @java.lang.Override
    public java.lang.String getField64() {
      java.lang.Object ref = field64_;
      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 (bs.isValidUtf8()) {
          field64_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field64 = 64;</code>
     * @return The bytes for field64.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField64Bytes() {
      java.lang.Object ref = field64_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field64_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD65_FIELD_NUMBER = 65;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field65_ = "";
    /**
     * <code>optional string field65 = 65;</code>
     * @return Whether the field65 field is set.
     */
    @java.lang.Override
    public boolean hasField65() {
      return ((bitField2_ & 0x00000001) != 0);
    }
    /**
     * <code>optional string field65 = 65;</code>
     * @return The field65.
     */
    @java.lang.Override
    public java.lang.String getField65() {
      java.lang.Object ref = field65_;
      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 (bs.isValidUtf8()) {
          field65_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field65 = 65;</code>
     * @return The bytes for field65.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField65Bytes() {
      java.lang.Object ref = field65_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field65_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD66_FIELD_NUMBER = 66;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field66_ = "";
    /**
     * <code>optional string field66 = 66;</code>
     * @return Whether the field66 field is set.
     */
    @java.lang.Override
    public boolean hasField66() {
      return ((bitField2_ & 0x00000002) != 0);
    }
    /**
     * <code>optional string field66 = 66;</code>
     * @return The field66.
     */
    @java.lang.Override
    public java.lang.String getField66() {
      java.lang.Object ref = field66_;
      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 (bs.isValidUtf8()) {
          field66_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field66 = 66;</code>
     * @return The bytes for field66.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField66Bytes() {
      java.lang.Object ref = field66_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field66_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD67_FIELD_NUMBER = 67;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field67_ = "";
    /**
     * <code>optional string field67 = 67;</code>
     * @return Whether the field67 field is set.
     */
    @java.lang.Override
    public boolean hasField67() {
      return ((bitField2_ & 0x00000004) != 0);
    }
    /**
     * <code>optional string field67 = 67;</code>
     * @return The field67.
     */
    @java.lang.Override
    public java.lang.String getField67() {
      java.lang.Object ref = field67_;
      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 (bs.isValidUtf8()) {
          field67_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field67 = 67;</code>
     * @return The bytes for field67.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField67Bytes() {
      java.lang.Object ref = field67_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field67_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD68_FIELD_NUMBER = 68;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field68_ = "";
    /**
     * <code>optional string field68 = 68;</code>
     * @return Whether the field68 field is set.
     */
    @java.lang.Override
    public boolean hasField68() {
      return ((bitField2_ & 0x00000008) != 0);
    }
    /**
     * <code>optional string field68 = 68;</code>
     * @return The field68.
     */
    @java.lang.Override
    public java.lang.String getField68() {
      java.lang.Object ref = field68_;
      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 (bs.isValidUtf8()) {
          field68_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field68 = 68;</code>
     * @return The bytes for field68.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField68Bytes() {
      java.lang.Object ref = field68_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field68_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD69_FIELD_NUMBER = 69;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field69_ = "";
    /**
     * <code>optional string field69 = 69;</code>
     * @return Whether the field69 field is set.
     */
    @java.lang.Override
    public boolean hasField69() {
      return ((bitField2_ & 0x00000010) != 0);
    }
    /**
     * <code>optional string field69 = 69;</code>
     * @return The field69.
     */
    @java.lang.Override
    public java.lang.String getField69() {
      java.lang.Object ref = field69_;
      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 (bs.isValidUtf8()) {
          field69_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field69 = 69;</code>
     * @return The bytes for field69.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField69Bytes() {
      java.lang.Object ref = field69_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field69_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD70_FIELD_NUMBER = 70;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field70_ = "";
    /**
     * <code>optional string field70 = 70;</code>
     * @return Whether the field70 field is set.
     */
    @java.lang.Override
    public boolean hasField70() {
      return ((bitField2_ & 0x00000020) != 0);
    }
    /**
     * <code>optional string field70 = 70;</code>
     * @return The field70.
     */
    @java.lang.Override
    public java.lang.String getField70() {
      java.lang.Object ref = field70_;
      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 (bs.isValidUtf8()) {
          field70_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field70 = 70;</code>
     * @return The bytes for field70.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField70Bytes() {
      java.lang.Object ref = field70_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field70_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD71_FIELD_NUMBER = 71;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field71_ = "";
    /**
     * <code>optional string field71 = 71;</code>
     * @return Whether the field71 field is set.
     */
    @java.lang.Override
    public boolean hasField71() {
      return ((bitField2_ & 0x00000040) != 0);
    }
    /**
     * <code>optional string field71 = 71;</code>
     * @return The field71.
     */
    @java.lang.Override
    public java.lang.String getField71() {
      java.lang.Object ref = field71_;
      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 (bs.isValidUtf8()) {
          field71_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field71 = 71;</code>
     * @return The bytes for field71.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField71Bytes() {
      java.lang.Object ref = field71_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field71_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD72_FIELD_NUMBER = 72;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field72_ = "";
    /**
     * <code>optional string field72 = 72;</code>
     * @return Whether the field72 field is set.
     */
    @java.lang.Override
    public boolean hasField72() {
      return ((bitField2_ & 0x00000080) != 0);
    }
    /**
     * <code>optional string field72 = 72;</code>
     * @return The field72.
     */
    @java.lang.Override
    public java.lang.String getField72() {
      java.lang.Object ref = field72_;
      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 (bs.isValidUtf8()) {
          field72_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field72 = 72;</code>
     * @return The bytes for field72.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField72Bytes() {
      java.lang.Object ref = field72_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field72_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD73_FIELD_NUMBER = 73;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field73_ = "";
    /**
     * <code>optional string field73 = 73;</code>
     * @return Whether the field73 field is set.
     */
    @java.lang.Override
    public boolean hasField73() {
      return ((bitField2_ & 0x00000100) != 0);
    }
    /**
     * <code>optional string field73 = 73;</code>
     * @return The field73.
     */
    @java.lang.Override
    public java.lang.String getField73() {
      java.lang.Object ref = field73_;
      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 (bs.isValidUtf8()) {
          field73_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field73 = 73;</code>
     * @return The bytes for field73.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField73Bytes() {
      java.lang.Object ref = field73_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field73_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD74_FIELD_NUMBER = 74;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field74_ = "";
    /**
     * <code>optional string field74 = 74;</code>
     * @return Whether the field74 field is set.
     */
    @java.lang.Override
    public boolean hasField74() {
      return ((bitField2_ & 0x00000200) != 0);
    }
    /**
     * <code>optional string field74 = 74;</code>
     * @return The field74.
     */
    @java.lang.Override
    public java.lang.String getField74() {
      java.lang.Object ref = field74_;
      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 (bs.isValidUtf8()) {
          field74_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field74 = 74;</code>
     * @return The bytes for field74.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField74Bytes() {
      java.lang.Object ref = field74_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field74_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD75_FIELD_NUMBER = 75;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field75_ = "";
    /**
     * <code>optional string field75 = 75;</code>
     * @return Whether the field75 field is set.
     */
    @java.lang.Override
    public boolean hasField75() {
      return ((bitField2_ & 0x00000400) != 0);
    }
    /**
     * <code>optional string field75 = 75;</code>
     * @return The field75.
     */
    @java.lang.Override
    public java.lang.String getField75() {
      java.lang.Object ref = field75_;
      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 (bs.isValidUtf8()) {
          field75_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field75 = 75;</code>
     * @return The bytes for field75.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField75Bytes() {
      java.lang.Object ref = field75_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field75_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD76_FIELD_NUMBER = 76;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field76_ = "";
    /**
     * <code>optional string field76 = 76;</code>
     * @return Whether the field76 field is set.
     */
    @java.lang.Override
    public boolean hasField76() {
      return ((bitField2_ & 0x00000800) != 0);
    }
    /**
     * <code>optional string field76 = 76;</code>
     * @return The field76.
     */
    @java.lang.Override
    public java.lang.String getField76() {
      java.lang.Object ref = field76_;
      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 (bs.isValidUtf8()) {
          field76_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field76 = 76;</code>
     * @return The bytes for field76.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField76Bytes() {
      java.lang.Object ref = field76_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field76_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD77_FIELD_NUMBER = 77;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field77_ = "";
    /**
     * <code>optional string field77 = 77;</code>
     * @return Whether the field77 field is set.
     */
    @java.lang.Override
    public boolean hasField77() {
      return ((bitField2_ & 0x00001000) != 0);
    }
    /**
     * <code>optional string field77 = 77;</code>
     * @return The field77.
     */
    @java.lang.Override
    public java.lang.String getField77() {
      java.lang.Object ref = field77_;
      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 (bs.isValidUtf8()) {
          field77_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field77 = 77;</code>
     * @return The bytes for field77.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField77Bytes() {
      java.lang.Object ref = field77_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field77_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD78_FIELD_NUMBER = 78;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field78_ = "";
    /**
     * <code>optional string field78 = 78;</code>
     * @return Whether the field78 field is set.
     */
    @java.lang.Override
    public boolean hasField78() {
      return ((bitField2_ & 0x00002000) != 0);
    }
    /**
     * <code>optional string field78 = 78;</code>
     * @return The field78.
     */
    @java.lang.Override
    public java.lang.String getField78() {
      java.lang.Object ref = field78_;
      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 (bs.isValidUtf8()) {
          field78_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field78 = 78;</code>
     * @return The bytes for field78.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField78Bytes() {
      java.lang.Object ref = field78_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field78_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD79_FIELD_NUMBER = 79;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field79_ = "";
    /**
     * <code>optional string field79 = 79;</code>
     * @return Whether the field79 field is set.
     */
    @java.lang.Override
    public boolean hasField79() {
      return ((bitField2_ & 0x00004000) != 0);
    }
    /**
     * <code>optional string field79 = 79;</code>
     * @return The field79.
     */
    @java.lang.Override
    public java.lang.String getField79() {
      java.lang.Object ref = field79_;
      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 (bs.isValidUtf8()) {
          field79_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field79 = 79;</code>
     * @return The bytes for field79.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField79Bytes() {
      java.lang.Object ref = field79_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field79_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD80_FIELD_NUMBER = 80;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field80_ = "";
    /**
     * <code>optional string field80 = 80;</code>
     * @return Whether the field80 field is set.
     */
    @java.lang.Override
    public boolean hasField80() {
      return ((bitField2_ & 0x00008000) != 0);
    }
    /**
     * <code>optional string field80 = 80;</code>
     * @return The field80.
     */
    @java.lang.Override
    public java.lang.String getField80() {
      java.lang.Object ref = field80_;
      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 (bs.isValidUtf8()) {
          field80_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field80 = 80;</code>
     * @return The bytes for field80.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField80Bytes() {
      java.lang.Object ref = field80_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field80_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD81_FIELD_NUMBER = 81;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field81_ = "";
    /**
     * <code>optional string field81 = 81;</code>
     * @return Whether the field81 field is set.
     */
    @java.lang.Override
    public boolean hasField81() {
      return ((bitField2_ & 0x00010000) != 0);
    }
    /**
     * <code>optional string field81 = 81;</code>
     * @return The field81.
     */
    @java.lang.Override
    public java.lang.String getField81() {
      java.lang.Object ref = field81_;
      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 (bs.isValidUtf8()) {
          field81_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field81 = 81;</code>
     * @return The bytes for field81.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField81Bytes() {
      java.lang.Object ref = field81_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field81_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD82_FIELD_NUMBER = 82;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field82_ = "";
    /**
     * <code>optional string field82 = 82;</code>
     * @return Whether the field82 field is set.
     */
    @java.lang.Override
    public boolean hasField82() {
      return ((bitField2_ & 0x00020000) != 0);
    }
    /**
     * <code>optional string field82 = 82;</code>
     * @return The field82.
     */
    @java.lang.Override
    public java.lang.String getField82() {
      java.lang.Object ref = field82_;
      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 (bs.isValidUtf8()) {
          field82_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field82 = 82;</code>
     * @return The bytes for field82.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField82Bytes() {
      java.lang.Object ref = field82_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field82_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD83_FIELD_NUMBER = 83;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field83_ = "";
    /**
     * <code>optional string field83 = 83;</code>
     * @return Whether the field83 field is set.
     */
    @java.lang.Override
    public boolean hasField83() {
      return ((bitField2_ & 0x00040000) != 0);
    }
    /**
     * <code>optional string field83 = 83;</code>
     * @return The field83.
     */
    @java.lang.Override
    public java.lang.String getField83() {
      java.lang.Object ref = field83_;
      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 (bs.isValidUtf8()) {
          field83_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field83 = 83;</code>
     * @return The bytes for field83.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField83Bytes() {
      java.lang.Object ref = field83_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field83_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD84_FIELD_NUMBER = 84;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field84_ = "";
    /**
     * <code>optional string field84 = 84;</code>
     * @return Whether the field84 field is set.
     */
    @java.lang.Override
    public boolean hasField84() {
      return ((bitField2_ & 0x00080000) != 0);
    }
    /**
     * <code>optional string field84 = 84;</code>
     * @return The field84.
     */
    @java.lang.Override
    public java.lang.String getField84() {
      java.lang.Object ref = field84_;
      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 (bs.isValidUtf8()) {
          field84_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field84 = 84;</code>
     * @return The bytes for field84.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField84Bytes() {
      java.lang.Object ref = field84_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field84_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD85_FIELD_NUMBER = 85;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field85_ = "";
    /**
     * <code>optional string field85 = 85;</code>
     * @return Whether the field85 field is set.
     */
    @java.lang.Override
    public boolean hasField85() {
      return ((bitField2_ & 0x00100000) != 0);
    }
    /**
     * <code>optional string field85 = 85;</code>
     * @return The field85.
     */
    @java.lang.Override
    public java.lang.String getField85() {
      java.lang.Object ref = field85_;
      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 (bs.isValidUtf8()) {
          field85_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field85 = 85;</code>
     * @return The bytes for field85.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField85Bytes() {
      java.lang.Object ref = field85_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field85_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD86_FIELD_NUMBER = 86;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field86_ = "";
    /**
     * <code>optional string field86 = 86;</code>
     * @return Whether the field86 field is set.
     */
    @java.lang.Override
    public boolean hasField86() {
      return ((bitField2_ & 0x00200000) != 0);
    }
    /**
     * <code>optional string field86 = 86;</code>
     * @return The field86.
     */
    @java.lang.Override
    public java.lang.String getField86() {
      java.lang.Object ref = field86_;
      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 (bs.isValidUtf8()) {
          field86_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field86 = 86;</code>
     * @return The bytes for field86.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField86Bytes() {
      java.lang.Object ref = field86_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field86_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD87_FIELD_NUMBER = 87;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field87_ = "";
    /**
     * <code>optional string field87 = 87;</code>
     * @return Whether the field87 field is set.
     */
    @java.lang.Override
    public boolean hasField87() {
      return ((bitField2_ & 0x00400000) != 0);
    }
    /**
     * <code>optional string field87 = 87;</code>
     * @return The field87.
     */
    @java.lang.Override
    public java.lang.String getField87() {
      java.lang.Object ref = field87_;
      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 (bs.isValidUtf8()) {
          field87_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field87 = 87;</code>
     * @return The bytes for field87.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField87Bytes() {
      java.lang.Object ref = field87_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field87_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD88_FIELD_NUMBER = 88;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field88_ = "";
    /**
     * <code>optional string field88 = 88;</code>
     * @return Whether the field88 field is set.
     */
    @java.lang.Override
    public boolean hasField88() {
      return ((bitField2_ & 0x00800000) != 0);
    }
    /**
     * <code>optional string field88 = 88;</code>
     * @return The field88.
     */
    @java.lang.Override
    public java.lang.String getField88() {
      java.lang.Object ref = field88_;
      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 (bs.isValidUtf8()) {
          field88_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field88 = 88;</code>
     * @return The bytes for field88.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField88Bytes() {
      java.lang.Object ref = field88_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field88_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD89_FIELD_NUMBER = 89;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field89_ = "";
    /**
     * <code>optional string field89 = 89;</code>
     * @return Whether the field89 field is set.
     */
    @java.lang.Override
    public boolean hasField89() {
      return ((bitField2_ & 0x01000000) != 0);
    }
    /**
     * <code>optional string field89 = 89;</code>
     * @return The field89.
     */
    @java.lang.Override
    public java.lang.String getField89() {
      java.lang.Object ref = field89_;
      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 (bs.isValidUtf8()) {
          field89_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field89 = 89;</code>
     * @return The bytes for field89.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField89Bytes() {
      java.lang.Object ref = field89_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field89_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD90_FIELD_NUMBER = 90;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field90_ = "";
    /**
     * <code>optional string field90 = 90;</code>
     * @return Whether the field90 field is set.
     */
    @java.lang.Override
    public boolean hasField90() {
      return ((bitField2_ & 0x02000000) != 0);
    }
    /**
     * <code>optional string field90 = 90;</code>
     * @return The field90.
     */
    @java.lang.Override
    public java.lang.String getField90() {
      java.lang.Object ref = field90_;
      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 (bs.isValidUtf8()) {
          field90_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field90 = 90;</code>
     * @return The bytes for field90.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField90Bytes() {
      java.lang.Object ref = field90_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field90_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD91_FIELD_NUMBER = 91;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field91_ = "";
    /**
     * <code>optional string field91 = 91;</code>
     * @return Whether the field91 field is set.
     */
    @java.lang.Override
    public boolean hasField91() {
      return ((bitField2_ & 0x04000000) != 0);
    }
    /**
     * <code>optional string field91 = 91;</code>
     * @return The field91.
     */
    @java.lang.Override
    public java.lang.String getField91() {
      java.lang.Object ref = field91_;
      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 (bs.isValidUtf8()) {
          field91_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field91 = 91;</code>
     * @return The bytes for field91.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField91Bytes() {
      java.lang.Object ref = field91_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field91_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD92_FIELD_NUMBER = 92;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field92_ = "";
    /**
     * <code>optional string field92 = 92;</code>
     * @return Whether the field92 field is set.
     */
    @java.lang.Override
    public boolean hasField92() {
      return ((bitField2_ & 0x08000000) != 0);
    }
    /**
     * <code>optional string field92 = 92;</code>
     * @return The field92.
     */
    @java.lang.Override
    public java.lang.String getField92() {
      java.lang.Object ref = field92_;
      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 (bs.isValidUtf8()) {
          field92_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field92 = 92;</code>
     * @return The bytes for field92.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField92Bytes() {
      java.lang.Object ref = field92_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field92_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD93_FIELD_NUMBER = 93;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field93_ = "";
    /**
     * <code>optional string field93 = 93;</code>
     * @return Whether the field93 field is set.
     */
    @java.lang.Override
    public boolean hasField93() {
      return ((bitField2_ & 0x10000000) != 0);
    }
    /**
     * <code>optional string field93 = 93;</code>
     * @return The field93.
     */
    @java.lang.Override
    public java.lang.String getField93() {
      java.lang.Object ref = field93_;
      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 (bs.isValidUtf8()) {
          field93_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field93 = 93;</code>
     * @return The bytes for field93.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField93Bytes() {
      java.lang.Object ref = field93_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field93_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD94_FIELD_NUMBER = 94;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field94_ = "";
    /**
     * <code>optional string field94 = 94;</code>
     * @return Whether the field94 field is set.
     */
    @java.lang.Override
    public boolean hasField94() {
      return ((bitField2_ & 0x20000000) != 0);
    }
    /**
     * <code>optional string field94 = 94;</code>
     * @return The field94.
     */
    @java.lang.Override
    public java.lang.String getField94() {
      java.lang.Object ref = field94_;
      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 (bs.isValidUtf8()) {
          field94_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field94 = 94;</code>
     * @return The bytes for field94.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField94Bytes() {
      java.lang.Object ref = field94_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field94_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD95_FIELD_NUMBER = 95;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field95_ = "";
    /**
     * <code>optional string field95 = 95;</code>
     * @return Whether the field95 field is set.
     */
    @java.lang.Override
    public boolean hasField95() {
      return ((bitField2_ & 0x40000000) != 0);
    }
    /**
     * <code>optional string field95 = 95;</code>
     * @return The field95.
     */
    @java.lang.Override
    public java.lang.String getField95() {
      java.lang.Object ref = field95_;
      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 (bs.isValidUtf8()) {
          field95_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field95 = 95;</code>
     * @return The bytes for field95.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField95Bytes() {
      java.lang.Object ref = field95_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field95_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD96_FIELD_NUMBER = 96;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field96_ = "";
    /**
     * <code>optional string field96 = 96;</code>
     * @return Whether the field96 field is set.
     */
    @java.lang.Override
    public boolean hasField96() {
      return ((bitField2_ & 0x80000000) != 0);
    }
    /**
     * <code>optional string field96 = 96;</code>
     * @return The field96.
     */
    @java.lang.Override
    public java.lang.String getField96() {
      java.lang.Object ref = field96_;
      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 (bs.isValidUtf8()) {
          field96_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field96 = 96;</code>
     * @return The bytes for field96.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField96Bytes() {
      java.lang.Object ref = field96_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field96_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD97_FIELD_NUMBER = 97;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field97_ = "";
    /**
     * <code>optional string field97 = 97;</code>
     * @return Whether the field97 field is set.
     */
    @java.lang.Override
    public boolean hasField97() {
      return ((bitField3_ & 0x00000001) != 0);
    }
    /**
     * <code>optional string field97 = 97;</code>
     * @return The field97.
     */
    @java.lang.Override
    public java.lang.String getField97() {
      java.lang.Object ref = field97_;
      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 (bs.isValidUtf8()) {
          field97_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field97 = 97;</code>
     * @return The bytes for field97.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField97Bytes() {
      java.lang.Object ref = field97_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field97_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD98_FIELD_NUMBER = 98;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field98_ = "";
    /**
     * <code>optional string field98 = 98;</code>
     * @return Whether the field98 field is set.
     */
    @java.lang.Override
    public boolean hasField98() {
      return ((bitField3_ & 0x00000002) != 0);
    }
    /**
     * <code>optional string field98 = 98;</code>
     * @return The field98.
     */
    @java.lang.Override
    public java.lang.String getField98() {
      java.lang.Object ref = field98_;
      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 (bs.isValidUtf8()) {
          field98_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field98 = 98;</code>
     * @return The bytes for field98.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField98Bytes() {
      java.lang.Object ref = field98_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field98_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD99_FIELD_NUMBER = 99;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field99_ = "";
    /**
     * <code>optional string field99 = 99;</code>
     * @return Whether the field99 field is set.
     */
    @java.lang.Override
    public boolean hasField99() {
      return ((bitField3_ & 0x00000004) != 0);
    }
    /**
     * <code>optional string field99 = 99;</code>
     * @return The field99.
     */
    @java.lang.Override
    public java.lang.String getField99() {
      java.lang.Object ref = field99_;
      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 (bs.isValidUtf8()) {
          field99_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field99 = 99;</code>
     * @return The bytes for field99.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField99Bytes() {
      java.lang.Object ref = field99_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field99_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD100_FIELD_NUMBER = 100;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field100_ = "";
    /**
     * <code>optional string field100 = 100;</code>
     * @return Whether the field100 field is set.
     */
    @java.lang.Override
    public boolean hasField100() {
      return ((bitField3_ & 0x00000008) != 0);
    }
    /**
     * <code>optional string field100 = 100;</code>
     * @return The field100.
     */
    @java.lang.Override
    public java.lang.String getField100() {
      java.lang.Object ref = field100_;
      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 (bs.isValidUtf8()) {
          field100_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field100 = 100;</code>
     * @return The bytes for field100.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField100Bytes() {
      java.lang.Object ref = field100_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field100_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD101_FIELD_NUMBER = 101;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field101_ = "";
    /**
     * <code>optional string field101 = 101;</code>
     * @return Whether the field101 field is set.
     */
    @java.lang.Override
    public boolean hasField101() {
      return ((bitField3_ & 0x00000010) != 0);
    }
    /**
     * <code>optional string field101 = 101;</code>
     * @return The field101.
     */
    @java.lang.Override
    public java.lang.String getField101() {
      java.lang.Object ref = field101_;
      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 (bs.isValidUtf8()) {
          field101_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field101 = 101;</code>
     * @return The bytes for field101.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField101Bytes() {
      java.lang.Object ref = field101_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field101_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD102_FIELD_NUMBER = 102;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field102_ = "";
    /**
     * <code>optional string field102 = 102;</code>
     * @return Whether the field102 field is set.
     */
    @java.lang.Override
    public boolean hasField102() {
      return ((bitField3_ & 0x00000020) != 0);
    }
    /**
     * <code>optional string field102 = 102;</code>
     * @return The field102.
     */
    @java.lang.Override
    public java.lang.String getField102() {
      java.lang.Object ref = field102_;
      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 (bs.isValidUtf8()) {
          field102_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field102 = 102;</code>
     * @return The bytes for field102.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField102Bytes() {
      java.lang.Object ref = field102_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field102_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD103_FIELD_NUMBER = 103;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field103_ = "";
    /**
     * <code>optional string field103 = 103;</code>
     * @return Whether the field103 field is set.
     */
    @java.lang.Override
    public boolean hasField103() {
      return ((bitField3_ & 0x00000040) != 0);
    }
    /**
     * <code>optional string field103 = 103;</code>
     * @return The field103.
     */
    @java.lang.Override
    public java.lang.String getField103() {
      java.lang.Object ref = field103_;
      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 (bs.isValidUtf8()) {
          field103_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field103 = 103;</code>
     * @return The bytes for field103.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField103Bytes() {
      java.lang.Object ref = field103_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field103_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD104_FIELD_NUMBER = 104;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field104_ = "";
    /**
     * <code>optional string field104 = 104;</code>
     * @return Whether the field104 field is set.
     */
    @java.lang.Override
    public boolean hasField104() {
      return ((bitField3_ & 0x00000080) != 0);
    }
    /**
     * <code>optional string field104 = 104;</code>
     * @return The field104.
     */
    @java.lang.Override
    public java.lang.String getField104() {
      java.lang.Object ref = field104_;
      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 (bs.isValidUtf8()) {
          field104_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field104 = 104;</code>
     * @return The bytes for field104.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField104Bytes() {
      java.lang.Object ref = field104_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field104_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD105_FIELD_NUMBER = 105;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field105_ = "";
    /**
     * <code>optional string field105 = 105;</code>
     * @return Whether the field105 field is set.
     */
    @java.lang.Override
    public boolean hasField105() {
      return ((bitField3_ & 0x00000100) != 0);
    }
    /**
     * <code>optional string field105 = 105;</code>
     * @return The field105.
     */
    @java.lang.Override
    public java.lang.String getField105() {
      java.lang.Object ref = field105_;
      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 (bs.isValidUtf8()) {
          field105_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field105 = 105;</code>
     * @return The bytes for field105.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField105Bytes() {
      java.lang.Object ref = field105_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field105_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD106_FIELD_NUMBER = 106;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field106_ = "";
    /**
     * <code>optional string field106 = 106;</code>
     * @return Whether the field106 field is set.
     */
    @java.lang.Override
    public boolean hasField106() {
      return ((bitField3_ & 0x00000200) != 0);
    }
    /**
     * <code>optional string field106 = 106;</code>
     * @return The field106.
     */
    @java.lang.Override
    public java.lang.String getField106() {
      java.lang.Object ref = field106_;
      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 (bs.isValidUtf8()) {
          field106_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field106 = 106;</code>
     * @return The bytes for field106.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField106Bytes() {
      java.lang.Object ref = field106_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field106_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD107_FIELD_NUMBER = 107;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field107_ = "";
    /**
     * <code>optional string field107 = 107;</code>
     * @return Whether the field107 field is set.
     */
    @java.lang.Override
    public boolean hasField107() {
      return ((bitField3_ & 0x00000400) != 0);
    }
    /**
     * <code>optional string field107 = 107;</code>
     * @return The field107.
     */
    @java.lang.Override
    public java.lang.String getField107() {
      java.lang.Object ref = field107_;
      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 (bs.isValidUtf8()) {
          field107_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field107 = 107;</code>
     * @return The bytes for field107.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField107Bytes() {
      java.lang.Object ref = field107_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field107_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD108_FIELD_NUMBER = 108;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field108_ = "";
    /**
     * <code>optional string field108 = 108;</code>
     * @return Whether the field108 field is set.
     */
    @java.lang.Override
    public boolean hasField108() {
      return ((bitField3_ & 0x00000800) != 0);
    }
    /**
     * <code>optional string field108 = 108;</code>
     * @return The field108.
     */
    @java.lang.Override
    public java.lang.String getField108() {
      java.lang.Object ref = field108_;
      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 (bs.isValidUtf8()) {
          field108_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field108 = 108;</code>
     * @return The bytes for field108.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField108Bytes() {
      java.lang.Object ref = field108_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field108_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD109_FIELD_NUMBER = 109;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field109_ = "";
    /**
     * <code>optional string field109 = 109;</code>
     * @return Whether the field109 field is set.
     */
    @java.lang.Override
    public boolean hasField109() {
      return ((bitField3_ & 0x00001000) != 0);
    }
    /**
     * <code>optional string field109 = 109;</code>
     * @return The field109.
     */
    @java.lang.Override
    public java.lang.String getField109() {
      java.lang.Object ref = field109_;
      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 (bs.isValidUtf8()) {
          field109_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field109 = 109;</code>
     * @return The bytes for field109.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField109Bytes() {
      java.lang.Object ref = field109_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field109_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD110_FIELD_NUMBER = 110;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field110_ = "";
    /**
     * <code>optional string field110 = 110;</code>
     * @return Whether the field110 field is set.
     */
    @java.lang.Override
    public boolean hasField110() {
      return ((bitField3_ & 0x00002000) != 0);
    }
    /**
     * <code>optional string field110 = 110;</code>
     * @return The field110.
     */
    @java.lang.Override
    public java.lang.String getField110() {
      java.lang.Object ref = field110_;
      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 (bs.isValidUtf8()) {
          field110_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field110 = 110;</code>
     * @return The bytes for field110.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField110Bytes() {
      java.lang.Object ref = field110_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field110_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD111_FIELD_NUMBER = 111;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field111_ = "";
    /**
     * <code>optional string field111 = 111;</code>
     * @return Whether the field111 field is set.
     */
    @java.lang.Override
    public boolean hasField111() {
      return ((bitField3_ & 0x00004000) != 0);
    }
    /**
     * <code>optional string field111 = 111;</code>
     * @return The field111.
     */
    @java.lang.Override
    public java.lang.String getField111() {
      java.lang.Object ref = field111_;
      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 (bs.isValidUtf8()) {
          field111_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field111 = 111;</code>
     * @return The bytes for field111.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField111Bytes() {
      java.lang.Object ref = field111_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field111_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD112_FIELD_NUMBER = 112;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field112_ = "";
    /**
     * <code>optional string field112 = 112;</code>
     * @return Whether the field112 field is set.
     */
    @java.lang.Override
    public boolean hasField112() {
      return ((bitField3_ & 0x00008000) != 0);
    }
    /**
     * <code>optional string field112 = 112;</code>
     * @return The field112.
     */
    @java.lang.Override
    public java.lang.String getField112() {
      java.lang.Object ref = field112_;
      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 (bs.isValidUtf8()) {
          field112_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field112 = 112;</code>
     * @return The bytes for field112.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField112Bytes() {
      java.lang.Object ref = field112_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field112_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD113_FIELD_NUMBER = 113;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field113_ = "";
    /**
     * <code>optional string field113 = 113;</code>
     * @return Whether the field113 field is set.
     */
    @java.lang.Override
    public boolean hasField113() {
      return ((bitField3_ & 0x00010000) != 0);
    }
    /**
     * <code>optional string field113 = 113;</code>
     * @return The field113.
     */
    @java.lang.Override
    public java.lang.String getField113() {
      java.lang.Object ref = field113_;
      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 (bs.isValidUtf8()) {
          field113_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field113 = 113;</code>
     * @return The bytes for field113.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField113Bytes() {
      java.lang.Object ref = field113_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field113_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD114_FIELD_NUMBER = 114;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field114_ = "";
    /**
     * <code>optional string field114 = 114;</code>
     * @return Whether the field114 field is set.
     */
    @java.lang.Override
    public boolean hasField114() {
      return ((bitField3_ & 0x00020000) != 0);
    }
    /**
     * <code>optional string field114 = 114;</code>
     * @return The field114.
     */
    @java.lang.Override
    public java.lang.String getField114() {
      java.lang.Object ref = field114_;
      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 (bs.isValidUtf8()) {
          field114_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field114 = 114;</code>
     * @return The bytes for field114.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField114Bytes() {
      java.lang.Object ref = field114_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field114_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD115_FIELD_NUMBER = 115;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field115_ = "";
    /**
     * <code>optional string field115 = 115;</code>
     * @return Whether the field115 field is set.
     */
    @java.lang.Override
    public boolean hasField115() {
      return ((bitField3_ & 0x00040000) != 0);
    }
    /**
     * <code>optional string field115 = 115;</code>
     * @return The field115.
     */
    @java.lang.Override
    public java.lang.String getField115() {
      java.lang.Object ref = field115_;
      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 (bs.isValidUtf8()) {
          field115_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field115 = 115;</code>
     * @return The bytes for field115.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField115Bytes() {
      java.lang.Object ref = field115_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field115_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD116_FIELD_NUMBER = 116;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field116_ = "";
    /**
     * <code>optional string field116 = 116;</code>
     * @return Whether the field116 field is set.
     */
    @java.lang.Override
    public boolean hasField116() {
      return ((bitField3_ & 0x00080000) != 0);
    }
    /**
     * <code>optional string field116 = 116;</code>
     * @return The field116.
     */
    @java.lang.Override
    public java.lang.String getField116() {
      java.lang.Object ref = field116_;
      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 (bs.isValidUtf8()) {
          field116_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field116 = 116;</code>
     * @return The bytes for field116.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField116Bytes() {
      java.lang.Object ref = field116_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field116_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD117_FIELD_NUMBER = 117;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field117_ = "";
    /**
     * <code>optional string field117 = 117;</code>
     * @return Whether the field117 field is set.
     */
    @java.lang.Override
    public boolean hasField117() {
      return ((bitField3_ & 0x00100000) != 0);
    }
    /**
     * <code>optional string field117 = 117;</code>
     * @return The field117.
     */
    @java.lang.Override
    public java.lang.String getField117() {
      java.lang.Object ref = field117_;
      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 (bs.isValidUtf8()) {
          field117_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field117 = 117;</code>
     * @return The bytes for field117.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField117Bytes() {
      java.lang.Object ref = field117_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field117_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD118_FIELD_NUMBER = 118;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field118_ = "";
    /**
     * <code>optional string field118 = 118;</code>
     * @return Whether the field118 field is set.
     */
    @java.lang.Override
    public boolean hasField118() {
      return ((bitField3_ & 0x00200000) != 0);
    }
    /**
     * <code>optional string field118 = 118;</code>
     * @return The field118.
     */
    @java.lang.Override
    public java.lang.String getField118() {
      java.lang.Object ref = field118_;
      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 (bs.isValidUtf8()) {
          field118_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field118 = 118;</code>
     * @return The bytes for field118.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField118Bytes() {
      java.lang.Object ref = field118_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field118_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD119_FIELD_NUMBER = 119;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field119_ = "";
    /**
     * <code>optional string field119 = 119;</code>
     * @return Whether the field119 field is set.
     */
    @java.lang.Override
    public boolean hasField119() {
      return ((bitField3_ & 0x00400000) != 0);
    }
    /**
     * <code>optional string field119 = 119;</code>
     * @return The field119.
     */
    @java.lang.Override
    public java.lang.String getField119() {
      java.lang.Object ref = field119_;
      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 (bs.isValidUtf8()) {
          field119_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field119 = 119;</code>
     * @return The bytes for field119.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField119Bytes() {
      java.lang.Object ref = field119_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field119_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD120_FIELD_NUMBER = 120;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field120_ = "";
    /**
     * <code>optional string field120 = 120;</code>
     * @return Whether the field120 field is set.
     */
    @java.lang.Override
    public boolean hasField120() {
      return ((bitField3_ & 0x00800000) != 0);
    }
    /**
     * <code>optional string field120 = 120;</code>
     * @return The field120.
     */
    @java.lang.Override
    public java.lang.String getField120() {
      java.lang.Object ref = field120_;
      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 (bs.isValidUtf8()) {
          field120_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field120 = 120;</code>
     * @return The bytes for field120.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField120Bytes() {
      java.lang.Object ref = field120_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field120_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD121_FIELD_NUMBER = 121;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field121_ = "";
    /**
     * <code>optional string field121 = 121;</code>
     * @return Whether the field121 field is set.
     */
    @java.lang.Override
    public boolean hasField121() {
      return ((bitField3_ & 0x01000000) != 0);
    }
    /**
     * <code>optional string field121 = 121;</code>
     * @return The field121.
     */
    @java.lang.Override
    public java.lang.String getField121() {
      java.lang.Object ref = field121_;
      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 (bs.isValidUtf8()) {
          field121_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field121 = 121;</code>
     * @return The bytes for field121.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField121Bytes() {
      java.lang.Object ref = field121_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field121_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD122_FIELD_NUMBER = 122;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field122_ = "";
    /**
     * <code>optional string field122 = 122;</code>
     * @return Whether the field122 field is set.
     */
    @java.lang.Override
    public boolean hasField122() {
      return ((bitField3_ & 0x02000000) != 0);
    }
    /**
     * <code>optional string field122 = 122;</code>
     * @return The field122.
     */
    @java.lang.Override
    public java.lang.String getField122() {
      java.lang.Object ref = field122_;
      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 (bs.isValidUtf8()) {
          field122_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field122 = 122;</code>
     * @return The bytes for field122.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField122Bytes() {
      java.lang.Object ref = field122_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field122_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD123_FIELD_NUMBER = 123;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field123_ = "";
    /**
     * <code>optional string field123 = 123;</code>
     * @return Whether the field123 field is set.
     */
    @java.lang.Override
    public boolean hasField123() {
      return ((bitField3_ & 0x04000000) != 0);
    }
    /**
     * <code>optional string field123 = 123;</code>
     * @return The field123.
     */
    @java.lang.Override
    public java.lang.String getField123() {
      java.lang.Object ref = field123_;
      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 (bs.isValidUtf8()) {
          field123_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field123 = 123;</code>
     * @return The bytes for field123.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField123Bytes() {
      java.lang.Object ref = field123_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field123_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD124_FIELD_NUMBER = 124;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field124_ = "";
    /**
     * <code>optional string field124 = 124;</code>
     * @return Whether the field124 field is set.
     */
    @java.lang.Override
    public boolean hasField124() {
      return ((bitField3_ & 0x08000000) != 0);
    }
    /**
     * <code>optional string field124 = 124;</code>
     * @return The field124.
     */
    @java.lang.Override
    public java.lang.String getField124() {
      java.lang.Object ref = field124_;
      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 (bs.isValidUtf8()) {
          field124_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field124 = 124;</code>
     * @return The bytes for field124.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField124Bytes() {
      java.lang.Object ref = field124_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field124_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD125_FIELD_NUMBER = 125;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field125_ = "";
    /**
     * <code>optional string field125 = 125;</code>
     * @return Whether the field125 field is set.
     */
    @java.lang.Override
    public boolean hasField125() {
      return ((bitField3_ & 0x10000000) != 0);
    }
    /**
     * <code>optional string field125 = 125;</code>
     * @return The field125.
     */
    @java.lang.Override
    public java.lang.String getField125() {
      java.lang.Object ref = field125_;
      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 (bs.isValidUtf8()) {
          field125_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field125 = 125;</code>
     * @return The bytes for field125.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField125Bytes() {
      java.lang.Object ref = field125_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field125_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD126_FIELD_NUMBER = 126;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field126_ = "";
    /**
     * <code>optional string field126 = 126;</code>
     * @return Whether the field126 field is set.
     */
    @java.lang.Override
    public boolean hasField126() {
      return ((bitField3_ & 0x20000000) != 0);
    }
    /**
     * <code>optional string field126 = 126;</code>
     * @return The field126.
     */
    @java.lang.Override
    public java.lang.String getField126() {
      java.lang.Object ref = field126_;
      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 (bs.isValidUtf8()) {
          field126_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field126 = 126;</code>
     * @return The bytes for field126.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField126Bytes() {
      java.lang.Object ref = field126_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field126_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD127_FIELD_NUMBER = 127;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field127_ = "";
    /**
     * <code>optional string field127 = 127;</code>
     * @return Whether the field127 field is set.
     */
    @java.lang.Override
    public boolean hasField127() {
      return ((bitField3_ & 0x40000000) != 0);
    }
    /**
     * <code>optional string field127 = 127;</code>
     * @return The field127.
     */
    @java.lang.Override
    public java.lang.String getField127() {
      java.lang.Object ref = field127_;
      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 (bs.isValidUtf8()) {
          field127_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field127 = 127;</code>
     * @return The bytes for field127.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField127Bytes() {
      java.lang.Object ref = field127_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field127_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD128_FIELD_NUMBER = 128;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field128_ = "";
    /**
     * <code>optional string field128 = 128;</code>
     * @return Whether the field128 field is set.
     */
    @java.lang.Override
    public boolean hasField128() {
      return ((bitField3_ & 0x80000000) != 0);
    }
    /**
     * <code>optional string field128 = 128;</code>
     * @return The field128.
     */
    @java.lang.Override
    public java.lang.String getField128() {
      java.lang.Object ref = field128_;
      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 (bs.isValidUtf8()) {
          field128_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string field128 = 128;</code>
     * @return The bytes for field128.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField128Bytes() {
      java.lang.Object ref = field128_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field128_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD129_FIELD_NUMBER = 129;
    @SuppressWarnings("serial")
    private volatile java.lang.Object field129_ = "";
    /**
     * <code>required string field129 = 129;</code>
     * @return Whether the field129 field is set.
     */
    @java.lang.Override
    public boolean hasField129() {
      return ((bitField4_ & 0x00000001) != 0);
    }
    /**
     * <code>required string field129 = 129;</code>
     * @return The field129.
     */
    @java.lang.Override
    public java.lang.String getField129() {
      java.lang.Object ref = field129_;
      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 (bs.isValidUtf8()) {
          field129_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string field129 = 129;</code>
     * @return The bytes for field129.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getField129Bytes() {
      java.lang.Object ref = field129_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        field129_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasField1()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasField129()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, field1_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, field2_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, field3_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, field4_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, field5_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, field6_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, field7_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, field8_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, field9_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, field10_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, field11_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, field12_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 13, field13_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 14, field14_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 15, field15_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 16, field16_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 17, field17_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 18, field18_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 19, field19_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 20, field20_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 21, field21_);
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 22, field22_);
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 23, field23_);
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 24, field24_);
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 25, field25_);
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 26, field26_);
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 27, field27_);
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 28, field28_);
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 29, field29_);
      }
      if (((bitField0_ & 0x20000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 30, field30_);
      }
      if (((bitField0_ & 0x40000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 31, field31_);
      }
      if (((bitField0_ & 0x80000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 32, field32_);
      }
      if (((bitField1_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 33, field33_);
      }
      if (((bitField1_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 34, field34_);
      }
      if (((bitField1_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 35, field35_);
      }
      if (((bitField1_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 36, field36_);
      }
      if (((bitField1_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 37, field37_);
      }
      if (((bitField1_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 38, field38_);
      }
      if (((bitField1_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 39, field39_);
      }
      if (((bitField1_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 40, field40_);
      }
      if (((bitField1_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 41, field41_);
      }
      if (((bitField1_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 42, field42_);
      }
      if (((bitField1_ & 0x00000400) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 43, field43_);
      }
      if (((bitField1_ & 0x00000800) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 44, field44_);
      }
      if (((bitField1_ & 0x00001000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 45, field45_);
      }
      if (((bitField1_ & 0x00002000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 46, field46_);
      }
      if (((bitField1_ & 0x00004000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 47, field47_);
      }
      if (((bitField1_ & 0x00008000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 48, field48_);
      }
      if (((bitField1_ & 0x00010000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 49, field49_);
      }
      if (((bitField1_ & 0x00020000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 50, field50_);
      }
      if (((bitField1_ & 0x00040000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 51, field51_);
      }
      if (((bitField1_ & 0x00080000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 52, field52_);
      }
      if (((bitField1_ & 0x00100000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 53, field53_);
      }
      if (((bitField1_ & 0x00200000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 54, field54_);
      }
      if (((bitField1_ & 0x00400000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 55, field55_);
      }
      if (((bitField1_ & 0x00800000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 56, field56_);
      }
      if (((bitField1_ & 0x01000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 57, field57_);
      }
      if (((bitField1_ & 0x02000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 58, field58_);
      }
      if (((bitField1_ & 0x04000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 59, field59_);
      }
      if (((bitField1_ & 0x08000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 60, field60_);
      }
      if (((bitField1_ & 0x10000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 61, field61_);
      }
      if (((bitField1_ & 0x20000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 62, field62_);
      }
      if (((bitField1_ & 0x40000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 63, field63_);
      }
      if (((bitField1_ & 0x80000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 64, field64_);
      }
      if (((bitField2_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 65, field65_);
      }
      if (((bitField2_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 66, field66_);
      }
      if (((bitField2_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 67, field67_);
      }
      if (((bitField2_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 68, field68_);
      }
      if (((bitField2_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 69, field69_);
      }
      if (((bitField2_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 70, field70_);
      }
      if (((bitField2_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 71, field71_);
      }
      if (((bitField2_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 72, field72_);
      }
      if (((bitField2_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 73, field73_);
      }
      if (((bitField2_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 74, field74_);
      }
      if (((bitField2_ & 0x00000400) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 75, field75_);
      }
      if (((bitField2_ & 0x00000800) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 76, field76_);
      }
      if (((bitField2_ & 0x00001000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 77, field77_);
      }
      if (((bitField2_ & 0x00002000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 78, field78_);
      }
      if (((bitField2_ & 0x00004000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 79, field79_);
      }
      if (((bitField2_ & 0x00008000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 80, field80_);
      }
      if (((bitField2_ & 0x00010000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 81, field81_);
      }
      if (((bitField2_ & 0x00020000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 82, field82_);
      }
      if (((bitField2_ & 0x00040000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 83, field83_);
      }
      if (((bitField2_ & 0x00080000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 84, field84_);
      }
      if (((bitField2_ & 0x00100000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 85, field85_);
      }
      if (((bitField2_ & 0x00200000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 86, field86_);
      }
      if (((bitField2_ & 0x00400000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 87, field87_);
      }
      if (((bitField2_ & 0x00800000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 88, field88_);
      }
      if (((bitField2_ & 0x01000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 89, field89_);
      }
      if (((bitField2_ & 0x02000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 90, field90_);
      }
      if (((bitField2_ & 0x04000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 91, field91_);
      }
      if (((bitField2_ & 0x08000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 92, field92_);
      }
      if (((bitField2_ & 0x10000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 93, field93_);
      }
      if (((bitField2_ & 0x20000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 94, field94_);
      }
      if (((bitField2_ & 0x40000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 95, field95_);
      }
      if (((bitField2_ & 0x80000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 96, field96_);
      }
      if (((bitField3_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 97, field97_);
      }
      if (((bitField3_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 98, field98_);
      }
      if (((bitField3_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 99, field99_);
      }
      if (((bitField3_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 100, field100_);
      }
      if (((bitField3_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 101, field101_);
      }
      if (((bitField3_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 102, field102_);
      }
      if (((bitField3_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 103, field103_);
      }
      if (((bitField3_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 104, field104_);
      }
      if (((bitField3_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 105, field105_);
      }
      if (((bitField3_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 106, field106_);
      }
      if (((bitField3_ & 0x00000400) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 107, field107_);
      }
      if (((bitField3_ & 0x00000800) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 108, field108_);
      }
      if (((bitField3_ & 0x00001000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 109, field109_);
      }
      if (((bitField3_ & 0x00002000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 110, field110_);
      }
      if (((bitField3_ & 0x00004000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 111, field111_);
      }
      if (((bitField3_ & 0x00008000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 112, field112_);
      }
      if (((bitField3_ & 0x00010000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 113, field113_);
      }
      if (((bitField3_ & 0x00020000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 114, field114_);
      }
      if (((bitField3_ & 0x00040000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 115, field115_);
      }
      if (((bitField3_ & 0x00080000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 116, field116_);
      }
      if (((bitField3_ & 0x00100000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 117, field117_);
      }
      if (((bitField3_ & 0x00200000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 118, field118_);
      }
      if (((bitField3_ & 0x00400000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 119, field119_);
      }
      if (((bitField3_ & 0x00800000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 120, field120_);
      }
      if (((bitField3_ & 0x01000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 121, field121_);
      }
      if (((bitField3_ & 0x02000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 122, field122_);
      }
      if (((bitField3_ & 0x04000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 123, field123_);
      }
      if (((bitField3_ & 0x08000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 124, field124_);
      }
      if (((bitField3_ & 0x10000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 125, field125_);
      }
      if (((bitField3_ & 0x20000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 126, field126_);
      }
      if (((bitField3_ & 0x40000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 127, field127_);
      }
      if (((bitField3_ & 0x80000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 128, field128_);
      }
      if (((bitField4_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 129, field129_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, field1_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, field2_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, field3_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, field4_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, field5_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, field6_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, field7_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, field8_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, field9_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, field10_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, field11_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, field12_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, field13_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, field14_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, field15_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, field16_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(17, field17_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(18, field18_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(19, field19_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(20, field20_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(21, field21_);
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(22, field22_);
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(23, field23_);
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(24, field24_);
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(25, field25_);
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(26, field26_);
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(27, field27_);
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(28, field28_);
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(29, field29_);
      }
      if (((bitField0_ & 0x20000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(30, field30_);
      }
      if (((bitField0_ & 0x40000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(31, field31_);
      }
      if (((bitField0_ & 0x80000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(32, field32_);
      }
      if (((bitField1_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(33, field33_);
      }
      if (((bitField1_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(34, field34_);
      }
      if (((bitField1_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(35, field35_);
      }
      if (((bitField1_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(36, field36_);
      }
      if (((bitField1_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(37, field37_);
      }
      if (((bitField1_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(38, field38_);
      }
      if (((bitField1_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(39, field39_);
      }
      if (((bitField1_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(40, field40_);
      }
      if (((bitField1_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(41, field41_);
      }
      if (((bitField1_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(42, field42_);
      }
      if (((bitField1_ & 0x00000400) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(43, field43_);
      }
      if (((bitField1_ & 0x00000800) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(44, field44_);
      }
      if (((bitField1_ & 0x00001000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(45, field45_);
      }
      if (((bitField1_ & 0x00002000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(46, field46_);
      }
      if (((bitField1_ & 0x00004000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(47, field47_);
      }
      if (((bitField1_ & 0x00008000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(48, field48_);
      }
      if (((bitField1_ & 0x00010000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(49, field49_);
      }
      if (((bitField1_ & 0x00020000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(50, field50_);
      }
      if (((bitField1_ & 0x00040000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(51, field51_);
      }
      if (((bitField1_ & 0x00080000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(52, field52_);
      }
      if (((bitField1_ & 0x00100000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(53, field53_);
      }
      if (((bitField1_ & 0x00200000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(54, field54_);
      }
      if (((bitField1_ & 0x00400000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(55, field55_);
      }
      if (((bitField1_ & 0x00800000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(56, field56_);
      }
      if (((bitField1_ & 0x01000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(57, field57_);
      }
      if (((bitField1_ & 0x02000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(58, field58_);
      }
      if (((bitField1_ & 0x04000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(59, field59_);
      }
      if (((bitField1_ & 0x08000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(60, field60_);
      }
      if (((bitField1_ & 0x10000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(61, field61_);
      }
      if (((bitField1_ & 0x20000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(62, field62_);
      }
      if (((bitField1_ & 0x40000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(63, field63_);
      }
      if (((bitField1_ & 0x80000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(64, field64_);
      }
      if (((bitField2_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(65, field65_);
      }
      if (((bitField2_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(66, field66_);
      }
      if (((bitField2_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(67, field67_);
      }
      if (((bitField2_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(68, field68_);
      }
      if (((bitField2_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(69, field69_);
      }
      if (((bitField2_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(70, field70_);
      }
      if (((bitField2_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(71, field71_);
      }
      if (((bitField2_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(72, field72_);
      }
      if (((bitField2_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(73, field73_);
      }
      if (((bitField2_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(74, field74_);
      }
      if (((bitField2_ & 0x00000400) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(75, field75_);
      }
      if (((bitField2_ & 0x00000800) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(76, field76_);
      }
      if (((bitField2_ & 0x00001000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(77, field77_);
      }
      if (((bitField2_ & 0x00002000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(78, field78_);
      }
      if (((bitField2_ & 0x00004000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(79, field79_);
      }
      if (((bitField2_ & 0x00008000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(80, field80_);
      }
      if (((bitField2_ & 0x00010000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(81, field81_);
      }
      if (((bitField2_ & 0x00020000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(82, field82_);
      }
      if (((bitField2_ & 0x00040000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(83, field83_);
      }
      if (((bitField2_ & 0x00080000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(84, field84_);
      }
      if (((bitField2_ & 0x00100000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(85, field85_);
      }
      if (((bitField2_ & 0x00200000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(86, field86_);
      }
      if (((bitField2_ & 0x00400000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(87, field87_);
      }
      if (((bitField2_ & 0x00800000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(88, field88_);
      }
      if (((bitField2_ & 0x01000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(89, field89_);
      }
      if (((bitField2_ & 0x02000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(90, field90_);
      }
      if (((bitField2_ & 0x04000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(91, field91_);
      }
      if (((bitField2_ & 0x08000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(92, field92_);
      }
      if (((bitField2_ & 0x10000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(93, field93_);
      }
      if (((bitField2_ & 0x20000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(94, field94_);
      }
      if (((bitField2_ & 0x40000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(95, field95_);
      }
      if (((bitField2_ & 0x80000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(96, field96_);
      }
      if (((bitField3_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(97, field97_);
      }
      if (((bitField3_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(98, field98_);
      }
      if (((bitField3_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(99, field99_);
      }
      if (((bitField3_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(100, field100_);
      }
      if (((bitField3_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(101, field101_);
      }
      if (((bitField3_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(102, field102_);
      }
      if (((bitField3_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(103, field103_);
      }
      if (((bitField3_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(104, field104_);
      }
      if (((bitField3_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(105, field105_);
      }
      if (((bitField3_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(106, field106_);
      }
      if (((bitField3_ & 0x00000400) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(107, field107_);
      }
      if (((bitField3_ & 0x00000800) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(108, field108_);
      }
      if (((bitField3_ & 0x00001000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(109, field109_);
      }
      if (((bitField3_ & 0x00002000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(110, field110_);
      }
      if (((bitField3_ & 0x00004000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(111, field111_);
      }
      if (((bitField3_ & 0x00008000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(112, field112_);
      }
      if (((bitField3_ & 0x00010000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(113, field113_);
      }
      if (((bitField3_ & 0x00020000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(114, field114_);
      }
      if (((bitField3_ & 0x00040000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(115, field115_);
      }
      if (((bitField3_ & 0x00080000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(116, field116_);
      }
      if (((bitField3_ & 0x00100000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(117, field117_);
      }
      if (((bitField3_ & 0x00200000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(118, field118_);
      }
      if (((bitField3_ & 0x00400000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(119, field119_);
      }
      if (((bitField3_ & 0x00800000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(120, field120_);
      }
      if (((bitField3_ & 0x01000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(121, field121_);
      }
      if (((bitField3_ & 0x02000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(122, field122_);
      }
      if (((bitField3_ & 0x04000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(123, field123_);
      }
      if (((bitField3_ & 0x08000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(124, field124_);
      }
      if (((bitField3_ & 0x10000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(125, field125_);
      }
      if (((bitField3_ & 0x20000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(126, field126_);
      }
      if (((bitField3_ & 0x40000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(127, field127_);
      }
      if (((bitField3_ & 0x80000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(128, field128_);
      }
      if (((bitField4_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(129, field129_);
      }
      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 foo.TestFull.TestRequiredFieldsBitmap)) {
        return super.equals(obj);
      }
      foo.TestFull.TestRequiredFieldsBitmap other = (foo.TestFull.TestRequiredFieldsBitmap) obj;

      if (hasField1() != other.hasField1()) return false;
      if (hasField1()) {
        if (!getField1()
            .equals(other.getField1())) return false;
      }
      if (hasField2() != other.hasField2()) return false;
      if (hasField2()) {
        if (!getField2()
            .equals(other.getField2())) return false;
      }
      if (hasField3() != other.hasField3()) return false;
      if (hasField3()) {
        if (!getField3()
            .equals(other.getField3())) return false;
      }
      if (hasField4() != other.hasField4()) return false;
      if (hasField4()) {
        if (!getField4()
            .equals(other.getField4())) return false;
      }
      if (hasField5() != other.hasField5()) return false;
      if (hasField5()) {
        if (!getField5()
            .equals(other.getField5())) return false;
      }
      if (hasField6() != other.hasField6()) return false;
      if (hasField6()) {
        if (!getField6()
            .equals(other.getField6())) return false;
      }
      if (hasField7() != other.hasField7()) return false;
      if (hasField7()) {
        if (!getField7()
            .equals(other.getField7())) return false;
      }
      if (hasField8() != other.hasField8()) return false;
      if (hasField8()) {
        if (!getField8()
            .equals(other.getField8())) return false;
      }
      if (hasField9() != other.hasField9()) return false;
      if (hasField9()) {
        if (!getField9()
            .equals(other.getField9())) return false;
      }
      if (hasField10() != other.hasField10()) return false;
      if (hasField10()) {
        if (!getField10()
            .equals(other.getField10())) return false;
      }
      if (hasField11() != other.hasField11()) return false;
      if (hasField11()) {
        if (!getField11()
            .equals(other.getField11())) return false;
      }
      if (hasField12() != other.hasField12()) return false;
      if (hasField12()) {
        if (!getField12()
            .equals(other.getField12())) return false;
      }
      if (hasField13() != other.hasField13()) return false;
      if (hasField13()) {
        if (!getField13()
            .equals(other.getField13())) return false;
      }
      if (hasField14() != other.hasField14()) return false;
      if (hasField14()) {
        if (!getField14()
            .equals(other.getField14())) return false;
      }
      if (hasField15() != other.hasField15()) return false;
      if (hasField15()) {
        if (!getField15()
            .equals(other.getField15())) return false;
      }
      if (hasField16() != other.hasField16()) return false;
      if (hasField16()) {
        if (!getField16()
            .equals(other.getField16())) return false;
      }
      if (hasField17() != other.hasField17()) return false;
      if (hasField17()) {
        if (!getField17()
            .equals(other.getField17())) return false;
      }
      if (hasField18() != other.hasField18()) return false;
      if (hasField18()) {
        if (!getField18()
            .equals(other.getField18())) return false;
      }
      if (hasField19() != other.hasField19()) return false;
      if (hasField19()) {
        if (!getField19()
            .equals(other.getField19())) return false;
      }
      if (hasField20() != other.hasField20()) return false;
      if (hasField20()) {
        if (!getField20()
            .equals(other.getField20())) return false;
      }
      if (hasField21() != other.hasField21()) return false;
      if (hasField21()) {
        if (!getField21()
            .equals(other.getField21())) return false;
      }
      if (hasField22() != other.hasField22()) return false;
      if (hasField22()) {
        if (!getField22()
            .equals(other.getField22())) return false;
      }
      if (hasField23() != other.hasField23()) return false;
      if (hasField23()) {
        if (!getField23()
            .equals(other.getField23())) return false;
      }
      if (hasField24() != other.hasField24()) return false;
      if (hasField24()) {
        if (!getField24()
            .equals(other.getField24())) return false;
      }
      if (hasField25() != other.hasField25()) return false;
      if (hasField25()) {
        if (!getField25()
            .equals(other.getField25())) return false;
      }
      if (hasField26() != other.hasField26()) return false;
      if (hasField26()) {
        if (!getField26()
            .equals(other.getField26())) return false;
      }
      if (hasField27() != other.hasField27()) return false;
      if (hasField27()) {
        if (!getField27()
            .equals(other.getField27())) return false;
      }
      if (hasField28() != other.hasField28()) return false;
      if (hasField28()) {
        if (!getField28()
            .equals(other.getField28())) return false;
      }
      if (hasField29() != other.hasField29()) return false;
      if (hasField29()) {
        if (!getField29()
            .equals(other.getField29())) return false;
      }
      if (hasField30() != other.hasField30()) return false;
      if (hasField30()) {
        if (!getField30()
            .equals(other.getField30())) return false;
      }
      if (hasField31() != other.hasField31()) return false;
      if (hasField31()) {
        if (!getField31()
            .equals(other.getField31())) return false;
      }
      if (hasField32() != other.hasField32()) return false;
      if (hasField32()) {
        if (!getField32()
            .equals(other.getField32())) return false;
      }
      if (hasField33() != other.hasField33()) return false;
      if (hasField33()) {
        if (!getField33()
            .equals(other.getField33())) return false;
      }
      if (hasField34() != other.hasField34()) return false;
      if (hasField34()) {
        if (!getField34()
            .equals(other.getField34())) return false;
      }
      if (hasField35() != other.hasField35()) return false;
      if (hasField35()) {
        if (!getField35()
            .equals(other.getField35())) return false;
      }
      if (hasField36() != other.hasField36()) return false;
      if (hasField36()) {
        if (!getField36()
            .equals(other.getField36())) return false;
      }
      if (hasField37() != other.hasField37()) return false;
      if (hasField37()) {
        if (!getField37()
            .equals(other.getField37())) return false;
      }
      if (hasField38() != other.hasField38()) return false;
      if (hasField38()) {
        if (!getField38()
            .equals(other.getField38())) return false;
      }
      if (hasField39() != other.hasField39()) return false;
      if (hasField39()) {
        if (!getField39()
            .equals(other.getField39())) return false;
      }
      if (hasField40() != other.hasField40()) return false;
      if (hasField40()) {
        if (!getField40()
            .equals(other.getField40())) return false;
      }
      if (hasField41() != other.hasField41()) return false;
      if (hasField41()) {
        if (!getField41()
            .equals(other.getField41())) return false;
      }
      if (hasField42() != other.hasField42()) return false;
      if (hasField42()) {
        if (!getField42()
            .equals(other.getField42())) return false;
      }
      if (hasField43() != other.hasField43()) return false;
      if (hasField43()) {
        if (!getField43()
            .equals(other.getField43())) return false;
      }
      if (hasField44() != other.hasField44()) return false;
      if (hasField44()) {
        if (!getField44()
            .equals(other.getField44())) return false;
      }
      if (hasField45() != other.hasField45()) return false;
      if (hasField45()) {
        if (!getField45()
            .equals(other.getField45())) return false;
      }
      if (hasField46() != other.hasField46()) return false;
      if (hasField46()) {
        if (!getField46()
            .equals(other.getField46())) return false;
      }
      if (hasField47() != other.hasField47()) return false;
      if (hasField47()) {
        if (!getField47()
            .equals(other.getField47())) return false;
      }
      if (hasField48() != other.hasField48()) return false;
      if (hasField48()) {
        if (!getField48()
            .equals(other.getField48())) return false;
      }
      if (hasField49() != other.hasField49()) return false;
      if (hasField49()) {
        if (!getField49()
            .equals(other.getField49())) return false;
      }
      if (hasField50() != other.hasField50()) return false;
      if (hasField50()) {
        if (!getField50()
            .equals(other.getField50())) return false;
      }
      if (hasField51() != other.hasField51()) return false;
      if (hasField51()) {
        if (!getField51()
            .equals(other.getField51())) return false;
      }
      if (hasField52() != other.hasField52()) return false;
      if (hasField52()) {
        if (!getField52()
            .equals(other.getField52())) return false;
      }
      if (hasField53() != other.hasField53()) return false;
      if (hasField53()) {
        if (!getField53()
            .equals(other.getField53())) return false;
      }
      if (hasField54() != other.hasField54()) return false;
      if (hasField54()) {
        if (!getField54()
            .equals(other.getField54())) return false;
      }
      if (hasField55() != other.hasField55()) return false;
      if (hasField55()) {
        if (!getField55()
            .equals(other.getField55())) return false;
      }
      if (hasField56() != other.hasField56()) return false;
      if (hasField56()) {
        if (!getField56()
            .equals(other.getField56())) return false;
      }
      if (hasField57() != other.hasField57()) return false;
      if (hasField57()) {
        if (!getField57()
            .equals(other.getField57())) return false;
      }
      if (hasField58() != other.hasField58()) return false;
      if (hasField58()) {
        if (!getField58()
            .equals(other.getField58())) return false;
      }
      if (hasField59() != other.hasField59()) return false;
      if (hasField59()) {
        if (!getField59()
            .equals(other.getField59())) return false;
      }
      if (hasField60() != other.hasField60()) return false;
      if (hasField60()) {
        if (!getField60()
            .equals(other.getField60())) return false;
      }
      if (hasField61() != other.hasField61()) return false;
      if (hasField61()) {
        if (!getField61()
            .equals(other.getField61())) return false;
      }
      if (hasField62() != other.hasField62()) return false;
      if (hasField62()) {
        if (!getField62()
            .equals(other.getField62())) return false;
      }
      if (hasField63() != other.hasField63()) return false;
      if (hasField63()) {
        if (!getField63()
            .equals(other.getField63())) return false;
      }
      if (hasField64() != other.hasField64()) return false;
      if (hasField64()) {
        if (!getField64()
            .equals(other.getField64())) return false;
      }
      if (hasField65() != other.hasField65()) return false;
      if (hasField65()) {
        if (!getField65()
            .equals(other.getField65())) return false;
      }
      if (hasField66() != other.hasField66()) return false;
      if (hasField66()) {
        if (!getField66()
            .equals(other.getField66())) return false;
      }
      if (hasField67() != other.hasField67()) return false;
      if (hasField67()) {
        if (!getField67()
            .equals(other.getField67())) return false;
      }
      if (hasField68() != other.hasField68()) return false;
      if (hasField68()) {
        if (!getField68()
            .equals(other.getField68())) return false;
      }
      if (hasField69() != other.hasField69()) return false;
      if (hasField69()) {
        if (!getField69()
            .equals(other.getField69())) return false;
      }
      if (hasField70() != other.hasField70()) return false;
      if (hasField70()) {
        if (!getField70()
            .equals(other.getField70())) return false;
      }
      if (hasField71() != other.hasField71()) return false;
      if (hasField71()) {
        if (!getField71()
            .equals(other.getField71())) return false;
      }
      if (hasField72() != other.hasField72()) return false;
      if (hasField72()) {
        if (!getField72()
            .equals(other.getField72())) return false;
      }
      if (hasField73() != other.hasField73()) return false;
      if (hasField73()) {
        if (!getField73()
            .equals(other.getField73())) return false;
      }
      if (hasField74() != other.hasField74()) return false;
      if (hasField74()) {
        if (!getField74()
            .equals(other.getField74())) return false;
      }
      if (hasField75() != other.hasField75()) return false;
      if (hasField75()) {
        if (!getField75()
            .equals(other.getField75())) return false;
      }
      if (hasField76() != other.hasField76()) return false;
      if (hasField76()) {
        if (!getField76()
            .equals(other.getField76())) return false;
      }
      if (hasField77() != other.hasField77()) return false;
      if (hasField77()) {
        if (!getField77()
            .equals(other.getField77())) return false;
      }
      if (hasField78() != other.hasField78()) return false;
      if (hasField78()) {
        if (!getField78()
            .equals(other.getField78())) return false;
      }
      if (hasField79() != other.hasField79()) return false;
      if (hasField79()) {
        if (!getField79()
            .equals(other.getField79())) return false;
      }
      if (hasField80() != other.hasField80()) return false;
      if (hasField80()) {
        if (!getField80()
            .equals(other.getField80())) return false;
      }
      if (hasField81() != other.hasField81()) return false;
      if (hasField81()) {
        if (!getField81()
            .equals(other.getField81())) return false;
      }
      if (hasField82() != other.hasField82()) return false;
      if (hasField82()) {
        if (!getField82()
            .equals(other.getField82())) return false;
      }
      if (hasField83() != other.hasField83()) return false;
      if (hasField83()) {
        if (!getField83()
            .equals(other.getField83())) return false;
      }
      if (hasField84() != other.hasField84()) return false;
      if (hasField84()) {
        if (!getField84()
            .equals(other.getField84())) return false;
      }
      if (hasField85() != other.hasField85()) return false;
      if (hasField85()) {
        if (!getField85()
            .equals(other.getField85())) return false;
      }
      if (hasField86() != other.hasField86()) return false;
      if (hasField86()) {
        if (!getField86()
            .equals(other.getField86())) return false;
      }
      if (hasField87() != other.hasField87()) return false;
      if (hasField87()) {
        if (!getField87()
            .equals(other.getField87())) return false;
      }
      if (hasField88() != other.hasField88()) return false;
      if (hasField88()) {
        if (!getField88()
            .equals(other.getField88())) return false;
      }
      if (hasField89() != other.hasField89()) return false;
      if (hasField89()) {
        if (!getField89()
            .equals(other.getField89())) return false;
      }
      if (hasField90() != other.hasField90()) return false;
      if (hasField90()) {
        if (!getField90()
            .equals(other.getField90())) return false;
      }
      if (hasField91() != other.hasField91()) return false;
      if (hasField91()) {
        if (!getField91()
            .equals(other.getField91())) return false;
      }
      if (hasField92() != other.hasField92()) return false;
      if (hasField92()) {
        if (!getField92()
            .equals(other.getField92())) return false;
      }
      if (hasField93() != other.hasField93()) return false;
      if (hasField93()) {
        if (!getField93()
            .equals(other.getField93())) return false;
      }
      if (hasField94() != other.hasField94()) return false;
      if (hasField94()) {
        if (!getField94()
            .equals(other.getField94())) return false;
      }
      if (hasField95() != other.hasField95()) return false;
      if (hasField95()) {
        if (!getField95()
            .equals(other.getField95())) return false;
      }
      if (hasField96() != other.hasField96()) return false;
      if (hasField96()) {
        if (!getField96()
            .equals(other.getField96())) return false;
      }
      if (hasField97() != other.hasField97()) return false;
      if (hasField97()) {
        if (!getField97()
            .equals(other.getField97())) return false;
      }
      if (hasField98() != other.hasField98()) return false;
      if (hasField98()) {
        if (!getField98()
            .equals(other.getField98())) return false;
      }
      if (hasField99() != other.hasField99()) return false;
      if (hasField99()) {
        if (!getField99()
            .equals(other.getField99())) return false;
      }
      if (hasField100() != other.hasField100()) return false;
      if (hasField100()) {
        if (!getField100()
            .equals(other.getField100())) return false;
      }
      if (hasField101() != other.hasField101()) return false;
      if (hasField101()) {
        if (!getField101()
            .equals(other.getField101())) return false;
      }
      if (hasField102() != other.hasField102()) return false;
      if (hasField102()) {
        if (!getField102()
            .equals(other.getField102())) return false;
      }
      if (hasField103() != other.hasField103()) return false;
      if (hasField103()) {
        if (!getField103()
            .equals(other.getField103())) return false;
      }
      if (hasField104() != other.hasField104()) return false;
      if (hasField104()) {
        if (!getField104()
            .equals(other.getField104())) return false;
      }
      if (hasField105() != other.hasField105()) return false;
      if (hasField105()) {
        if (!getField105()
            .equals(other.getField105())) return false;
      }
      if (hasField106() != other.hasField106()) return false;
      if (hasField106()) {
        if (!getField106()
            .equals(other.getField106())) return false;
      }
      if (hasField107() != other.hasField107()) return false;
      if (hasField107()) {
        if (!getField107()
            .equals(other.getField107())) return false;
      }
      if (hasField108() != other.hasField108()) return false;
      if (hasField108()) {
        if (!getField108()
            .equals(other.getField108())) return false;
      }
      if (hasField109() != other.hasField109()) return false;
      if (hasField109()) {
        if (!getField109()
            .equals(other.getField109())) return false;
      }
      if (hasField110() != other.hasField110()) return false;
      if (hasField110()) {
        if (!getField110()
            .equals(other.getField110())) return false;
      }
      if (hasField111() != other.hasField111()) return false;
      if (hasField111()) {
        if (!getField111()
            .equals(other.getField111())) return false;
      }
      if (hasField112() != other.hasField112()) return false;
      if (hasField112()) {
        if (!getField112()
            .equals(other.getField112())) return false;
      }
      if (hasField113() != other.hasField113()) return false;
      if (hasField113()) {
        if (!getField113()
            .equals(other.getField113())) return false;
      }
      if (hasField114() != other.hasField114()) return false;
      if (hasField114()) {
        if (!getField114()
            .equals(other.getField114())) return false;
      }
      if (hasField115() != other.hasField115()) return false;
      if (hasField115()) {
        if (!getField115()
            .equals(other.getField115())) return false;
      }
      if (hasField116() != other.hasField116()) return false;
      if (hasField116()) {
        if (!getField116()
            .equals(other.getField116())) return false;
      }
      if (hasField117() != other.hasField117()) return false;
      if (hasField117()) {
        if (!getField117()
            .equals(other.getField117())) return false;
      }
      if (hasField118() != other.hasField118()) return false;
      if (hasField118()) {
        if (!getField118()
            .equals(other.getField118())) return false;
      }
      if (hasField119() != other.hasField119()) return false;
      if (hasField119()) {
        if (!getField119()
            .equals(other.getField119())) return false;
      }
      if (hasField120() != other.hasField120()) return false;
      if (hasField120()) {
        if (!getField120()
            .equals(other.getField120())) return false;
      }
      if (hasField121() != other.hasField121()) return false;
      if (hasField121()) {
        if (!getField121()
            .equals(other.getField121())) return false;
      }
      if (hasField122() != other.hasField122()) return false;
      if (hasField122()) {
        if (!getField122()
            .equals(other.getField122())) return false;
      }
      if (hasField123() != other.hasField123()) return false;
      if (hasField123()) {
        if (!getField123()
            .equals(other.getField123())) return false;
      }
      if (hasField124() != other.hasField124()) return false;
      if (hasField124()) {
        if (!getField124()
            .equals(other.getField124())) return false;
      }
      if (hasField125() != other.hasField125()) return false;
      if (hasField125()) {
        if (!getField125()
            .equals(other.getField125())) return false;
      }
      if (hasField126() != other.hasField126()) return false;
      if (hasField126()) {
        if (!getField126()
            .equals(other.getField126())) return false;
      }
      if (hasField127() != other.hasField127()) return false;
      if (hasField127()) {
        if (!getField127()
            .equals(other.getField127())) return false;
      }
      if (hasField128() != other.hasField128()) return false;
      if (hasField128()) {
        if (!getField128()
            .equals(other.getField128())) return false;
      }
      if (hasField129() != other.hasField129()) return false;
      if (hasField129()) {
        if (!getField129()
            .equals(other.getField129())) 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 (hasField1()) {
        hash = (37 * hash) + FIELD1_FIELD_NUMBER;
        hash = (53 * hash) + getField1().hashCode();
      }
      if (hasField2()) {
        hash = (37 * hash) + FIELD2_FIELD_NUMBER;
        hash = (53 * hash) + getField2().hashCode();
      }
      if (hasField3()) {
        hash = (37 * hash) + FIELD3_FIELD_NUMBER;
        hash = (53 * hash) + getField3().hashCode();
      }
      if (hasField4()) {
        hash = (37 * hash) + FIELD4_FIELD_NUMBER;
        hash = (53 * hash) + getField4().hashCode();
      }
      if (hasField5()) {
        hash = (37 * hash) + FIELD5_FIELD_NUMBER;
        hash = (53 * hash) + getField5().hashCode();
      }
      if (hasField6()) {
        hash = (37 * hash) + FIELD6_FIELD_NUMBER;
        hash = (53 * hash) + getField6().hashCode();
      }
      if (hasField7()) {
        hash = (37 * hash) + FIELD7_FIELD_NUMBER;
        hash = (53 * hash) + getField7().hashCode();
      }
      if (hasField8()) {
        hash = (37 * hash) + FIELD8_FIELD_NUMBER;
        hash = (53 * hash) + getField8().hashCode();
      }
      if (hasField9()) {
        hash = (37 * hash) + FIELD9_FIELD_NUMBER;
        hash = (53 * hash) + getField9().hashCode();
      }
      if (hasField10()) {
        hash = (37 * hash) + FIELD10_FIELD_NUMBER;
        hash = (53 * hash) + getField10().hashCode();
      }
      if (hasField11()) {
        hash = (37 * hash) + FIELD11_FIELD_NUMBER;
        hash = (53 * hash) + getField11().hashCode();
      }
      if (hasField12()) {
        hash = (37 * hash) + FIELD12_FIELD_NUMBER;
        hash = (53 * hash) + getField12().hashCode();
      }
      if (hasField13()) {
        hash = (37 * hash) + FIELD13_FIELD_NUMBER;
        hash = (53 * hash) + getField13().hashCode();
      }
      if (hasField14()) {
        hash = (37 * hash) + FIELD14_FIELD_NUMBER;
        hash = (53 * hash) + getField14().hashCode();
      }
      if (hasField15()) {
        hash = (37 * hash) + FIELD15_FIELD_NUMBER;
        hash = (53 * hash) + getField15().hashCode();
      }
      if (hasField16()) {
        hash = (37 * hash) + FIELD16_FIELD_NUMBER;
        hash = (53 * hash) + getField16().hashCode();
      }
      if (hasField17()) {
        hash = (37 * hash) + FIELD17_FIELD_NUMBER;
        hash = (53 * hash) + getField17().hashCode();
      }
      if (hasField18()) {
        hash = (37 * hash) + FIELD18_FIELD_NUMBER;
        hash = (53 * hash) + getField18().hashCode();
      }
      if (hasField19()) {
        hash = (37 * hash) + FIELD19_FIELD_NUMBER;
        hash = (53 * hash) + getField19().hashCode();
      }
      if (hasField20()) {
        hash = (37 * hash) + FIELD20_FIELD_NUMBER;
        hash = (53 * hash) + getField20().hashCode();
      }
      if (hasField21()) {
        hash = (37 * hash) + FIELD21_FIELD_NUMBER;
        hash = (53 * hash) + getField21().hashCode();
      }
      if (hasField22()) {
        hash = (37 * hash) + FIELD22_FIELD_NUMBER;
        hash = (53 * hash) + getField22().hashCode();
      }
      if (hasField23()) {
        hash = (37 * hash) + FIELD23_FIELD_NUMBER;
        hash = (53 * hash) + getField23().hashCode();
      }
      if (hasField24()) {
        hash = (37 * hash) + FIELD24_FIELD_NUMBER;
        hash = (53 * hash) + getField24().hashCode();
      }
      if (hasField25()) {
        hash = (37 * hash) + FIELD25_FIELD_NUMBER;
        hash = (53 * hash) + getField25().hashCode();
      }
      if (hasField26()) {
        hash = (37 * hash) + FIELD26_FIELD_NUMBER;
        hash = (53 * hash) + getField26().hashCode();
      }
      if (hasField27()) {
        hash = (37 * hash) + FIELD27_FIELD_NUMBER;
        hash = (53 * hash) + getField27().hashCode();
      }
      if (hasField28()) {
        hash = (37 * hash) + FIELD28_FIELD_NUMBER;
        hash = (53 * hash) + getField28().hashCode();
      }
      if (hasField29()) {
        hash = (37 * hash) + FIELD29_FIELD_NUMBER;
        hash = (53 * hash) + getField29().hashCode();
      }
      if (hasField30()) {
        hash = (37 * hash) + FIELD30_FIELD_NUMBER;
        hash = (53 * hash) + getField30().hashCode();
      }
      if (hasField31()) {
        hash = (37 * hash) + FIELD31_FIELD_NUMBER;
        hash = (53 * hash) + getField31().hashCode();
      }
      if (hasField32()) {
        hash = (37 * hash) + FIELD32_FIELD_NUMBER;
        hash = (53 * hash) + getField32().hashCode();
      }
      if (hasField33()) {
        hash = (37 * hash) + FIELD33_FIELD_NUMBER;
        hash = (53 * hash) + getField33().hashCode();
      }
      if (hasField34()) {
        hash = (37 * hash) + FIELD34_FIELD_NUMBER;
        hash = (53 * hash) + getField34().hashCode();
      }
      if (hasField35()) {
        hash = (37 * hash) + FIELD35_FIELD_NUMBER;
        hash = (53 * hash) + getField35().hashCode();
      }
      if (hasField36()) {
        hash = (37 * hash) + FIELD36_FIELD_NUMBER;
        hash = (53 * hash) + getField36().hashCode();
      }
      if (hasField37()) {
        hash = (37 * hash) + FIELD37_FIELD_NUMBER;
        hash = (53 * hash) + getField37().hashCode();
      }
      if (hasField38()) {
        hash = (37 * hash) + FIELD38_FIELD_NUMBER;
        hash = (53 * hash) + getField38().hashCode();
      }
      if (hasField39()) {
        hash = (37 * hash) + FIELD39_FIELD_NUMBER;
        hash = (53 * hash) + getField39().hashCode();
      }
      if (hasField40()) {
        hash = (37 * hash) + FIELD40_FIELD_NUMBER;
        hash = (53 * hash) + getField40().hashCode();
      }
      if (hasField41()) {
        hash = (37 * hash) + FIELD41_FIELD_NUMBER;
        hash = (53 * hash) + getField41().hashCode();
      }
      if (hasField42()) {
        hash = (37 * hash) + FIELD42_FIELD_NUMBER;
        hash = (53 * hash) + getField42().hashCode();
      }
      if (hasField43()) {
        hash = (37 * hash) + FIELD43_FIELD_NUMBER;
        hash = (53 * hash) + getField43().hashCode();
      }
      if (hasField44()) {
        hash = (37 * hash) + FIELD44_FIELD_NUMBER;
        hash = (53 * hash) + getField44().hashCode();
      }
      if (hasField45()) {
        hash = (37 * hash) + FIELD45_FIELD_NUMBER;
        hash = (53 * hash) + getField45().hashCode();
      }
      if (hasField46()) {
        hash = (37 * hash) + FIELD46_FIELD_NUMBER;
        hash = (53 * hash) + getField46().hashCode();
      }
      if (hasField47()) {
        hash = (37 * hash) + FIELD47_FIELD_NUMBER;
        hash = (53 * hash) + getField47().hashCode();
      }
      if (hasField48()) {
        hash = (37 * hash) + FIELD48_FIELD_NUMBER;
        hash = (53 * hash) + getField48().hashCode();
      }
      if (hasField49()) {
        hash = (37 * hash) + FIELD49_FIELD_NUMBER;
        hash = (53 * hash) + getField49().hashCode();
      }
      if (hasField50()) {
        hash = (37 * hash) + FIELD50_FIELD_NUMBER;
        hash = (53 * hash) + getField50().hashCode();
      }
      if (hasField51()) {
        hash = (37 * hash) + FIELD51_FIELD_NUMBER;
        hash = (53 * hash) + getField51().hashCode();
      }
      if (hasField52()) {
        hash = (37 * hash) + FIELD52_FIELD_NUMBER;
        hash = (53 * hash) + getField52().hashCode();
      }
      if (hasField53()) {
        hash = (37 * hash) + FIELD53_FIELD_NUMBER;
        hash = (53 * hash) + getField53().hashCode();
      }
      if (hasField54()) {
        hash = (37 * hash) + FIELD54_FIELD_NUMBER;
        hash = (53 * hash) + getField54().hashCode();
      }
      if (hasField55()) {
        hash = (37 * hash) + FIELD55_FIELD_NUMBER;
        hash = (53 * hash) + getField55().hashCode();
      }
      if (hasField56()) {
        hash = (37 * hash) + FIELD56_FIELD_NUMBER;
        hash = (53 * hash) + getField56().hashCode();
      }
      if (hasField57()) {
        hash = (37 * hash) + FIELD57_FIELD_NUMBER;
        hash = (53 * hash) + getField57().hashCode();
      }
      if (hasField58()) {
        hash = (37 * hash) + FIELD58_FIELD_NUMBER;
        hash = (53 * hash) + getField58().hashCode();
      }
      if (hasField59()) {
        hash = (37 * hash) + FIELD59_FIELD_NUMBER;
        hash = (53 * hash) + getField59().hashCode();
      }
      if (hasField60()) {
        hash = (37 * hash) + FIELD60_FIELD_NUMBER;
        hash = (53 * hash) + getField60().hashCode();
      }
      if (hasField61()) {
        hash = (37 * hash) + FIELD61_FIELD_NUMBER;
        hash = (53 * hash) + getField61().hashCode();
      }
      if (hasField62()) {
        hash = (37 * hash) + FIELD62_FIELD_NUMBER;
        hash = (53 * hash) + getField62().hashCode();
      }
      if (hasField63()) {
        hash = (37 * hash) + FIELD63_FIELD_NUMBER;
        hash = (53 * hash) + getField63().hashCode();
      }
      if (hasField64()) {
        hash = (37 * hash) + FIELD64_FIELD_NUMBER;
        hash = (53 * hash) + getField64().hashCode();
      }
      if (hasField65()) {
        hash = (37 * hash) + FIELD65_FIELD_NUMBER;
        hash = (53 * hash) + getField65().hashCode();
      }
      if (hasField66()) {
        hash = (37 * hash) + FIELD66_FIELD_NUMBER;
        hash = (53 * hash) + getField66().hashCode();
      }
      if (hasField67()) {
        hash = (37 * hash) + FIELD67_FIELD_NUMBER;
        hash = (53 * hash) + getField67().hashCode();
      }
      if (hasField68()) {
        hash = (37 * hash) + FIELD68_FIELD_NUMBER;
        hash = (53 * hash) + getField68().hashCode();
      }
      if (hasField69()) {
        hash = (37 * hash) + FIELD69_FIELD_NUMBER;
        hash = (53 * hash) + getField69().hashCode();
      }
      if (hasField70()) {
        hash = (37 * hash) + FIELD70_FIELD_NUMBER;
        hash = (53 * hash) + getField70().hashCode();
      }
      if (hasField71()) {
        hash = (37 * hash) + FIELD71_FIELD_NUMBER;
        hash = (53 * hash) + getField71().hashCode();
      }
      if (hasField72()) {
        hash = (37 * hash) + FIELD72_FIELD_NUMBER;
        hash = (53 * hash) + getField72().hashCode();
      }
      if (hasField73()) {
        hash = (37 * hash) + FIELD73_FIELD_NUMBER;
        hash = (53 * hash) + getField73().hashCode();
      }
      if (hasField74()) {
        hash = (37 * hash) + FIELD74_FIELD_NUMBER;
        hash = (53 * hash) + getField74().hashCode();
      }
      if (hasField75()) {
        hash = (37 * hash) + FIELD75_FIELD_NUMBER;
        hash = (53 * hash) + getField75().hashCode();
      }
      if (hasField76()) {
        hash = (37 * hash) + FIELD76_FIELD_NUMBER;
        hash = (53 * hash) + getField76().hashCode();
      }
      if (hasField77()) {
        hash = (37 * hash) + FIELD77_FIELD_NUMBER;
        hash = (53 * hash) + getField77().hashCode();
      }
      if (hasField78()) {
        hash = (37 * hash) + FIELD78_FIELD_NUMBER;
        hash = (53 * hash) + getField78().hashCode();
      }
      if (hasField79()) {
        hash = (37 * hash) + FIELD79_FIELD_NUMBER;
        hash = (53 * hash) + getField79().hashCode();
      }
      if (hasField80()) {
        hash = (37 * hash) + FIELD80_FIELD_NUMBER;
        hash = (53 * hash) + getField80().hashCode();
      }
      if (hasField81()) {
        hash = (37 * hash) + FIELD81_FIELD_NUMBER;
        hash = (53 * hash) + getField81().hashCode();
      }
      if (hasField82()) {
        hash = (37 * hash) + FIELD82_FIELD_NUMBER;
        hash = (53 * hash) + getField82().hashCode();
      }
      if (hasField83()) {
        hash = (37 * hash) + FIELD83_FIELD_NUMBER;
        hash = (53 * hash) + getField83().hashCode();
      }
      if (hasField84()) {
        hash = (37 * hash) + FIELD84_FIELD_NUMBER;
        hash = (53 * hash) + getField84().hashCode();
      }
      if (hasField85()) {
        hash = (37 * hash) + FIELD85_FIELD_NUMBER;
        hash = (53 * hash) + getField85().hashCode();
      }
      if (hasField86()) {
        hash = (37 * hash) + FIELD86_FIELD_NUMBER;
        hash = (53 * hash) + getField86().hashCode();
      }
      if (hasField87()) {
        hash = (37 * hash) + FIELD87_FIELD_NUMBER;
        hash = (53 * hash) + getField87().hashCode();
      }
      if (hasField88()) {
        hash = (37 * hash) + FIELD88_FIELD_NUMBER;
        hash = (53 * hash) + getField88().hashCode();
      }
      if (hasField89()) {
        hash = (37 * hash) + FIELD89_FIELD_NUMBER;
        hash = (53 * hash) + getField89().hashCode();
      }
      if (hasField90()) {
        hash = (37 * hash) + FIELD90_FIELD_NUMBER;
        hash = (53 * hash) + getField90().hashCode();
      }
      if (hasField91()) {
        hash = (37 * hash) + FIELD91_FIELD_NUMBER;
        hash = (53 * hash) + getField91().hashCode();
      }
      if (hasField92()) {
        hash = (37 * hash) + FIELD92_FIELD_NUMBER;
        hash = (53 * hash) + getField92().hashCode();
      }
      if (hasField93()) {
        hash = (37 * hash) + FIELD93_FIELD_NUMBER;
        hash = (53 * hash) + getField93().hashCode();
      }
      if (hasField94()) {
        hash = (37 * hash) + FIELD94_FIELD_NUMBER;
        hash = (53 * hash) + getField94().hashCode();
      }
      if (hasField95()) {
        hash = (37 * hash) + FIELD95_FIELD_NUMBER;
        hash = (53 * hash) + getField95().hashCode();
      }
      if (hasField96()) {
        hash = (37 * hash) + FIELD96_FIELD_NUMBER;
        hash = (53 * hash) + getField96().hashCode();
      }
      if (hasField97()) {
        hash = (37 * hash) + FIELD97_FIELD_NUMBER;
        hash = (53 * hash) + getField97().hashCode();
      }
      if (hasField98()) {
        hash = (37 * hash) + FIELD98_FIELD_NUMBER;
        hash = (53 * hash) + getField98().hashCode();
      }
      if (hasField99()) {
        hash = (37 * hash) + FIELD99_FIELD_NUMBER;
        hash = (53 * hash) + getField99().hashCode();
      }
      if (hasField100()) {
        hash = (37 * hash) + FIELD100_FIELD_NUMBER;
        hash = (53 * hash) + getField100().hashCode();
      }
      if (hasField101()) {
        hash = (37 * hash) + FIELD101_FIELD_NUMBER;
        hash = (53 * hash) + getField101().hashCode();
      }
      if (hasField102()) {
        hash = (37 * hash) + FIELD102_FIELD_NUMBER;
        hash = (53 * hash) + getField102().hashCode();
      }
      if (hasField103()) {
        hash = (37 * hash) + FIELD103_FIELD_NUMBER;
        hash = (53 * hash) + getField103().hashCode();
      }
      if (hasField104()) {
        hash = (37 * hash) + FIELD104_FIELD_NUMBER;
        hash = (53 * hash) + getField104().hashCode();
      }
      if (hasField105()) {
        hash = (37 * hash) + FIELD105_FIELD_NUMBER;
        hash = (53 * hash) + getField105().hashCode();
      }
      if (hasField106()) {
        hash = (37 * hash) + FIELD106_FIELD_NUMBER;
        hash = (53 * hash) + getField106().hashCode();
      }
      if (hasField107()) {
        hash = (37 * hash) + FIELD107_FIELD_NUMBER;
        hash = (53 * hash) + getField107().hashCode();
      }
      if (hasField108()) {
        hash = (37 * hash) + FIELD108_FIELD_NUMBER;
        hash = (53 * hash) + getField108().hashCode();
      }
      if (hasField109()) {
        hash = (37 * hash) + FIELD109_FIELD_NUMBER;
        hash = (53 * hash) + getField109().hashCode();
      }
      if (hasField110()) {
        hash = (37 * hash) + FIELD110_FIELD_NUMBER;
        hash = (53 * hash) + getField110().hashCode();
      }
      if (hasField111()) {
        hash = (37 * hash) + FIELD111_FIELD_NUMBER;
        hash = (53 * hash) + getField111().hashCode();
      }
      if (hasField112()) {
        hash = (37 * hash) + FIELD112_FIELD_NUMBER;
        hash = (53 * hash) + getField112().hashCode();
      }
      if (hasField113()) {
        hash = (37 * hash) + FIELD113_FIELD_NUMBER;
        hash = (53 * hash) + getField113().hashCode();
      }
      if (hasField114()) {
        hash = (37 * hash) + FIELD114_FIELD_NUMBER;
        hash = (53 * hash) + getField114().hashCode();
      }
      if (hasField115()) {
        hash = (37 * hash) + FIELD115_FIELD_NUMBER;
        hash = (53 * hash) + getField115().hashCode();
      }
      if (hasField116()) {
        hash = (37 * hash) + FIELD116_FIELD_NUMBER;
        hash = (53 * hash) + getField116().hashCode();
      }
      if (hasField117()) {
        hash = (37 * hash) + FIELD117_FIELD_NUMBER;
        hash = (53 * hash) + getField117().hashCode();
      }
      if (hasField118()) {
        hash = (37 * hash) + FIELD118_FIELD_NUMBER;
        hash = (53 * hash) + getField118().hashCode();
      }
      if (hasField119()) {
        hash = (37 * hash) + FIELD119_FIELD_NUMBER;
        hash = (53 * hash) + getField119().hashCode();
      }
      if (hasField120()) {
        hash = (37 * hash) + FIELD120_FIELD_NUMBER;
        hash = (53 * hash) + getField120().hashCode();
      }
      if (hasField121()) {
        hash = (37 * hash) + FIELD121_FIELD_NUMBER;
        hash = (53 * hash) + getField121().hashCode();
      }
      if (hasField122()) {
        hash = (37 * hash) + FIELD122_FIELD_NUMBER;
        hash = (53 * hash) + getField122().hashCode();
      }
      if (hasField123()) {
        hash = (37 * hash) + FIELD123_FIELD_NUMBER;
        hash = (53 * hash) + getField123().hashCode();
      }
      if (hasField124()) {
        hash = (37 * hash) + FIELD124_FIELD_NUMBER;
        hash = (53 * hash) + getField124().hashCode();
      }
      if (hasField125()) {
        hash = (37 * hash) + FIELD125_FIELD_NUMBER;
        hash = (53 * hash) + getField125().hashCode();
      }
      if (hasField126()) {
        hash = (37 * hash) + FIELD126_FIELD_NUMBER;
        hash = (53 * hash) + getField126().hashCode();
      }
      if (hasField127()) {
        hash = (37 * hash) + FIELD127_FIELD_NUMBER;
        hash = (53 * hash) + getField127().hashCode();
      }
      if (hasField128()) {
        hash = (37 * hash) + FIELD128_FIELD_NUMBER;
        hash = (53 * hash) + getField128().hashCode();
      }
      if (hasField129()) {
        hash = (37 * hash) + FIELD129_FIELD_NUMBER;
        hash = (53 * hash) + getField129().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestRequiredFieldsBitmap_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestRequiredFieldsBitmap.class, foo.TestFull.TestRequiredFieldsBitmap.Builder.class);
      }

      // Construct using foo.TestFull.TestRequiredFieldsBitmap.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;
        bitField3_ = 0;
        bitField4_ = 0;
        field1_ = "";
        field2_ = "";
        field3_ = "";
        field4_ = "";
        field5_ = "";
        field6_ = "";
        field7_ = "";
        field8_ = "";
        field9_ = "";
        field10_ = "";
        field11_ = "";
        field12_ = "";
        field13_ = "";
        field14_ = "";
        field15_ = "";
        field16_ = "";
        field17_ = "";
        field18_ = "";
        field19_ = "";
        field20_ = "";
        field21_ = "";
        field22_ = "";
        field23_ = "";
        field24_ = "";
        field25_ = "";
        field26_ = "";
        field27_ = "";
        field28_ = "";
        field29_ = "";
        field30_ = "";
        field31_ = "";
        field32_ = "";
        field33_ = "";
        field34_ = "";
        field35_ = "";
        field36_ = "";
        field37_ = "";
        field38_ = "";
        field39_ = "";
        field40_ = "";
        field41_ = "";
        field42_ = "";
        field43_ = "";
        field44_ = "";
        field45_ = "";
        field46_ = "";
        field47_ = "";
        field48_ = "";
        field49_ = "";
        field50_ = "";
        field51_ = "";
        field52_ = "";
        field53_ = "";
        field54_ = "";
        field55_ = "";
        field56_ = "";
        field57_ = "";
        field58_ = "";
        field59_ = "";
        field60_ = "";
        field61_ = "";
        field62_ = "";
        field63_ = "";
        field64_ = "";
        field65_ = "";
        field66_ = "";
        field67_ = "";
        field68_ = "";
        field69_ = "";
        field70_ = "";
        field71_ = "";
        field72_ = "";
        field73_ = "";
        field74_ = "";
        field75_ = "";
        field76_ = "";
        field77_ = "";
        field78_ = "";
        field79_ = "";
        field80_ = "";
        field81_ = "";
        field82_ = "";
        field83_ = "";
        field84_ = "";
        field85_ = "";
        field86_ = "";
        field87_ = "";
        field88_ = "";
        field89_ = "";
        field90_ = "";
        field91_ = "";
        field92_ = "";
        field93_ = "";
        field94_ = "";
        field95_ = "";
        field96_ = "";
        field97_ = "";
        field98_ = "";
        field99_ = "";
        field100_ = "";
        field101_ = "";
        field102_ = "";
        field103_ = "";
        field104_ = "";
        field105_ = "";
        field106_ = "";
        field107_ = "";
        field108_ = "";
        field109_ = "";
        field110_ = "";
        field111_ = "";
        field112_ = "";
        field113_ = "";
        field114_ = "";
        field115_ = "";
        field116_ = "";
        field117_ = "";
        field118_ = "";
        field119_ = "";
        field120_ = "";
        field121_ = "";
        field122_ = "";
        field123_ = "";
        field124_ = "";
        field125_ = "";
        field126_ = "";
        field127_ = "";
        field128_ = "";
        field129_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestRequiredFieldsBitmap_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestRequiredFieldsBitmap getDefaultInstanceForType() {
        return foo.TestFull.TestRequiredFieldsBitmap.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestRequiredFieldsBitmap build() {
        foo.TestFull.TestRequiredFieldsBitmap result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestRequiredFieldsBitmap buildPartial() {
        foo.TestFull.TestRequiredFieldsBitmap result = new foo.TestFull.TestRequiredFieldsBitmap(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        if (bitField1_ != 0) { buildPartial1(result); }
        if (bitField2_ != 0) { buildPartial2(result); }
        if (bitField3_ != 0) { buildPartial3(result); }
        if (bitField4_ != 0) { buildPartial4(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestRequiredFieldsBitmap result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.field1_ = field1_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.field2_ = field2_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.field3_ = field3_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.field4_ = field4_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.field5_ = field5_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.field6_ = field6_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.field7_ = field7_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.field8_ = field8_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.field9_ = field9_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.field10_ = field10_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.field11_ = field11_;
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.field12_ = field12_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.field13_ = field13_;
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.field14_ = field14_;
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.field15_ = field15_;
          to_bitField0_ |= 0x00004000;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.field16_ = field16_;
          to_bitField0_ |= 0x00008000;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.field17_ = field17_;
          to_bitField0_ |= 0x00010000;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.field18_ = field18_;
          to_bitField0_ |= 0x00020000;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.field19_ = field19_;
          to_bitField0_ |= 0x00040000;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.field20_ = field20_;
          to_bitField0_ |= 0x00080000;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          result.field21_ = field21_;
          to_bitField0_ |= 0x00100000;
        }
        if (((from_bitField0_ & 0x00200000) != 0)) {
          result.field22_ = field22_;
          to_bitField0_ |= 0x00200000;
        }
        if (((from_bitField0_ & 0x00400000) != 0)) {
          result.field23_ = field23_;
          to_bitField0_ |= 0x00400000;
        }
        if (((from_bitField0_ & 0x00800000) != 0)) {
          result.field24_ = field24_;
          to_bitField0_ |= 0x00800000;
        }
        if (((from_bitField0_ & 0x01000000) != 0)) {
          result.field25_ = field25_;
          to_bitField0_ |= 0x01000000;
        }
        if (((from_bitField0_ & 0x02000000) != 0)) {
          result.field26_ = field26_;
          to_bitField0_ |= 0x02000000;
        }
        if (((from_bitField0_ & 0x04000000) != 0)) {
          result.field27_ = field27_;
          to_bitField0_ |= 0x04000000;
        }
        if (((from_bitField0_ & 0x08000000) != 0)) {
          result.field28_ = field28_;
          to_bitField0_ |= 0x08000000;
        }
        if (((from_bitField0_ & 0x10000000) != 0)) {
          result.field29_ = field29_;
          to_bitField0_ |= 0x10000000;
        }
        if (((from_bitField0_ & 0x20000000) != 0)) {
          result.field30_ = field30_;
          to_bitField0_ |= 0x20000000;
        }
        if (((from_bitField0_ & 0x40000000) != 0)) {
          result.field31_ = field31_;
          to_bitField0_ |= 0x40000000;
        }
        if (((from_bitField0_ & 0x80000000) != 0)) {
          result.field32_ = field32_;
          to_bitField0_ |= 0x80000000;
        }
        result.bitField0_ |= to_bitField0_;
      }

      private void buildPartial1(foo.TestFull.TestRequiredFieldsBitmap result) {
        int from_bitField1_ = bitField1_;
        int to_bitField1_ = 0;
        if (((from_bitField1_ & 0x00000001) != 0)) {
          result.field33_ = field33_;
          to_bitField1_ |= 0x00000001;
        }
        if (((from_bitField1_ & 0x00000002) != 0)) {
          result.field34_ = field34_;
          to_bitField1_ |= 0x00000002;
        }
        if (((from_bitField1_ & 0x00000004) != 0)) {
          result.field35_ = field35_;
          to_bitField1_ |= 0x00000004;
        }
        if (((from_bitField1_ & 0x00000008) != 0)) {
          result.field36_ = field36_;
          to_bitField1_ |= 0x00000008;
        }
        if (((from_bitField1_ & 0x00000010) != 0)) {
          result.field37_ = field37_;
          to_bitField1_ |= 0x00000010;
        }
        if (((from_bitField1_ & 0x00000020) != 0)) {
          result.field38_ = field38_;
          to_bitField1_ |= 0x00000020;
        }
        if (((from_bitField1_ & 0x00000040) != 0)) {
          result.field39_ = field39_;
          to_bitField1_ |= 0x00000040;
        }
        if (((from_bitField1_ & 0x00000080) != 0)) {
          result.field40_ = field40_;
          to_bitField1_ |= 0x00000080;
        }
        if (((from_bitField1_ & 0x00000100) != 0)) {
          result.field41_ = field41_;
          to_bitField1_ |= 0x00000100;
        }
        if (((from_bitField1_ & 0x00000200) != 0)) {
          result.field42_ = field42_;
          to_bitField1_ |= 0x00000200;
        }
        if (((from_bitField1_ & 0x00000400) != 0)) {
          result.field43_ = field43_;
          to_bitField1_ |= 0x00000400;
        }
        if (((from_bitField1_ & 0x00000800) != 0)) {
          result.field44_ = field44_;
          to_bitField1_ |= 0x00000800;
        }
        if (((from_bitField1_ & 0x00001000) != 0)) {
          result.field45_ = field45_;
          to_bitField1_ |= 0x00001000;
        }
        if (((from_bitField1_ & 0x00002000) != 0)) {
          result.field46_ = field46_;
          to_bitField1_ |= 0x00002000;
        }
        if (((from_bitField1_ & 0x00004000) != 0)) {
          result.field47_ = field47_;
          to_bitField1_ |= 0x00004000;
        }
        if (((from_bitField1_ & 0x00008000) != 0)) {
          result.field48_ = field48_;
          to_bitField1_ |= 0x00008000;
        }
        if (((from_bitField1_ & 0x00010000) != 0)) {
          result.field49_ = field49_;
          to_bitField1_ |= 0x00010000;
        }
        if (((from_bitField1_ & 0x00020000) != 0)) {
          result.field50_ = field50_;
          to_bitField1_ |= 0x00020000;
        }
        if (((from_bitField1_ & 0x00040000) != 0)) {
          result.field51_ = field51_;
          to_bitField1_ |= 0x00040000;
        }
        if (((from_bitField1_ & 0x00080000) != 0)) {
          result.field52_ = field52_;
          to_bitField1_ |= 0x00080000;
        }
        if (((from_bitField1_ & 0x00100000) != 0)) {
          result.field53_ = field53_;
          to_bitField1_ |= 0x00100000;
        }
        if (((from_bitField1_ & 0x00200000) != 0)) {
          result.field54_ = field54_;
          to_bitField1_ |= 0x00200000;
        }
        if (((from_bitField1_ & 0x00400000) != 0)) {
          result.field55_ = field55_;
          to_bitField1_ |= 0x00400000;
        }
        if (((from_bitField1_ & 0x00800000) != 0)) {
          result.field56_ = field56_;
          to_bitField1_ |= 0x00800000;
        }
        if (((from_bitField1_ & 0x01000000) != 0)) {
          result.field57_ = field57_;
          to_bitField1_ |= 0x01000000;
        }
        if (((from_bitField1_ & 0x02000000) != 0)) {
          result.field58_ = field58_;
          to_bitField1_ |= 0x02000000;
        }
        if (((from_bitField1_ & 0x04000000) != 0)) {
          result.field59_ = field59_;
          to_bitField1_ |= 0x04000000;
        }
        if (((from_bitField1_ & 0x08000000) != 0)) {
          result.field60_ = field60_;
          to_bitField1_ |= 0x08000000;
        }
        if (((from_bitField1_ & 0x10000000) != 0)) {
          result.field61_ = field61_;
          to_bitField1_ |= 0x10000000;
        }
        if (((from_bitField1_ & 0x20000000) != 0)) {
          result.field62_ = field62_;
          to_bitField1_ |= 0x20000000;
        }
        if (((from_bitField1_ & 0x40000000) != 0)) {
          result.field63_ = field63_;
          to_bitField1_ |= 0x40000000;
        }
        if (((from_bitField1_ & 0x80000000) != 0)) {
          result.field64_ = field64_;
          to_bitField1_ |= 0x80000000;
        }
        result.bitField1_ |= to_bitField1_;
      }

      private void buildPartial2(foo.TestFull.TestRequiredFieldsBitmap result) {
        int from_bitField2_ = bitField2_;
        int to_bitField2_ = 0;
        if (((from_bitField2_ & 0x00000001) != 0)) {
          result.field65_ = field65_;
          to_bitField2_ |= 0x00000001;
        }
        if (((from_bitField2_ & 0x00000002) != 0)) {
          result.field66_ = field66_;
          to_bitField2_ |= 0x00000002;
        }
        if (((from_bitField2_ & 0x00000004) != 0)) {
          result.field67_ = field67_;
          to_bitField2_ |= 0x00000004;
        }
        if (((from_bitField2_ & 0x00000008) != 0)) {
          result.field68_ = field68_;
          to_bitField2_ |= 0x00000008;
        }
        if (((from_bitField2_ & 0x00000010) != 0)) {
          result.field69_ = field69_;
          to_bitField2_ |= 0x00000010;
        }
        if (((from_bitField2_ & 0x00000020) != 0)) {
          result.field70_ = field70_;
          to_bitField2_ |= 0x00000020;
        }
        if (((from_bitField2_ & 0x00000040) != 0)) {
          result.field71_ = field71_;
          to_bitField2_ |= 0x00000040;
        }
        if (((from_bitField2_ & 0x00000080) != 0)) {
          result.field72_ = field72_;
          to_bitField2_ |= 0x00000080;
        }
        if (((from_bitField2_ & 0x00000100) != 0)) {
          result.field73_ = field73_;
          to_bitField2_ |= 0x00000100;
        }
        if (((from_bitField2_ & 0x00000200) != 0)) {
          result.field74_ = field74_;
          to_bitField2_ |= 0x00000200;
        }
        if (((from_bitField2_ & 0x00000400) != 0)) {
          result.field75_ = field75_;
          to_bitField2_ |= 0x00000400;
        }
        if (((from_bitField2_ & 0x00000800) != 0)) {
          result.field76_ = field76_;
          to_bitField2_ |= 0x00000800;
        }
        if (((from_bitField2_ & 0x00001000) != 0)) {
          result.field77_ = field77_;
          to_bitField2_ |= 0x00001000;
        }
        if (((from_bitField2_ & 0x00002000) != 0)) {
          result.field78_ = field78_;
          to_bitField2_ |= 0x00002000;
        }
        if (((from_bitField2_ & 0x00004000) != 0)) {
          result.field79_ = field79_;
          to_bitField2_ |= 0x00004000;
        }
        if (((from_bitField2_ & 0x00008000) != 0)) {
          result.field80_ = field80_;
          to_bitField2_ |= 0x00008000;
        }
        if (((from_bitField2_ & 0x00010000) != 0)) {
          result.field81_ = field81_;
          to_bitField2_ |= 0x00010000;
        }
        if (((from_bitField2_ & 0x00020000) != 0)) {
          result.field82_ = field82_;
          to_bitField2_ |= 0x00020000;
        }
        if (((from_bitField2_ & 0x00040000) != 0)) {
          result.field83_ = field83_;
          to_bitField2_ |= 0x00040000;
        }
        if (((from_bitField2_ & 0x00080000) != 0)) {
          result.field84_ = field84_;
          to_bitField2_ |= 0x00080000;
        }
        if (((from_bitField2_ & 0x00100000) != 0)) {
          result.field85_ = field85_;
          to_bitField2_ |= 0x00100000;
        }
        if (((from_bitField2_ & 0x00200000) != 0)) {
          result.field86_ = field86_;
          to_bitField2_ |= 0x00200000;
        }
        if (((from_bitField2_ & 0x00400000) != 0)) {
          result.field87_ = field87_;
          to_bitField2_ |= 0x00400000;
        }
        if (((from_bitField2_ & 0x00800000) != 0)) {
          result.field88_ = field88_;
          to_bitField2_ |= 0x00800000;
        }
        if (((from_bitField2_ & 0x01000000) != 0)) {
          result.field89_ = field89_;
          to_bitField2_ |= 0x01000000;
        }
        if (((from_bitField2_ & 0x02000000) != 0)) {
          result.field90_ = field90_;
          to_bitField2_ |= 0x02000000;
        }
        if (((from_bitField2_ & 0x04000000) != 0)) {
          result.field91_ = field91_;
          to_bitField2_ |= 0x04000000;
        }
        if (((from_bitField2_ & 0x08000000) != 0)) {
          result.field92_ = field92_;
          to_bitField2_ |= 0x08000000;
        }
        if (((from_bitField2_ & 0x10000000) != 0)) {
          result.field93_ = field93_;
          to_bitField2_ |= 0x10000000;
        }
        if (((from_bitField2_ & 0x20000000) != 0)) {
          result.field94_ = field94_;
          to_bitField2_ |= 0x20000000;
        }
        if (((from_bitField2_ & 0x40000000) != 0)) {
          result.field95_ = field95_;
          to_bitField2_ |= 0x40000000;
        }
        if (((from_bitField2_ & 0x80000000) != 0)) {
          result.field96_ = field96_;
          to_bitField2_ |= 0x80000000;
        }
        result.bitField2_ |= to_bitField2_;
      }

      private void buildPartial3(foo.TestFull.TestRequiredFieldsBitmap result) {
        int from_bitField3_ = bitField3_;
        int to_bitField3_ = 0;
        if (((from_bitField3_ & 0x00000001) != 0)) {
          result.field97_ = field97_;
          to_bitField3_ |= 0x00000001;
        }
        if (((from_bitField3_ & 0x00000002) != 0)) {
          result.field98_ = field98_;
          to_bitField3_ |= 0x00000002;
        }
        if (((from_bitField3_ & 0x00000004) != 0)) {
          result.field99_ = field99_;
          to_bitField3_ |= 0x00000004;
        }
        if (((from_bitField3_ & 0x00000008) != 0)) {
          result.field100_ = field100_;
          to_bitField3_ |= 0x00000008;
        }
        if (((from_bitField3_ & 0x00000010) != 0)) {
          result.field101_ = field101_;
          to_bitField3_ |= 0x00000010;
        }
        if (((from_bitField3_ & 0x00000020) != 0)) {
          result.field102_ = field102_;
          to_bitField3_ |= 0x00000020;
        }
        if (((from_bitField3_ & 0x00000040) != 0)) {
          result.field103_ = field103_;
          to_bitField3_ |= 0x00000040;
        }
        if (((from_bitField3_ & 0x00000080) != 0)) {
          result.field104_ = field104_;
          to_bitField3_ |= 0x00000080;
        }
        if (((from_bitField3_ & 0x00000100) != 0)) {
          result.field105_ = field105_;
          to_bitField3_ |= 0x00000100;
        }
        if (((from_bitField3_ & 0x00000200) != 0)) {
          result.field106_ = field106_;
          to_bitField3_ |= 0x00000200;
        }
        if (((from_bitField3_ & 0x00000400) != 0)) {
          result.field107_ = field107_;
          to_bitField3_ |= 0x00000400;
        }
        if (((from_bitField3_ & 0x00000800) != 0)) {
          result.field108_ = field108_;
          to_bitField3_ |= 0x00000800;
        }
        if (((from_bitField3_ & 0x00001000) != 0)) {
          result.field109_ = field109_;
          to_bitField3_ |= 0x00001000;
        }
        if (((from_bitField3_ & 0x00002000) != 0)) {
          result.field110_ = field110_;
          to_bitField3_ |= 0x00002000;
        }
        if (((from_bitField3_ & 0x00004000) != 0)) {
          result.field111_ = field111_;
          to_bitField3_ |= 0x00004000;
        }
        if (((from_bitField3_ & 0x00008000) != 0)) {
          result.field112_ = field112_;
          to_bitField3_ |= 0x00008000;
        }
        if (((from_bitField3_ & 0x00010000) != 0)) {
          result.field113_ = field113_;
          to_bitField3_ |= 0x00010000;
        }
        if (((from_bitField3_ & 0x00020000) != 0)) {
          result.field114_ = field114_;
          to_bitField3_ |= 0x00020000;
        }
        if (((from_bitField3_ & 0x00040000) != 0)) {
          result.field115_ = field115_;
          to_bitField3_ |= 0x00040000;
        }
        if (((from_bitField3_ & 0x00080000) != 0)) {
          result.field116_ = field116_;
          to_bitField3_ |= 0x00080000;
        }
        if (((from_bitField3_ & 0x00100000) != 0)) {
          result.field117_ = field117_;
          to_bitField3_ |= 0x00100000;
        }
        if (((from_bitField3_ & 0x00200000) != 0)) {
          result.field118_ = field118_;
          to_bitField3_ |= 0x00200000;
        }
        if (((from_bitField3_ & 0x00400000) != 0)) {
          result.field119_ = field119_;
          to_bitField3_ |= 0x00400000;
        }
        if (((from_bitField3_ & 0x00800000) != 0)) {
          result.field120_ = field120_;
          to_bitField3_ |= 0x00800000;
        }
        if (((from_bitField3_ & 0x01000000) != 0)) {
          result.field121_ = field121_;
          to_bitField3_ |= 0x01000000;
        }
        if (((from_bitField3_ & 0x02000000) != 0)) {
          result.field122_ = field122_;
          to_bitField3_ |= 0x02000000;
        }
        if (((from_bitField3_ & 0x04000000) != 0)) {
          result.field123_ = field123_;
          to_bitField3_ |= 0x04000000;
        }
        if (((from_bitField3_ & 0x08000000) != 0)) {
          result.field124_ = field124_;
          to_bitField3_ |= 0x08000000;
        }
        if (((from_bitField3_ & 0x10000000) != 0)) {
          result.field125_ = field125_;
          to_bitField3_ |= 0x10000000;
        }
        if (((from_bitField3_ & 0x20000000) != 0)) {
          result.field126_ = field126_;
          to_bitField3_ |= 0x20000000;
        }
        if (((from_bitField3_ & 0x40000000) != 0)) {
          result.field127_ = field127_;
          to_bitField3_ |= 0x40000000;
        }
        if (((from_bitField3_ & 0x80000000) != 0)) {
          result.field128_ = field128_;
          to_bitField3_ |= 0x80000000;
        }
        result.bitField3_ |= to_bitField3_;
      }

      private void buildPartial4(foo.TestFull.TestRequiredFieldsBitmap result) {
        int from_bitField4_ = bitField4_;
        int to_bitField4_ = 0;
        if (((from_bitField4_ & 0x00000001) != 0)) {
          result.field129_ = field129_;
          to_bitField4_ |= 0x00000001;
        }
        result.bitField4_ |= to_bitField4_;
      }

      @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 foo.TestFull.TestRequiredFieldsBitmap) {
          return mergeFrom((foo.TestFull.TestRequiredFieldsBitmap)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestRequiredFieldsBitmap other) {
        if (other == foo.TestFull.TestRequiredFieldsBitmap.getDefaultInstance()) return this;
        if (other.hasField1()) {
          field1_ = other.field1_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasField2()) {
          field2_ = other.field2_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasField3()) {
          field3_ = other.field3_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasField4()) {
          field4_ = other.field4_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasField5()) {
          field5_ = other.field5_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasField6()) {
          field6_ = other.field6_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasField7()) {
          field7_ = other.field7_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (other.hasField8()) {
          field8_ = other.field8_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (other.hasField9()) {
          field9_ = other.field9_;
          bitField0_ |= 0x00000100;
          onChanged();
        }
        if (other.hasField10()) {
          field10_ = other.field10_;
          bitField0_ |= 0x00000200;
          onChanged();
        }
        if (other.hasField11()) {
          field11_ = other.field11_;
          bitField0_ |= 0x00000400;
          onChanged();
        }
        if (other.hasField12()) {
          field12_ = other.field12_;
          bitField0_ |= 0x00000800;
          onChanged();
        }
        if (other.hasField13()) {
          field13_ = other.field13_;
          bitField0_ |= 0x00001000;
          onChanged();
        }
        if (other.hasField14()) {
          field14_ = other.field14_;
          bitField0_ |= 0x00002000;
          onChanged();
        }
        if (other.hasField15()) {
          field15_ = other.field15_;
          bitField0_ |= 0x00004000;
          onChanged();
        }
        if (other.hasField16()) {
          field16_ = other.field16_;
          bitField0_ |= 0x00008000;
          onChanged();
        }
        if (other.hasField17()) {
          field17_ = other.field17_;
          bitField0_ |= 0x00010000;
          onChanged();
        }
        if (other.hasField18()) {
          field18_ = other.field18_;
          bitField0_ |= 0x00020000;
          onChanged();
        }
        if (other.hasField19()) {
          field19_ = other.field19_;
          bitField0_ |= 0x00040000;
          onChanged();
        }
        if (other.hasField20()) {
          field20_ = other.field20_;
          bitField0_ |= 0x00080000;
          onChanged();
        }
        if (other.hasField21()) {
          field21_ = other.field21_;
          bitField0_ |= 0x00100000;
          onChanged();
        }
        if (other.hasField22()) {
          field22_ = other.field22_;
          bitField0_ |= 0x00200000;
          onChanged();
        }
        if (other.hasField23()) {
          field23_ = other.field23_;
          bitField0_ |= 0x00400000;
          onChanged();
        }
        if (other.hasField24()) {
          field24_ = other.field24_;
          bitField0_ |= 0x00800000;
          onChanged();
        }
        if (other.hasField25()) {
          field25_ = other.field25_;
          bitField0_ |= 0x01000000;
          onChanged();
        }
        if (other.hasField26()) {
          field26_ = other.field26_;
          bitField0_ |= 0x02000000;
          onChanged();
        }
        if (other.hasField27()) {
          field27_ = other.field27_;
          bitField0_ |= 0x04000000;
          onChanged();
        }
        if (other.hasField28()) {
          field28_ = other.field28_;
          bitField0_ |= 0x08000000;
          onChanged();
        }
        if (other.hasField29()) {
          field29_ = other.field29_;
          bitField0_ |= 0x10000000;
          onChanged();
        }
        if (other.hasField30()) {
          field30_ = other.field30_;
          bitField0_ |= 0x20000000;
          onChanged();
        }
        if (other.hasField31()) {
          field31_ = other.field31_;
          bitField0_ |= 0x40000000;
          onChanged();
        }
        if (other.hasField32()) {
          field32_ = other.field32_;
          bitField0_ |= 0x80000000;
          onChanged();
        }
        if (other.hasField33()) {
          field33_ = other.field33_;
          bitField1_ |= 0x00000001;
          onChanged();
        }
        if (other.hasField34()) {
          field34_ = other.field34_;
          bitField1_ |= 0x00000002;
          onChanged();
        }
        if (other.hasField35()) {
          field35_ = other.field35_;
          bitField1_ |= 0x00000004;
          onChanged();
        }
        if (other.hasField36()) {
          field36_ = other.field36_;
          bitField1_ |= 0x00000008;
          onChanged();
        }
        if (other.hasField37()) {
          field37_ = other.field37_;
          bitField1_ |= 0x00000010;
          onChanged();
        }
        if (other.hasField38()) {
          field38_ = other.field38_;
          bitField1_ |= 0x00000020;
          onChanged();
        }
        if (other.hasField39()) {
          field39_ = other.field39_;
          bitField1_ |= 0x00000040;
          onChanged();
        }
        if (other.hasField40()) {
          field40_ = other.field40_;
          bitField1_ |= 0x00000080;
          onChanged();
        }
        if (other.hasField41()) {
          field41_ = other.field41_;
          bitField1_ |= 0x00000100;
          onChanged();
        }
        if (other.hasField42()) {
          field42_ = other.field42_;
          bitField1_ |= 0x00000200;
          onChanged();
        }
        if (other.hasField43()) {
          field43_ = other.field43_;
          bitField1_ |= 0x00000400;
          onChanged();
        }
        if (other.hasField44()) {
          field44_ = other.field44_;
          bitField1_ |= 0x00000800;
          onChanged();
        }
        if (other.hasField45()) {
          field45_ = other.field45_;
          bitField1_ |= 0x00001000;
          onChanged();
        }
        if (other.hasField46()) {
          field46_ = other.field46_;
          bitField1_ |= 0x00002000;
          onChanged();
        }
        if (other.hasField47()) {
          field47_ = other.field47_;
          bitField1_ |= 0x00004000;
          onChanged();
        }
        if (other.hasField48()) {
          field48_ = other.field48_;
          bitField1_ |= 0x00008000;
          onChanged();
        }
        if (other.hasField49()) {
          field49_ = other.field49_;
          bitField1_ |= 0x00010000;
          onChanged();
        }
        if (other.hasField50()) {
          field50_ = other.field50_;
          bitField1_ |= 0x00020000;
          onChanged();
        }
        if (other.hasField51()) {
          field51_ = other.field51_;
          bitField1_ |= 0x00040000;
          onChanged();
        }
        if (other.hasField52()) {
          field52_ = other.field52_;
          bitField1_ |= 0x00080000;
          onChanged();
        }
        if (other.hasField53()) {
          field53_ = other.field53_;
          bitField1_ |= 0x00100000;
          onChanged();
        }
        if (other.hasField54()) {
          field54_ = other.field54_;
          bitField1_ |= 0x00200000;
          onChanged();
        }
        if (other.hasField55()) {
          field55_ = other.field55_;
          bitField1_ |= 0x00400000;
          onChanged();
        }
        if (other.hasField56()) {
          field56_ = other.field56_;
          bitField1_ |= 0x00800000;
          onChanged();
        }
        if (other.hasField57()) {
          field57_ = other.field57_;
          bitField1_ |= 0x01000000;
          onChanged();
        }
        if (other.hasField58()) {
          field58_ = other.field58_;
          bitField1_ |= 0x02000000;
          onChanged();
        }
        if (other.hasField59()) {
          field59_ = other.field59_;
          bitField1_ |= 0x04000000;
          onChanged();
        }
        if (other.hasField60()) {
          field60_ = other.field60_;
          bitField1_ |= 0x08000000;
          onChanged();
        }
        if (other.hasField61()) {
          field61_ = other.field61_;
          bitField1_ |= 0x10000000;
          onChanged();
        }
        if (other.hasField62()) {
          field62_ = other.field62_;
          bitField1_ |= 0x20000000;
          onChanged();
        }
        if (other.hasField63()) {
          field63_ = other.field63_;
          bitField1_ |= 0x40000000;
          onChanged();
        }
        if (other.hasField64()) {
          field64_ = other.field64_;
          bitField1_ |= 0x80000000;
          onChanged();
        }
        if (other.hasField65()) {
          field65_ = other.field65_;
          bitField2_ |= 0x00000001;
          onChanged();
        }
        if (other.hasField66()) {
          field66_ = other.field66_;
          bitField2_ |= 0x00000002;
          onChanged();
        }
        if (other.hasField67()) {
          field67_ = other.field67_;
          bitField2_ |= 0x00000004;
          onChanged();
        }
        if (other.hasField68()) {
          field68_ = other.field68_;
          bitField2_ |= 0x00000008;
          onChanged();
        }
        if (other.hasField69()) {
          field69_ = other.field69_;
          bitField2_ |= 0x00000010;
          onChanged();
        }
        if (other.hasField70()) {
          field70_ = other.field70_;
          bitField2_ |= 0x00000020;
          onChanged();
        }
        if (other.hasField71()) {
          field71_ = other.field71_;
          bitField2_ |= 0x00000040;
          onChanged();
        }
        if (other.hasField72()) {
          field72_ = other.field72_;
          bitField2_ |= 0x00000080;
          onChanged();
        }
        if (other.hasField73()) {
          field73_ = other.field73_;
          bitField2_ |= 0x00000100;
          onChanged();
        }
        if (other.hasField74()) {
          field74_ = other.field74_;
          bitField2_ |= 0x00000200;
          onChanged();
        }
        if (other.hasField75()) {
          field75_ = other.field75_;
          bitField2_ |= 0x00000400;
          onChanged();
        }
        if (other.hasField76()) {
          field76_ = other.field76_;
          bitField2_ |= 0x00000800;
          onChanged();
        }
        if (other.hasField77()) {
          field77_ = other.field77_;
          bitField2_ |= 0x00001000;
          onChanged();
        }
        if (other.hasField78()) {
          field78_ = other.field78_;
          bitField2_ |= 0x00002000;
          onChanged();
        }
        if (other.hasField79()) {
          field79_ = other.field79_;
          bitField2_ |= 0x00004000;
          onChanged();
        }
        if (other.hasField80()) {
          field80_ = other.field80_;
          bitField2_ |= 0x00008000;
          onChanged();
        }
        if (other.hasField81()) {
          field81_ = other.field81_;
          bitField2_ |= 0x00010000;
          onChanged();
        }
        if (other.hasField82()) {
          field82_ = other.field82_;
          bitField2_ |= 0x00020000;
          onChanged();
        }
        if (other.hasField83()) {
          field83_ = other.field83_;
          bitField2_ |= 0x00040000;
          onChanged();
        }
        if (other.hasField84()) {
          field84_ = other.field84_;
          bitField2_ |= 0x00080000;
          onChanged();
        }
        if (other.hasField85()) {
          field85_ = other.field85_;
          bitField2_ |= 0x00100000;
          onChanged();
        }
        if (other.hasField86()) {
          field86_ = other.field86_;
          bitField2_ |= 0x00200000;
          onChanged();
        }
        if (other.hasField87()) {
          field87_ = other.field87_;
          bitField2_ |= 0x00400000;
          onChanged();
        }
        if (other.hasField88()) {
          field88_ = other.field88_;
          bitField2_ |= 0x00800000;
          onChanged();
        }
        if (other.hasField89()) {
          field89_ = other.field89_;
          bitField2_ |= 0x01000000;
          onChanged();
        }
        if (other.hasField90()) {
          field90_ = other.field90_;
          bitField2_ |= 0x02000000;
          onChanged();
        }
        if (other.hasField91()) {
          field91_ = other.field91_;
          bitField2_ |= 0x04000000;
          onChanged();
        }
        if (other.hasField92()) {
          field92_ = other.field92_;
          bitField2_ |= 0x08000000;
          onChanged();
        }
        if (other.hasField93()) {
          field93_ = other.field93_;
          bitField2_ |= 0x10000000;
          onChanged();
        }
        if (other.hasField94()) {
          field94_ = other.field94_;
          bitField2_ |= 0x20000000;
          onChanged();
        }
        if (other.hasField95()) {
          field95_ = other.field95_;
          bitField2_ |= 0x40000000;
          onChanged();
        }
        if (other.hasField96()) {
          field96_ = other.field96_;
          bitField2_ |= 0x80000000;
          onChanged();
        }
        if (other.hasField97()) {
          field97_ = other.field97_;
          bitField3_ |= 0x00000001;
          onChanged();
        }
        if (other.hasField98()) {
          field98_ = other.field98_;
          bitField3_ |= 0x00000002;
          onChanged();
        }
        if (other.hasField99()) {
          field99_ = other.field99_;
          bitField3_ |= 0x00000004;
          onChanged();
        }
        if (other.hasField100()) {
          field100_ = other.field100_;
          bitField3_ |= 0x00000008;
          onChanged();
        }
        if (other.hasField101()) {
          field101_ = other.field101_;
          bitField3_ |= 0x00000010;
          onChanged();
        }
        if (other.hasField102()) {
          field102_ = other.field102_;
          bitField3_ |= 0x00000020;
          onChanged();
        }
        if (other.hasField103()) {
          field103_ = other.field103_;
          bitField3_ |= 0x00000040;
          onChanged();
        }
        if (other.hasField104()) {
          field104_ = other.field104_;
          bitField3_ |= 0x00000080;
          onChanged();
        }
        if (other.hasField105()) {
          field105_ = other.field105_;
          bitField3_ |= 0x00000100;
          onChanged();
        }
        if (other.hasField106()) {
          field106_ = other.field106_;
          bitField3_ |= 0x00000200;
          onChanged();
        }
        if (other.hasField107()) {
          field107_ = other.field107_;
          bitField3_ |= 0x00000400;
          onChanged();
        }
        if (other.hasField108()) {
          field108_ = other.field108_;
          bitField3_ |= 0x00000800;
          onChanged();
        }
        if (other.hasField109()) {
          field109_ = other.field109_;
          bitField3_ |= 0x00001000;
          onChanged();
        }
        if (other.hasField110()) {
          field110_ = other.field110_;
          bitField3_ |= 0x00002000;
          onChanged();
        }
        if (other.hasField111()) {
          field111_ = other.field111_;
          bitField3_ |= 0x00004000;
          onChanged();
        }
        if (other.hasField112()) {
          field112_ = other.field112_;
          bitField3_ |= 0x00008000;
          onChanged();
        }
        if (other.hasField113()) {
          field113_ = other.field113_;
          bitField3_ |= 0x00010000;
          onChanged();
        }
        if (other.hasField114()) {
          field114_ = other.field114_;
          bitField3_ |= 0x00020000;
          onChanged();
        }
        if (other.hasField115()) {
          field115_ = other.field115_;
          bitField3_ |= 0x00040000;
          onChanged();
        }
        if (other.hasField116()) {
          field116_ = other.field116_;
          bitField3_ |= 0x00080000;
          onChanged();
        }
        if (other.hasField117()) {
          field117_ = other.field117_;
          bitField3_ |= 0x00100000;
          onChanged();
        }
        if (other.hasField118()) {
          field118_ = other.field118_;
          bitField3_ |= 0x00200000;
          onChanged();
        }
        if (other.hasField119()) {
          field119_ = other.field119_;
          bitField3_ |= 0x00400000;
          onChanged();
        }
        if (other.hasField120()) {
          field120_ = other.field120_;
          bitField3_ |= 0x00800000;
          onChanged();
        }
        if (other.hasField121()) {
          field121_ = other.field121_;
          bitField3_ |= 0x01000000;
          onChanged();
        }
        if (other.hasField122()) {
          field122_ = other.field122_;
          bitField3_ |= 0x02000000;
          onChanged();
        }
        if (other.hasField123()) {
          field123_ = other.field123_;
          bitField3_ |= 0x04000000;
          onChanged();
        }
        if (other.hasField124()) {
          field124_ = other.field124_;
          bitField3_ |= 0x08000000;
          onChanged();
        }
        if (other.hasField125()) {
          field125_ = other.field125_;
          bitField3_ |= 0x10000000;
          onChanged();
        }
        if (other.hasField126()) {
          field126_ = other.field126_;
          bitField3_ |= 0x20000000;
          onChanged();
        }
        if (other.hasField127()) {
          field127_ = other.field127_;
          bitField3_ |= 0x40000000;
          onChanged();
        }
        if (other.hasField128()) {
          field128_ = other.field128_;
          bitField3_ |= 0x80000000;
          onChanged();
        }
        if (other.hasField129()) {
          field129_ = other.field129_;
          bitField4_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasField1()) {
          return false;
        }
        if (!hasField129()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                field1_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                field2_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                field3_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                field4_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                field5_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                field6_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                field7_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                field8_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                field9_ = input.readBytes();
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 82: {
                field10_ = input.readBytes();
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              case 90: {
                field11_ = input.readBytes();
                bitField0_ |= 0x00000400;
                break;
              } // case 90
              case 98: {
                field12_ = input.readBytes();
                bitField0_ |= 0x00000800;
                break;
              } // case 98
              case 106: {
                field13_ = input.readBytes();
                bitField0_ |= 0x00001000;
                break;
              } // case 106
              case 114: {
                field14_ = input.readBytes();
                bitField0_ |= 0x00002000;
                break;
              } // case 114
              case 122: {
                field15_ = input.readBytes();
                bitField0_ |= 0x00004000;
                break;
              } // case 122
              case 130: {
                field16_ = input.readBytes();
                bitField0_ |= 0x00008000;
                break;
              } // case 130
              case 138: {
                field17_ = input.readBytes();
                bitField0_ |= 0x00010000;
                break;
              } // case 138
              case 146: {
                field18_ = input.readBytes();
                bitField0_ |= 0x00020000;
                break;
              } // case 146
              case 154: {
                field19_ = input.readBytes();
                bitField0_ |= 0x00040000;
                break;
              } // case 154
              case 162: {
                field20_ = input.readBytes();
                bitField0_ |= 0x00080000;
                break;
              } // case 162
              case 170: {
                field21_ = input.readBytes();
                bitField0_ |= 0x00100000;
                break;
              } // case 170
              case 178: {
                field22_ = input.readBytes();
                bitField0_ |= 0x00200000;
                break;
              } // case 178
              case 186: {
                field23_ = input.readBytes();
                bitField0_ |= 0x00400000;
                break;
              } // case 186
              case 194: {
                field24_ = input.readBytes();
                bitField0_ |= 0x00800000;
                break;
              } // case 194
              case 202: {
                field25_ = input.readBytes();
                bitField0_ |= 0x01000000;
                break;
              } // case 202
              case 210: {
                field26_ = input.readBytes();
                bitField0_ |= 0x02000000;
                break;
              } // case 210
              case 218: {
                field27_ = input.readBytes();
                bitField0_ |= 0x04000000;
                break;
              } // case 218
              case 226: {
                field28_ = input.readBytes();
                bitField0_ |= 0x08000000;
                break;
              } // case 226
              case 234: {
                field29_ = input.readBytes();
                bitField0_ |= 0x10000000;
                break;
              } // case 234
              case 242: {
                field30_ = input.readBytes();
                bitField0_ |= 0x20000000;
                break;
              } // case 242
              case 250: {
                field31_ = input.readBytes();
                bitField0_ |= 0x40000000;
                break;
              } // case 250
              case 258: {
                field32_ = input.readBytes();
                bitField0_ |= 0x80000000;
                break;
              } // case 258
              case 266: {
                field33_ = input.readBytes();
                bitField1_ |= 0x00000001;
                break;
              } // case 266
              case 274: {
                field34_ = input.readBytes();
                bitField1_ |= 0x00000002;
                break;
              } // case 274
              case 282: {
                field35_ = input.readBytes();
                bitField1_ |= 0x00000004;
                break;
              } // case 282
              case 290: {
                field36_ = input.readBytes();
                bitField1_ |= 0x00000008;
                break;
              } // case 290
              case 298: {
                field37_ = input.readBytes();
                bitField1_ |= 0x00000010;
                break;
              } // case 298
              case 306: {
                field38_ = input.readBytes();
                bitField1_ |= 0x00000020;
                break;
              } // case 306
              case 314: {
                field39_ = input.readBytes();
                bitField1_ |= 0x00000040;
                break;
              } // case 314
              case 322: {
                field40_ = input.readBytes();
                bitField1_ |= 0x00000080;
                break;
              } // case 322
              case 330: {
                field41_ = input.readBytes();
                bitField1_ |= 0x00000100;
                break;
              } // case 330
              case 338: {
                field42_ = input.readBytes();
                bitField1_ |= 0x00000200;
                break;
              } // case 338
              case 346: {
                field43_ = input.readBytes();
                bitField1_ |= 0x00000400;
                break;
              } // case 346
              case 354: {
                field44_ = input.readBytes();
                bitField1_ |= 0x00000800;
                break;
              } // case 354
              case 362: {
                field45_ = input.readBytes();
                bitField1_ |= 0x00001000;
                break;
              } // case 362
              case 370: {
                field46_ = input.readBytes();
                bitField1_ |= 0x00002000;
                break;
              } // case 370
              case 378: {
                field47_ = input.readBytes();
                bitField1_ |= 0x00004000;
                break;
              } // case 378
              case 386: {
                field48_ = input.readBytes();
                bitField1_ |= 0x00008000;
                break;
              } // case 386
              case 394: {
                field49_ = input.readBytes();
                bitField1_ |= 0x00010000;
                break;
              } // case 394
              case 402: {
                field50_ = input.readBytes();
                bitField1_ |= 0x00020000;
                break;
              } // case 402
              case 410: {
                field51_ = input.readBytes();
                bitField1_ |= 0x00040000;
                break;
              } // case 410
              case 418: {
                field52_ = input.readBytes();
                bitField1_ |= 0x00080000;
                break;
              } // case 418
              case 426: {
                field53_ = input.readBytes();
                bitField1_ |= 0x00100000;
                break;
              } // case 426
              case 434: {
                field54_ = input.readBytes();
                bitField1_ |= 0x00200000;
                break;
              } // case 434
              case 442: {
                field55_ = input.readBytes();
                bitField1_ |= 0x00400000;
                break;
              } // case 442
              case 450: {
                field56_ = input.readBytes();
                bitField1_ |= 0x00800000;
                break;
              } // case 450
              case 458: {
                field57_ = input.readBytes();
                bitField1_ |= 0x01000000;
                break;
              } // case 458
              case 466: {
                field58_ = input.readBytes();
                bitField1_ |= 0x02000000;
                break;
              } // case 466
              case 474: {
                field59_ = input.readBytes();
                bitField1_ |= 0x04000000;
                break;
              } // case 474
              case 482: {
                field60_ = input.readBytes();
                bitField1_ |= 0x08000000;
                break;
              } // case 482
              case 490: {
                field61_ = input.readBytes();
                bitField1_ |= 0x10000000;
                break;
              } // case 490
              case 498: {
                field62_ = input.readBytes();
                bitField1_ |= 0x20000000;
                break;
              } // case 498
              case 506: {
                field63_ = input.readBytes();
                bitField1_ |= 0x40000000;
                break;
              } // case 506
              case 514: {
                field64_ = input.readBytes();
                bitField1_ |= 0x80000000;
                break;
              } // case 514
              case 522: {
                field65_ = input.readBytes();
                bitField2_ |= 0x00000001;
                break;
              } // case 522
              case 530: {
                field66_ = input.readBytes();
                bitField2_ |= 0x00000002;
                break;
              } // case 530
              case 538: {
                field67_ = input.readBytes();
                bitField2_ |= 0x00000004;
                break;
              } // case 538
              case 546: {
                field68_ = input.readBytes();
                bitField2_ |= 0x00000008;
                break;
              } // case 546
              case 554: {
                field69_ = input.readBytes();
                bitField2_ |= 0x00000010;
                break;
              } // case 554
              case 562: {
                field70_ = input.readBytes();
                bitField2_ |= 0x00000020;
                break;
              } // case 562
              case 570: {
                field71_ = input.readBytes();
                bitField2_ |= 0x00000040;
                break;
              } // case 570
              case 578: {
                field72_ = input.readBytes();
                bitField2_ |= 0x00000080;
                break;
              } // case 578
              case 586: {
                field73_ = input.readBytes();
                bitField2_ |= 0x00000100;
                break;
              } // case 586
              case 594: {
                field74_ = input.readBytes();
                bitField2_ |= 0x00000200;
                break;
              } // case 594
              case 602: {
                field75_ = input.readBytes();
                bitField2_ |= 0x00000400;
                break;
              } // case 602
              case 610: {
                field76_ = input.readBytes();
                bitField2_ |= 0x00000800;
                break;
              } // case 610
              case 618: {
                field77_ = input.readBytes();
                bitField2_ |= 0x00001000;
                break;
              } // case 618
              case 626: {
                field78_ = input.readBytes();
                bitField2_ |= 0x00002000;
                break;
              } // case 626
              case 634: {
                field79_ = input.readBytes();
                bitField2_ |= 0x00004000;
                break;
              } // case 634
              case 642: {
                field80_ = input.readBytes();
                bitField2_ |= 0x00008000;
                break;
              } // case 642
              case 650: {
                field81_ = input.readBytes();
                bitField2_ |= 0x00010000;
                break;
              } // case 650
              case 658: {
                field82_ = input.readBytes();
                bitField2_ |= 0x00020000;
                break;
              } // case 658
              case 666: {
                field83_ = input.readBytes();
                bitField2_ |= 0x00040000;
                break;
              } // case 666
              case 674: {
                field84_ = input.readBytes();
                bitField2_ |= 0x00080000;
                break;
              } // case 674
              case 682: {
                field85_ = input.readBytes();
                bitField2_ |= 0x00100000;
                break;
              } // case 682
              case 690: {
                field86_ = input.readBytes();
                bitField2_ |= 0x00200000;
                break;
              } // case 690
              case 698: {
                field87_ = input.readBytes();
                bitField2_ |= 0x00400000;
                break;
              } // case 698
              case 706: {
                field88_ = input.readBytes();
                bitField2_ |= 0x00800000;
                break;
              } // case 706
              case 714: {
                field89_ = input.readBytes();
                bitField2_ |= 0x01000000;
                break;
              } // case 714
              case 722: {
                field90_ = input.readBytes();
                bitField2_ |= 0x02000000;
                break;
              } // case 722
              case 730: {
                field91_ = input.readBytes();
                bitField2_ |= 0x04000000;
                break;
              } // case 730
              case 738: {
                field92_ = input.readBytes();
                bitField2_ |= 0x08000000;
                break;
              } // case 738
              case 746: {
                field93_ = input.readBytes();
                bitField2_ |= 0x10000000;
                break;
              } // case 746
              case 754: {
                field94_ = input.readBytes();
                bitField2_ |= 0x20000000;
                break;
              } // case 754
              case 762: {
                field95_ = input.readBytes();
                bitField2_ |= 0x40000000;
                break;
              } // case 762
              case 770: {
                field96_ = input.readBytes();
                bitField2_ |= 0x80000000;
                break;
              } // case 770
              case 778: {
                field97_ = input.readBytes();
                bitField3_ |= 0x00000001;
                break;
              } // case 778
              case 786: {
                field98_ = input.readBytes();
                bitField3_ |= 0x00000002;
                break;
              } // case 786
              case 794: {
                field99_ = input.readBytes();
                bitField3_ |= 0x00000004;
                break;
              } // case 794
              case 802: {
                field100_ = input.readBytes();
                bitField3_ |= 0x00000008;
                break;
              } // case 802
              case 810: {
                field101_ = input.readBytes();
                bitField3_ |= 0x00000010;
                break;
              } // case 810
              case 818: {
                field102_ = input.readBytes();
                bitField3_ |= 0x00000020;
                break;
              } // case 818
              case 826: {
                field103_ = input.readBytes();
                bitField3_ |= 0x00000040;
                break;
              } // case 826
              case 834: {
                field104_ = input.readBytes();
                bitField3_ |= 0x00000080;
                break;
              } // case 834
              case 842: {
                field105_ = input.readBytes();
                bitField3_ |= 0x00000100;
                break;
              } // case 842
              case 850: {
                field106_ = input.readBytes();
                bitField3_ |= 0x00000200;
                break;
              } // case 850
              case 858: {
                field107_ = input.readBytes();
                bitField3_ |= 0x00000400;
                break;
              } // case 858
              case 866: {
                field108_ = input.readBytes();
                bitField3_ |= 0x00000800;
                break;
              } // case 866
              case 874: {
                field109_ = input.readBytes();
                bitField3_ |= 0x00001000;
                break;
              } // case 874
              case 882: {
                field110_ = input.readBytes();
                bitField3_ |= 0x00002000;
                break;
              } // case 882
              case 890: {
                field111_ = input.readBytes();
                bitField3_ |= 0x00004000;
                break;
              } // case 890
              case 898: {
                field112_ = input.readBytes();
                bitField3_ |= 0x00008000;
                break;
              } // case 898
              case 906: {
                field113_ = input.readBytes();
                bitField3_ |= 0x00010000;
                break;
              } // case 906
              case 914: {
                field114_ = input.readBytes();
                bitField3_ |= 0x00020000;
                break;
              } // case 914
              case 922: {
                field115_ = input.readBytes();
                bitField3_ |= 0x00040000;
                break;
              } // case 922
              case 930: {
                field116_ = input.readBytes();
                bitField3_ |= 0x00080000;
                break;
              } // case 930
              case 938: {
                field117_ = input.readBytes();
                bitField3_ |= 0x00100000;
                break;
              } // case 938
              case 946: {
                field118_ = input.readBytes();
                bitField3_ |= 0x00200000;
                break;
              } // case 946
              case 954: {
                field119_ = input.readBytes();
                bitField3_ |= 0x00400000;
                break;
              } // case 954
              case 962: {
                field120_ = input.readBytes();
                bitField3_ |= 0x00800000;
                break;
              } // case 962
              case 970: {
                field121_ = input.readBytes();
                bitField3_ |= 0x01000000;
                break;
              } // case 970
              case 978: {
                field122_ = input.readBytes();
                bitField3_ |= 0x02000000;
                break;
              } // case 978
              case 986: {
                field123_ = input.readBytes();
                bitField3_ |= 0x04000000;
                break;
              } // case 986
              case 994: {
                field124_ = input.readBytes();
                bitField3_ |= 0x08000000;
                break;
              } // case 994
              case 1002: {
                field125_ = input.readBytes();
                bitField3_ |= 0x10000000;
                break;
              } // case 1002
              case 1010: {
                field126_ = input.readBytes();
                bitField3_ |= 0x20000000;
                break;
              } // case 1010
              case 1018: {
                field127_ = input.readBytes();
                bitField3_ |= 0x40000000;
                break;
              } // case 1018
              case 1026: {
                field128_ = input.readBytes();
                bitField3_ |= 0x80000000;
                break;
              } // case 1026
              case 1034: {
                field129_ = input.readBytes();
                bitField4_ |= 0x00000001;
                break;
              } // case 1034
              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 bitField1_;
      private int bitField2_;
      private int bitField3_;
      private int bitField4_;

      private java.lang.Object field1_ = "";
      /**
       * <code>required string field1 = 1;</code>
       * @return Whether the field1 field is set.
       */
      public boolean hasField1() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string field1 = 1;</code>
       * @return The field1.
       */
      public java.lang.String getField1() {
        java.lang.Object ref = field1_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field1_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string field1 = 1;</code>
       * @return The bytes for field1.
       */
      public com.google.protobuf.ByteString
          getField1Bytes() {
        java.lang.Object ref = field1_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field1_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string field1 = 1;</code>
       * @param value The field1 to set.
       * @return This builder for chaining.
       */
      public Builder setField1(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field1_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required string field1 = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearField1() {
        field1_ = getDefaultInstance().getField1();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>required string field1 = 1;</code>
       * @param value The bytes for field1 to set.
       * @return This builder for chaining.
       */
      public Builder setField1Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field1_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object field2_ = "";
      /**
       * <code>optional string field2 = 2;</code>
       * @return Whether the field2 field is set.
       */
      public boolean hasField2() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string field2 = 2;</code>
       * @return The field2.
       */
      public java.lang.String getField2() {
        java.lang.Object ref = field2_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field2_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field2 = 2;</code>
       * @return The bytes for field2.
       */
      public com.google.protobuf.ByteString
          getField2Bytes() {
        java.lang.Object ref = field2_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field2_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field2 = 2;</code>
       * @param value The field2 to set.
       * @return This builder for chaining.
       */
      public Builder setField2(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field2_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field2 = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearField2() {
        field2_ = getDefaultInstance().getField2();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field2 = 2;</code>
       * @param value The bytes for field2 to set.
       * @return This builder for chaining.
       */
      public Builder setField2Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field2_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object field3_ = "";
      /**
       * <code>optional string field3 = 3;</code>
       * @return Whether the field3 field is set.
       */
      public boolean hasField3() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string field3 = 3;</code>
       * @return The field3.
       */
      public java.lang.String getField3() {
        java.lang.Object ref = field3_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field3_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field3 = 3;</code>
       * @return The bytes for field3.
       */
      public com.google.protobuf.ByteString
          getField3Bytes() {
        java.lang.Object ref = field3_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field3_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field3 = 3;</code>
       * @param value The field3 to set.
       * @return This builder for chaining.
       */
      public Builder setField3(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field3_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field3 = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearField3() {
        field3_ = getDefaultInstance().getField3();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field3 = 3;</code>
       * @param value The bytes for field3 to set.
       * @return This builder for chaining.
       */
      public Builder setField3Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field3_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object field4_ = "";
      /**
       * <code>optional string field4 = 4;</code>
       * @return Whether the field4 field is set.
       */
      public boolean hasField4() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string field4 = 4;</code>
       * @return The field4.
       */
      public java.lang.String getField4() {
        java.lang.Object ref = field4_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field4_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field4 = 4;</code>
       * @return The bytes for field4.
       */
      public com.google.protobuf.ByteString
          getField4Bytes() {
        java.lang.Object ref = field4_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field4_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field4 = 4;</code>
       * @param value The field4 to set.
       * @return This builder for chaining.
       */
      public Builder setField4(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field4_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field4 = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearField4() {
        field4_ = getDefaultInstance().getField4();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field4 = 4;</code>
       * @param value The bytes for field4 to set.
       * @return This builder for chaining.
       */
      public Builder setField4Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field4_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object field5_ = "";
      /**
       * <code>optional string field5 = 5;</code>
       * @return Whether the field5 field is set.
       */
      public boolean hasField5() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional string field5 = 5;</code>
       * @return The field5.
       */
      public java.lang.String getField5() {
        java.lang.Object ref = field5_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field5_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field5 = 5;</code>
       * @return The bytes for field5.
       */
      public com.google.protobuf.ByteString
          getField5Bytes() {
        java.lang.Object ref = field5_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field5_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field5 = 5;</code>
       * @param value The field5 to set.
       * @return This builder for chaining.
       */
      public Builder setField5(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field5_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field5 = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearField5() {
        field5_ = getDefaultInstance().getField5();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field5 = 5;</code>
       * @param value The bytes for field5 to set.
       * @return This builder for chaining.
       */
      public Builder setField5Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field5_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object field6_ = "";
      /**
       * <code>optional string field6 = 6;</code>
       * @return Whether the field6 field is set.
       */
      public boolean hasField6() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional string field6 = 6;</code>
       * @return The field6.
       */
      public java.lang.String getField6() {
        java.lang.Object ref = field6_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field6_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field6 = 6;</code>
       * @return The bytes for field6.
       */
      public com.google.protobuf.ByteString
          getField6Bytes() {
        java.lang.Object ref = field6_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field6_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field6 = 6;</code>
       * @param value The field6 to set.
       * @return This builder for chaining.
       */
      public Builder setField6(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field6_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field6 = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearField6() {
        field6_ = getDefaultInstance().getField6();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field6 = 6;</code>
       * @param value The bytes for field6 to set.
       * @return This builder for chaining.
       */
      public Builder setField6Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field6_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object field7_ = "";
      /**
       * <code>optional string field7 = 7;</code>
       * @return Whether the field7 field is set.
       */
      public boolean hasField7() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional string field7 = 7;</code>
       * @return The field7.
       */
      public java.lang.String getField7() {
        java.lang.Object ref = field7_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field7_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field7 = 7;</code>
       * @return The bytes for field7.
       */
      public com.google.protobuf.ByteString
          getField7Bytes() {
        java.lang.Object ref = field7_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field7_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field7 = 7;</code>
       * @param value The field7 to set.
       * @return This builder for chaining.
       */
      public Builder setField7(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field7_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field7 = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearField7() {
        field7_ = getDefaultInstance().getField7();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field7 = 7;</code>
       * @param value The bytes for field7 to set.
       * @return This builder for chaining.
       */
      public Builder setField7Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field7_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object field8_ = "";
      /**
       * <code>optional string field8 = 8;</code>
       * @return Whether the field8 field is set.
       */
      public boolean hasField8() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional string field8 = 8;</code>
       * @return The field8.
       */
      public java.lang.String getField8() {
        java.lang.Object ref = field8_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field8_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field8 = 8;</code>
       * @return The bytes for field8.
       */
      public com.google.protobuf.ByteString
          getField8Bytes() {
        java.lang.Object ref = field8_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field8_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field8 = 8;</code>
       * @param value The field8 to set.
       * @return This builder for chaining.
       */
      public Builder setField8(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field8_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field8 = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearField8() {
        field8_ = getDefaultInstance().getField8();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field8 = 8;</code>
       * @param value The bytes for field8 to set.
       * @return This builder for chaining.
       */
      public Builder setField8Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field8_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private java.lang.Object field9_ = "";
      /**
       * <code>optional string field9 = 9;</code>
       * @return Whether the field9 field is set.
       */
      public boolean hasField9() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional string field9 = 9;</code>
       * @return The field9.
       */
      public java.lang.String getField9() {
        java.lang.Object ref = field9_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field9_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field9 = 9;</code>
       * @return The bytes for field9.
       */
      public com.google.protobuf.ByteString
          getField9Bytes() {
        java.lang.Object ref = field9_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field9_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field9 = 9;</code>
       * @param value The field9 to set.
       * @return This builder for chaining.
       */
      public Builder setField9(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field9_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field9 = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearField9() {
        field9_ = getDefaultInstance().getField9();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field9 = 9;</code>
       * @param value The bytes for field9 to set.
       * @return This builder for chaining.
       */
      public Builder setField9Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field9_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }

      private java.lang.Object field10_ = "";
      /**
       * <code>optional string field10 = 10;</code>
       * @return Whether the field10 field is set.
       */
      public boolean hasField10() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional string field10 = 10;</code>
       * @return The field10.
       */
      public java.lang.String getField10() {
        java.lang.Object ref = field10_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field10_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field10 = 10;</code>
       * @return The bytes for field10.
       */
      public com.google.protobuf.ByteString
          getField10Bytes() {
        java.lang.Object ref = field10_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field10_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field10 = 10;</code>
       * @param value The field10 to set.
       * @return This builder for chaining.
       */
      public Builder setField10(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field10_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field10 = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearField10() {
        field10_ = getDefaultInstance().getField10();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field10 = 10;</code>
       * @param value The bytes for field10 to set.
       * @return This builder for chaining.
       */
      public Builder setField10Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field10_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }

      private java.lang.Object field11_ = "";
      /**
       * <code>optional string field11 = 11;</code>
       * @return Whether the field11 field is set.
       */
      public boolean hasField11() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <code>optional string field11 = 11;</code>
       * @return The field11.
       */
      public java.lang.String getField11() {
        java.lang.Object ref = field11_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field11_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field11 = 11;</code>
       * @return The bytes for field11.
       */
      public com.google.protobuf.ByteString
          getField11Bytes() {
        java.lang.Object ref = field11_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field11_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field11 = 11;</code>
       * @param value The field11 to set.
       * @return This builder for chaining.
       */
      public Builder setField11(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field11_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field11 = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearField11() {
        field11_ = getDefaultInstance().getField11();
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field11 = 11;</code>
       * @param value The bytes for field11 to set.
       * @return This builder for chaining.
       */
      public Builder setField11Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field11_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }

      private java.lang.Object field12_ = "";
      /**
       * <code>optional string field12 = 12;</code>
       * @return Whether the field12 field is set.
       */
      public boolean hasField12() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <code>optional string field12 = 12;</code>
       * @return The field12.
       */
      public java.lang.String getField12() {
        java.lang.Object ref = field12_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field12_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field12 = 12;</code>
       * @return The bytes for field12.
       */
      public com.google.protobuf.ByteString
          getField12Bytes() {
        java.lang.Object ref = field12_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field12_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field12 = 12;</code>
       * @param value The field12 to set.
       * @return This builder for chaining.
       */
      public Builder setField12(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field12_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field12 = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearField12() {
        field12_ = getDefaultInstance().getField12();
        bitField0_ = (bitField0_ & ~0x00000800);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field12 = 12;</code>
       * @param value The bytes for field12 to set.
       * @return This builder for chaining.
       */
      public Builder setField12Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field12_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }

      private java.lang.Object field13_ = "";
      /**
       * <code>optional string field13 = 13;</code>
       * @return Whether the field13 field is set.
       */
      public boolean hasField13() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <code>optional string field13 = 13;</code>
       * @return The field13.
       */
      public java.lang.String getField13() {
        java.lang.Object ref = field13_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field13_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field13 = 13;</code>
       * @return The bytes for field13.
       */
      public com.google.protobuf.ByteString
          getField13Bytes() {
        java.lang.Object ref = field13_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field13_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field13 = 13;</code>
       * @param value The field13 to set.
       * @return This builder for chaining.
       */
      public Builder setField13(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field13_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field13 = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearField13() {
        field13_ = getDefaultInstance().getField13();
        bitField0_ = (bitField0_ & ~0x00001000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field13 = 13;</code>
       * @param value The bytes for field13 to set.
       * @return This builder for chaining.
       */
      public Builder setField13Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field13_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }

      private java.lang.Object field14_ = "";
      /**
       * <code>optional string field14 = 14;</code>
       * @return Whether the field14 field is set.
       */
      public boolean hasField14() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <code>optional string field14 = 14;</code>
       * @return The field14.
       */
      public java.lang.String getField14() {
        java.lang.Object ref = field14_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field14_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field14 = 14;</code>
       * @return The bytes for field14.
       */
      public com.google.protobuf.ByteString
          getField14Bytes() {
        java.lang.Object ref = field14_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field14_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field14 = 14;</code>
       * @param value The field14 to set.
       * @return This builder for chaining.
       */
      public Builder setField14(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field14_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field14 = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearField14() {
        field14_ = getDefaultInstance().getField14();
        bitField0_ = (bitField0_ & ~0x00002000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field14 = 14;</code>
       * @param value The bytes for field14 to set.
       * @return This builder for chaining.
       */
      public Builder setField14Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field14_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }

      private java.lang.Object field15_ = "";
      /**
       * <code>optional string field15 = 15;</code>
       * @return Whether the field15 field is set.
       */
      public boolean hasField15() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <code>optional string field15 = 15;</code>
       * @return The field15.
       */
      public java.lang.String getField15() {
        java.lang.Object ref = field15_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field15_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field15 = 15;</code>
       * @return The bytes for field15.
       */
      public com.google.protobuf.ByteString
          getField15Bytes() {
        java.lang.Object ref = field15_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field15_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field15 = 15;</code>
       * @param value The field15 to set.
       * @return This builder for chaining.
       */
      public Builder setField15(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field15_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field15 = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearField15() {
        field15_ = getDefaultInstance().getField15();
        bitField0_ = (bitField0_ & ~0x00004000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field15 = 15;</code>
       * @param value The bytes for field15 to set.
       * @return This builder for chaining.
       */
      public Builder setField15Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field15_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }

      private java.lang.Object field16_ = "";
      /**
       * <code>optional string field16 = 16;</code>
       * @return Whether the field16 field is set.
       */
      public boolean hasField16() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <code>optional string field16 = 16;</code>
       * @return The field16.
       */
      public java.lang.String getField16() {
        java.lang.Object ref = field16_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field16_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field16 = 16;</code>
       * @return The bytes for field16.
       */
      public com.google.protobuf.ByteString
          getField16Bytes() {
        java.lang.Object ref = field16_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field16_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field16 = 16;</code>
       * @param value The field16 to set.
       * @return This builder for chaining.
       */
      public Builder setField16(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field16_ = value;
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field16 = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearField16() {
        field16_ = getDefaultInstance().getField16();
        bitField0_ = (bitField0_ & ~0x00008000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field16 = 16;</code>
       * @param value The bytes for field16 to set.
       * @return This builder for chaining.
       */
      public Builder setField16Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field16_ = value;
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }

      private java.lang.Object field17_ = "";
      /**
       * <code>optional string field17 = 17;</code>
       * @return Whether the field17 field is set.
       */
      public boolean hasField17() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * <code>optional string field17 = 17;</code>
       * @return The field17.
       */
      public java.lang.String getField17() {
        java.lang.Object ref = field17_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field17_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field17 = 17;</code>
       * @return The bytes for field17.
       */
      public com.google.protobuf.ByteString
          getField17Bytes() {
        java.lang.Object ref = field17_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field17_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field17 = 17;</code>
       * @param value The field17 to set.
       * @return This builder for chaining.
       */
      public Builder setField17(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field17_ = value;
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field17 = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearField17() {
        field17_ = getDefaultInstance().getField17();
        bitField0_ = (bitField0_ & ~0x00010000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field17 = 17;</code>
       * @param value The bytes for field17 to set.
       * @return This builder for chaining.
       */
      public Builder setField17Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field17_ = value;
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }

      private java.lang.Object field18_ = "";
      /**
       * <code>optional string field18 = 18;</code>
       * @return Whether the field18 field is set.
       */
      public boolean hasField18() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * <code>optional string field18 = 18;</code>
       * @return The field18.
       */
      public java.lang.String getField18() {
        java.lang.Object ref = field18_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field18_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field18 = 18;</code>
       * @return The bytes for field18.
       */
      public com.google.protobuf.ByteString
          getField18Bytes() {
        java.lang.Object ref = field18_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field18_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field18 = 18;</code>
       * @param value The field18 to set.
       * @return This builder for chaining.
       */
      public Builder setField18(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field18_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field18 = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearField18() {
        field18_ = getDefaultInstance().getField18();
        bitField0_ = (bitField0_ & ~0x00020000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field18 = 18;</code>
       * @param value The bytes for field18 to set.
       * @return This builder for chaining.
       */
      public Builder setField18Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field18_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }

      private java.lang.Object field19_ = "";
      /**
       * <code>optional string field19 = 19;</code>
       * @return Whether the field19 field is set.
       */
      public boolean hasField19() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * <code>optional string field19 = 19;</code>
       * @return The field19.
       */
      public java.lang.String getField19() {
        java.lang.Object ref = field19_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field19_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field19 = 19;</code>
       * @return The bytes for field19.
       */
      public com.google.protobuf.ByteString
          getField19Bytes() {
        java.lang.Object ref = field19_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field19_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field19 = 19;</code>
       * @param value The field19 to set.
       * @return This builder for chaining.
       */
      public Builder setField19(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field19_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field19 = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearField19() {
        field19_ = getDefaultInstance().getField19();
        bitField0_ = (bitField0_ & ~0x00040000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field19 = 19;</code>
       * @param value The bytes for field19 to set.
       * @return This builder for chaining.
       */
      public Builder setField19Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field19_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }

      private java.lang.Object field20_ = "";
      /**
       * <code>optional string field20 = 20;</code>
       * @return Whether the field20 field is set.
       */
      public boolean hasField20() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * <code>optional string field20 = 20;</code>
       * @return The field20.
       */
      public java.lang.String getField20() {
        java.lang.Object ref = field20_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field20_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field20 = 20;</code>
       * @return The bytes for field20.
       */
      public com.google.protobuf.ByteString
          getField20Bytes() {
        java.lang.Object ref = field20_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field20_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field20 = 20;</code>
       * @param value The field20 to set.
       * @return This builder for chaining.
       */
      public Builder setField20(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field20_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field20 = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearField20() {
        field20_ = getDefaultInstance().getField20();
        bitField0_ = (bitField0_ & ~0x00080000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field20 = 20;</code>
       * @param value The bytes for field20 to set.
       * @return This builder for chaining.
       */
      public Builder setField20Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field20_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }

      private java.lang.Object field21_ = "";
      /**
       * <code>optional string field21 = 21;</code>
       * @return Whether the field21 field is set.
       */
      public boolean hasField21() {
        return ((bitField0_ & 0x00100000) != 0);
      }
      /**
       * <code>optional string field21 = 21;</code>
       * @return The field21.
       */
      public java.lang.String getField21() {
        java.lang.Object ref = field21_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field21_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field21 = 21;</code>
       * @return The bytes for field21.
       */
      public com.google.protobuf.ByteString
          getField21Bytes() {
        java.lang.Object ref = field21_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field21_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field21 = 21;</code>
       * @param value The field21 to set.
       * @return This builder for chaining.
       */
      public Builder setField21(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field21_ = value;
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field21 = 21;</code>
       * @return This builder for chaining.
       */
      public Builder clearField21() {
        field21_ = getDefaultInstance().getField21();
        bitField0_ = (bitField0_ & ~0x00100000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field21 = 21;</code>
       * @param value The bytes for field21 to set.
       * @return This builder for chaining.
       */
      public Builder setField21Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field21_ = value;
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }

      private java.lang.Object field22_ = "";
      /**
       * <code>optional string field22 = 22;</code>
       * @return Whether the field22 field is set.
       */
      public boolean hasField22() {
        return ((bitField0_ & 0x00200000) != 0);
      }
      /**
       * <code>optional string field22 = 22;</code>
       * @return The field22.
       */
      public java.lang.String getField22() {
        java.lang.Object ref = field22_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field22_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field22 = 22;</code>
       * @return The bytes for field22.
       */
      public com.google.protobuf.ByteString
          getField22Bytes() {
        java.lang.Object ref = field22_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field22_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field22 = 22;</code>
       * @param value The field22 to set.
       * @return This builder for chaining.
       */
      public Builder setField22(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field22_ = value;
        bitField0_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field22 = 22;</code>
       * @return This builder for chaining.
       */
      public Builder clearField22() {
        field22_ = getDefaultInstance().getField22();
        bitField0_ = (bitField0_ & ~0x00200000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field22 = 22;</code>
       * @param value The bytes for field22 to set.
       * @return This builder for chaining.
       */
      public Builder setField22Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field22_ = value;
        bitField0_ |= 0x00200000;
        onChanged();
        return this;
      }

      private java.lang.Object field23_ = "";
      /**
       * <code>optional string field23 = 23;</code>
       * @return Whether the field23 field is set.
       */
      public boolean hasField23() {
        return ((bitField0_ & 0x00400000) != 0);
      }
      /**
       * <code>optional string field23 = 23;</code>
       * @return The field23.
       */
      public java.lang.String getField23() {
        java.lang.Object ref = field23_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field23_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field23 = 23;</code>
       * @return The bytes for field23.
       */
      public com.google.protobuf.ByteString
          getField23Bytes() {
        java.lang.Object ref = field23_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field23_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field23 = 23;</code>
       * @param value The field23 to set.
       * @return This builder for chaining.
       */
      public Builder setField23(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field23_ = value;
        bitField0_ |= 0x00400000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field23 = 23;</code>
       * @return This builder for chaining.
       */
      public Builder clearField23() {
        field23_ = getDefaultInstance().getField23();
        bitField0_ = (bitField0_ & ~0x00400000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field23 = 23;</code>
       * @param value The bytes for field23 to set.
       * @return This builder for chaining.
       */
      public Builder setField23Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field23_ = value;
        bitField0_ |= 0x00400000;
        onChanged();
        return this;
      }

      private java.lang.Object field24_ = "";
      /**
       * <code>optional string field24 = 24;</code>
       * @return Whether the field24 field is set.
       */
      public boolean hasField24() {
        return ((bitField0_ & 0x00800000) != 0);
      }
      /**
       * <code>optional string field24 = 24;</code>
       * @return The field24.
       */
      public java.lang.String getField24() {
        java.lang.Object ref = field24_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field24_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field24 = 24;</code>
       * @return The bytes for field24.
       */
      public com.google.protobuf.ByteString
          getField24Bytes() {
        java.lang.Object ref = field24_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field24_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field24 = 24;</code>
       * @param value The field24 to set.
       * @return This builder for chaining.
       */
      public Builder setField24(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field24_ = value;
        bitField0_ |= 0x00800000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field24 = 24;</code>
       * @return This builder for chaining.
       */
      public Builder clearField24() {
        field24_ = getDefaultInstance().getField24();
        bitField0_ = (bitField0_ & ~0x00800000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field24 = 24;</code>
       * @param value The bytes for field24 to set.
       * @return This builder for chaining.
       */
      public Builder setField24Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field24_ = value;
        bitField0_ |= 0x00800000;
        onChanged();
        return this;
      }

      private java.lang.Object field25_ = "";
      /**
       * <code>optional string field25 = 25;</code>
       * @return Whether the field25 field is set.
       */
      public boolean hasField25() {
        return ((bitField0_ & 0x01000000) != 0);
      }
      /**
       * <code>optional string field25 = 25;</code>
       * @return The field25.
       */
      public java.lang.String getField25() {
        java.lang.Object ref = field25_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field25_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field25 = 25;</code>
       * @return The bytes for field25.
       */
      public com.google.protobuf.ByteString
          getField25Bytes() {
        java.lang.Object ref = field25_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field25_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field25 = 25;</code>
       * @param value The field25 to set.
       * @return This builder for chaining.
       */
      public Builder setField25(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field25_ = value;
        bitField0_ |= 0x01000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field25 = 25;</code>
       * @return This builder for chaining.
       */
      public Builder clearField25() {
        field25_ = getDefaultInstance().getField25();
        bitField0_ = (bitField0_ & ~0x01000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field25 = 25;</code>
       * @param value The bytes for field25 to set.
       * @return This builder for chaining.
       */
      public Builder setField25Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field25_ = value;
        bitField0_ |= 0x01000000;
        onChanged();
        return this;
      }

      private java.lang.Object field26_ = "";
      /**
       * <code>optional string field26 = 26;</code>
       * @return Whether the field26 field is set.
       */
      public boolean hasField26() {
        return ((bitField0_ & 0x02000000) != 0);
      }
      /**
       * <code>optional string field26 = 26;</code>
       * @return The field26.
       */
      public java.lang.String getField26() {
        java.lang.Object ref = field26_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field26_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field26 = 26;</code>
       * @return The bytes for field26.
       */
      public com.google.protobuf.ByteString
          getField26Bytes() {
        java.lang.Object ref = field26_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field26_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field26 = 26;</code>
       * @param value The field26 to set.
       * @return This builder for chaining.
       */
      public Builder setField26(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field26_ = value;
        bitField0_ |= 0x02000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field26 = 26;</code>
       * @return This builder for chaining.
       */
      public Builder clearField26() {
        field26_ = getDefaultInstance().getField26();
        bitField0_ = (bitField0_ & ~0x02000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field26 = 26;</code>
       * @param value The bytes for field26 to set.
       * @return This builder for chaining.
       */
      public Builder setField26Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field26_ = value;
        bitField0_ |= 0x02000000;
        onChanged();
        return this;
      }

      private java.lang.Object field27_ = "";
      /**
       * <code>optional string field27 = 27;</code>
       * @return Whether the field27 field is set.
       */
      public boolean hasField27() {
        return ((bitField0_ & 0x04000000) != 0);
      }
      /**
       * <code>optional string field27 = 27;</code>
       * @return The field27.
       */
      public java.lang.String getField27() {
        java.lang.Object ref = field27_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field27_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field27 = 27;</code>
       * @return The bytes for field27.
       */
      public com.google.protobuf.ByteString
          getField27Bytes() {
        java.lang.Object ref = field27_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field27_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field27 = 27;</code>
       * @param value The field27 to set.
       * @return This builder for chaining.
       */
      public Builder setField27(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field27_ = value;
        bitField0_ |= 0x04000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field27 = 27;</code>
       * @return This builder for chaining.
       */
      public Builder clearField27() {
        field27_ = getDefaultInstance().getField27();
        bitField0_ = (bitField0_ & ~0x04000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field27 = 27;</code>
       * @param value The bytes for field27 to set.
       * @return This builder for chaining.
       */
      public Builder setField27Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field27_ = value;
        bitField0_ |= 0x04000000;
        onChanged();
        return this;
      }

      private java.lang.Object field28_ = "";
      /**
       * <code>optional string field28 = 28;</code>
       * @return Whether the field28 field is set.
       */
      public boolean hasField28() {
        return ((bitField0_ & 0x08000000) != 0);
      }
      /**
       * <code>optional string field28 = 28;</code>
       * @return The field28.
       */
      public java.lang.String getField28() {
        java.lang.Object ref = field28_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field28_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field28 = 28;</code>
       * @return The bytes for field28.
       */
      public com.google.protobuf.ByteString
          getField28Bytes() {
        java.lang.Object ref = field28_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field28_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field28 = 28;</code>
       * @param value The field28 to set.
       * @return This builder for chaining.
       */
      public Builder setField28(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field28_ = value;
        bitField0_ |= 0x08000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field28 = 28;</code>
       * @return This builder for chaining.
       */
      public Builder clearField28() {
        field28_ = getDefaultInstance().getField28();
        bitField0_ = (bitField0_ & ~0x08000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field28 = 28;</code>
       * @param value The bytes for field28 to set.
       * @return This builder for chaining.
       */
      public Builder setField28Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field28_ = value;
        bitField0_ |= 0x08000000;
        onChanged();
        return this;
      }

      private java.lang.Object field29_ = "";
      /**
       * <code>optional string field29 = 29;</code>
       * @return Whether the field29 field is set.
       */
      public boolean hasField29() {
        return ((bitField0_ & 0x10000000) != 0);
      }
      /**
       * <code>optional string field29 = 29;</code>
       * @return The field29.
       */
      public java.lang.String getField29() {
        java.lang.Object ref = field29_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field29_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field29 = 29;</code>
       * @return The bytes for field29.
       */
      public com.google.protobuf.ByteString
          getField29Bytes() {
        java.lang.Object ref = field29_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field29_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field29 = 29;</code>
       * @param value The field29 to set.
       * @return This builder for chaining.
       */
      public Builder setField29(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field29_ = value;
        bitField0_ |= 0x10000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field29 = 29;</code>
       * @return This builder for chaining.
       */
      public Builder clearField29() {
        field29_ = getDefaultInstance().getField29();
        bitField0_ = (bitField0_ & ~0x10000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field29 = 29;</code>
       * @param value The bytes for field29 to set.
       * @return This builder for chaining.
       */
      public Builder setField29Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field29_ = value;
        bitField0_ |= 0x10000000;
        onChanged();
        return this;
      }

      private java.lang.Object field30_ = "";
      /**
       * <code>optional string field30 = 30;</code>
       * @return Whether the field30 field is set.
       */
      public boolean hasField30() {
        return ((bitField0_ & 0x20000000) != 0);
      }
      /**
       * <code>optional string field30 = 30;</code>
       * @return The field30.
       */
      public java.lang.String getField30() {
        java.lang.Object ref = field30_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field30_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field30 = 30;</code>
       * @return The bytes for field30.
       */
      public com.google.protobuf.ByteString
          getField30Bytes() {
        java.lang.Object ref = field30_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field30_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field30 = 30;</code>
       * @param value The field30 to set.
       * @return This builder for chaining.
       */
      public Builder setField30(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field30_ = value;
        bitField0_ |= 0x20000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field30 = 30;</code>
       * @return This builder for chaining.
       */
      public Builder clearField30() {
        field30_ = getDefaultInstance().getField30();
        bitField0_ = (bitField0_ & ~0x20000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field30 = 30;</code>
       * @param value The bytes for field30 to set.
       * @return This builder for chaining.
       */
      public Builder setField30Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field30_ = value;
        bitField0_ |= 0x20000000;
        onChanged();
        return this;
      }

      private java.lang.Object field31_ = "";
      /**
       * <code>optional string field31 = 31;</code>
       * @return Whether the field31 field is set.
       */
      public boolean hasField31() {
        return ((bitField0_ & 0x40000000) != 0);
      }
      /**
       * <code>optional string field31 = 31;</code>
       * @return The field31.
       */
      public java.lang.String getField31() {
        java.lang.Object ref = field31_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field31_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field31 = 31;</code>
       * @return The bytes for field31.
       */
      public com.google.protobuf.ByteString
          getField31Bytes() {
        java.lang.Object ref = field31_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field31_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field31 = 31;</code>
       * @param value The field31 to set.
       * @return This builder for chaining.
       */
      public Builder setField31(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field31_ = value;
        bitField0_ |= 0x40000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field31 = 31;</code>
       * @return This builder for chaining.
       */
      public Builder clearField31() {
        field31_ = getDefaultInstance().getField31();
        bitField0_ = (bitField0_ & ~0x40000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field31 = 31;</code>
       * @param value The bytes for field31 to set.
       * @return This builder for chaining.
       */
      public Builder setField31Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field31_ = value;
        bitField0_ |= 0x40000000;
        onChanged();
        return this;
      }

      private java.lang.Object field32_ = "";
      /**
       * <code>optional string field32 = 32;</code>
       * @return Whether the field32 field is set.
       */
      public boolean hasField32() {
        return ((bitField0_ & 0x80000000) != 0);
      }
      /**
       * <code>optional string field32 = 32;</code>
       * @return The field32.
       */
      public java.lang.String getField32() {
        java.lang.Object ref = field32_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field32_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field32 = 32;</code>
       * @return The bytes for field32.
       */
      public com.google.protobuf.ByteString
          getField32Bytes() {
        java.lang.Object ref = field32_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field32_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field32 = 32;</code>
       * @param value The field32 to set.
       * @return This builder for chaining.
       */
      public Builder setField32(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field32_ = value;
        bitField0_ |= 0x80000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field32 = 32;</code>
       * @return This builder for chaining.
       */
      public Builder clearField32() {
        field32_ = getDefaultInstance().getField32();
        bitField0_ = (bitField0_ & ~0x80000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field32 = 32;</code>
       * @param value The bytes for field32 to set.
       * @return This builder for chaining.
       */
      public Builder setField32Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field32_ = value;
        bitField0_ |= 0x80000000;
        onChanged();
        return this;
      }

      private java.lang.Object field33_ = "";
      /**
       * <code>optional string field33 = 33;</code>
       * @return Whether the field33 field is set.
       */
      public boolean hasField33() {
        return ((bitField1_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string field33 = 33;</code>
       * @return The field33.
       */
      public java.lang.String getField33() {
        java.lang.Object ref = field33_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field33_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field33 = 33;</code>
       * @return The bytes for field33.
       */
      public com.google.protobuf.ByteString
          getField33Bytes() {
        java.lang.Object ref = field33_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field33_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field33 = 33;</code>
       * @param value The field33 to set.
       * @return This builder for chaining.
       */
      public Builder setField33(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field33_ = value;
        bitField1_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field33 = 33;</code>
       * @return This builder for chaining.
       */
      public Builder clearField33() {
        field33_ = getDefaultInstance().getField33();
        bitField1_ = (bitField1_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field33 = 33;</code>
       * @param value The bytes for field33 to set.
       * @return This builder for chaining.
       */
      public Builder setField33Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field33_ = value;
        bitField1_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object field34_ = "";
      /**
       * <code>optional string field34 = 34;</code>
       * @return Whether the field34 field is set.
       */
      public boolean hasField34() {
        return ((bitField1_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string field34 = 34;</code>
       * @return The field34.
       */
      public java.lang.String getField34() {
        java.lang.Object ref = field34_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field34_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field34 = 34;</code>
       * @return The bytes for field34.
       */
      public com.google.protobuf.ByteString
          getField34Bytes() {
        java.lang.Object ref = field34_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field34_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field34 = 34;</code>
       * @param value The field34 to set.
       * @return This builder for chaining.
       */
      public Builder setField34(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field34_ = value;
        bitField1_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field34 = 34;</code>
       * @return This builder for chaining.
       */
      public Builder clearField34() {
        field34_ = getDefaultInstance().getField34();
        bitField1_ = (bitField1_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field34 = 34;</code>
       * @param value The bytes for field34 to set.
       * @return This builder for chaining.
       */
      public Builder setField34Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field34_ = value;
        bitField1_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object field35_ = "";
      /**
       * <code>optional string field35 = 35;</code>
       * @return Whether the field35 field is set.
       */
      public boolean hasField35() {
        return ((bitField1_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string field35 = 35;</code>
       * @return The field35.
       */
      public java.lang.String getField35() {
        java.lang.Object ref = field35_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field35_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field35 = 35;</code>
       * @return The bytes for field35.
       */
      public com.google.protobuf.ByteString
          getField35Bytes() {
        java.lang.Object ref = field35_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field35_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field35 = 35;</code>
       * @param value The field35 to set.
       * @return This builder for chaining.
       */
      public Builder setField35(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field35_ = value;
        bitField1_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field35 = 35;</code>
       * @return This builder for chaining.
       */
      public Builder clearField35() {
        field35_ = getDefaultInstance().getField35();
        bitField1_ = (bitField1_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field35 = 35;</code>
       * @param value The bytes for field35 to set.
       * @return This builder for chaining.
       */
      public Builder setField35Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field35_ = value;
        bitField1_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object field36_ = "";
      /**
       * <code>optional string field36 = 36;</code>
       * @return Whether the field36 field is set.
       */
      public boolean hasField36() {
        return ((bitField1_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string field36 = 36;</code>
       * @return The field36.
       */
      public java.lang.String getField36() {
        java.lang.Object ref = field36_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field36_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field36 = 36;</code>
       * @return The bytes for field36.
       */
      public com.google.protobuf.ByteString
          getField36Bytes() {
        java.lang.Object ref = field36_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field36_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field36 = 36;</code>
       * @param value The field36 to set.
       * @return This builder for chaining.
       */
      public Builder setField36(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field36_ = value;
        bitField1_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field36 = 36;</code>
       * @return This builder for chaining.
       */
      public Builder clearField36() {
        field36_ = getDefaultInstance().getField36();
        bitField1_ = (bitField1_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field36 = 36;</code>
       * @param value The bytes for field36 to set.
       * @return This builder for chaining.
       */
      public Builder setField36Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field36_ = value;
        bitField1_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object field37_ = "";
      /**
       * <code>optional string field37 = 37;</code>
       * @return Whether the field37 field is set.
       */
      public boolean hasField37() {
        return ((bitField1_ & 0x00000010) != 0);
      }
      /**
       * <code>optional string field37 = 37;</code>
       * @return The field37.
       */
      public java.lang.String getField37() {
        java.lang.Object ref = field37_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field37_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field37 = 37;</code>
       * @return The bytes for field37.
       */
      public com.google.protobuf.ByteString
          getField37Bytes() {
        java.lang.Object ref = field37_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field37_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field37 = 37;</code>
       * @param value The field37 to set.
       * @return This builder for chaining.
       */
      public Builder setField37(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field37_ = value;
        bitField1_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field37 = 37;</code>
       * @return This builder for chaining.
       */
      public Builder clearField37() {
        field37_ = getDefaultInstance().getField37();
        bitField1_ = (bitField1_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field37 = 37;</code>
       * @param value The bytes for field37 to set.
       * @return This builder for chaining.
       */
      public Builder setField37Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field37_ = value;
        bitField1_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object field38_ = "";
      /**
       * <code>optional string field38 = 38;</code>
       * @return Whether the field38 field is set.
       */
      public boolean hasField38() {
        return ((bitField1_ & 0x00000020) != 0);
      }
      /**
       * <code>optional string field38 = 38;</code>
       * @return The field38.
       */
      public java.lang.String getField38() {
        java.lang.Object ref = field38_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field38_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field38 = 38;</code>
       * @return The bytes for field38.
       */
      public com.google.protobuf.ByteString
          getField38Bytes() {
        java.lang.Object ref = field38_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field38_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field38 = 38;</code>
       * @param value The field38 to set.
       * @return This builder for chaining.
       */
      public Builder setField38(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field38_ = value;
        bitField1_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field38 = 38;</code>
       * @return This builder for chaining.
       */
      public Builder clearField38() {
        field38_ = getDefaultInstance().getField38();
        bitField1_ = (bitField1_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field38 = 38;</code>
       * @param value The bytes for field38 to set.
       * @return This builder for chaining.
       */
      public Builder setField38Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field38_ = value;
        bitField1_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object field39_ = "";
      /**
       * <code>optional string field39 = 39;</code>
       * @return Whether the field39 field is set.
       */
      public boolean hasField39() {
        return ((bitField1_ & 0x00000040) != 0);
      }
      /**
       * <code>optional string field39 = 39;</code>
       * @return The field39.
       */
      public java.lang.String getField39() {
        java.lang.Object ref = field39_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field39_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field39 = 39;</code>
       * @return The bytes for field39.
       */
      public com.google.protobuf.ByteString
          getField39Bytes() {
        java.lang.Object ref = field39_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field39_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field39 = 39;</code>
       * @param value The field39 to set.
       * @return This builder for chaining.
       */
      public Builder setField39(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field39_ = value;
        bitField1_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field39 = 39;</code>
       * @return This builder for chaining.
       */
      public Builder clearField39() {
        field39_ = getDefaultInstance().getField39();
        bitField1_ = (bitField1_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field39 = 39;</code>
       * @param value The bytes for field39 to set.
       * @return This builder for chaining.
       */
      public Builder setField39Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field39_ = value;
        bitField1_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object field40_ = "";
      /**
       * <code>optional string field40 = 40;</code>
       * @return Whether the field40 field is set.
       */
      public boolean hasField40() {
        return ((bitField1_ & 0x00000080) != 0);
      }
      /**
       * <code>optional string field40 = 40;</code>
       * @return The field40.
       */
      public java.lang.String getField40() {
        java.lang.Object ref = field40_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field40_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field40 = 40;</code>
       * @return The bytes for field40.
       */
      public com.google.protobuf.ByteString
          getField40Bytes() {
        java.lang.Object ref = field40_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field40_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field40 = 40;</code>
       * @param value The field40 to set.
       * @return This builder for chaining.
       */
      public Builder setField40(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field40_ = value;
        bitField1_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field40 = 40;</code>
       * @return This builder for chaining.
       */
      public Builder clearField40() {
        field40_ = getDefaultInstance().getField40();
        bitField1_ = (bitField1_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field40 = 40;</code>
       * @param value The bytes for field40 to set.
       * @return This builder for chaining.
       */
      public Builder setField40Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field40_ = value;
        bitField1_ |= 0x00000080;
        onChanged();
        return this;
      }

      private java.lang.Object field41_ = "";
      /**
       * <code>optional string field41 = 41;</code>
       * @return Whether the field41 field is set.
       */
      public boolean hasField41() {
        return ((bitField1_ & 0x00000100) != 0);
      }
      /**
       * <code>optional string field41 = 41;</code>
       * @return The field41.
       */
      public java.lang.String getField41() {
        java.lang.Object ref = field41_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field41_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field41 = 41;</code>
       * @return The bytes for field41.
       */
      public com.google.protobuf.ByteString
          getField41Bytes() {
        java.lang.Object ref = field41_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field41_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field41 = 41;</code>
       * @param value The field41 to set.
       * @return This builder for chaining.
       */
      public Builder setField41(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field41_ = value;
        bitField1_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field41 = 41;</code>
       * @return This builder for chaining.
       */
      public Builder clearField41() {
        field41_ = getDefaultInstance().getField41();
        bitField1_ = (bitField1_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field41 = 41;</code>
       * @param value The bytes for field41 to set.
       * @return This builder for chaining.
       */
      public Builder setField41Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field41_ = value;
        bitField1_ |= 0x00000100;
        onChanged();
        return this;
      }

      private java.lang.Object field42_ = "";
      /**
       * <code>optional string field42 = 42;</code>
       * @return Whether the field42 field is set.
       */
      public boolean hasField42() {
        return ((bitField1_ & 0x00000200) != 0);
      }
      /**
       * <code>optional string field42 = 42;</code>
       * @return The field42.
       */
      public java.lang.String getField42() {
        java.lang.Object ref = field42_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field42_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field42 = 42;</code>
       * @return The bytes for field42.
       */
      public com.google.protobuf.ByteString
          getField42Bytes() {
        java.lang.Object ref = field42_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field42_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field42 = 42;</code>
       * @param value The field42 to set.
       * @return This builder for chaining.
       */
      public Builder setField42(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field42_ = value;
        bitField1_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field42 = 42;</code>
       * @return This builder for chaining.
       */
      public Builder clearField42() {
        field42_ = getDefaultInstance().getField42();
        bitField1_ = (bitField1_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field42 = 42;</code>
       * @param value The bytes for field42 to set.
       * @return This builder for chaining.
       */
      public Builder setField42Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field42_ = value;
        bitField1_ |= 0x00000200;
        onChanged();
        return this;
      }

      private java.lang.Object field43_ = "";
      /**
       * <code>optional string field43 = 43;</code>
       * @return Whether the field43 field is set.
       */
      public boolean hasField43() {
        return ((bitField1_ & 0x00000400) != 0);
      }
      /**
       * <code>optional string field43 = 43;</code>
       * @return The field43.
       */
      public java.lang.String getField43() {
        java.lang.Object ref = field43_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field43_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field43 = 43;</code>
       * @return The bytes for field43.
       */
      public com.google.protobuf.ByteString
          getField43Bytes() {
        java.lang.Object ref = field43_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field43_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field43 = 43;</code>
       * @param value The field43 to set.
       * @return This builder for chaining.
       */
      public Builder setField43(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field43_ = value;
        bitField1_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field43 = 43;</code>
       * @return This builder for chaining.
       */
      public Builder clearField43() {
        field43_ = getDefaultInstance().getField43();
        bitField1_ = (bitField1_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field43 = 43;</code>
       * @param value The bytes for field43 to set.
       * @return This builder for chaining.
       */
      public Builder setField43Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field43_ = value;
        bitField1_ |= 0x00000400;
        onChanged();
        return this;
      }

      private java.lang.Object field44_ = "";
      /**
       * <code>optional string field44 = 44;</code>
       * @return Whether the field44 field is set.
       */
      public boolean hasField44() {
        return ((bitField1_ & 0x00000800) != 0);
      }
      /**
       * <code>optional string field44 = 44;</code>
       * @return The field44.
       */
      public java.lang.String getField44() {
        java.lang.Object ref = field44_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field44_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field44 = 44;</code>
       * @return The bytes for field44.
       */
      public com.google.protobuf.ByteString
          getField44Bytes() {
        java.lang.Object ref = field44_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field44_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field44 = 44;</code>
       * @param value The field44 to set.
       * @return This builder for chaining.
       */
      public Builder setField44(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field44_ = value;
        bitField1_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field44 = 44;</code>
       * @return This builder for chaining.
       */
      public Builder clearField44() {
        field44_ = getDefaultInstance().getField44();
        bitField1_ = (bitField1_ & ~0x00000800);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field44 = 44;</code>
       * @param value The bytes for field44 to set.
       * @return This builder for chaining.
       */
      public Builder setField44Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field44_ = value;
        bitField1_ |= 0x00000800;
        onChanged();
        return this;
      }

      private java.lang.Object field45_ = "";
      /**
       * <code>optional string field45 = 45;</code>
       * @return Whether the field45 field is set.
       */
      public boolean hasField45() {
        return ((bitField1_ & 0x00001000) != 0);
      }
      /**
       * <code>optional string field45 = 45;</code>
       * @return The field45.
       */
      public java.lang.String getField45() {
        java.lang.Object ref = field45_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field45_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field45 = 45;</code>
       * @return The bytes for field45.
       */
      public com.google.protobuf.ByteString
          getField45Bytes() {
        java.lang.Object ref = field45_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field45_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field45 = 45;</code>
       * @param value The field45 to set.
       * @return This builder for chaining.
       */
      public Builder setField45(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field45_ = value;
        bitField1_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field45 = 45;</code>
       * @return This builder for chaining.
       */
      public Builder clearField45() {
        field45_ = getDefaultInstance().getField45();
        bitField1_ = (bitField1_ & ~0x00001000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field45 = 45;</code>
       * @param value The bytes for field45 to set.
       * @return This builder for chaining.
       */
      public Builder setField45Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field45_ = value;
        bitField1_ |= 0x00001000;
        onChanged();
        return this;
      }

      private java.lang.Object field46_ = "";
      /**
       * <code>optional string field46 = 46;</code>
       * @return Whether the field46 field is set.
       */
      public boolean hasField46() {
        return ((bitField1_ & 0x00002000) != 0);
      }
      /**
       * <code>optional string field46 = 46;</code>
       * @return The field46.
       */
      public java.lang.String getField46() {
        java.lang.Object ref = field46_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field46_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field46 = 46;</code>
       * @return The bytes for field46.
       */
      public com.google.protobuf.ByteString
          getField46Bytes() {
        java.lang.Object ref = field46_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field46_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field46 = 46;</code>
       * @param value The field46 to set.
       * @return This builder for chaining.
       */
      public Builder setField46(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field46_ = value;
        bitField1_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field46 = 46;</code>
       * @return This builder for chaining.
       */
      public Builder clearField46() {
        field46_ = getDefaultInstance().getField46();
        bitField1_ = (bitField1_ & ~0x00002000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field46 = 46;</code>
       * @param value The bytes for field46 to set.
       * @return This builder for chaining.
       */
      public Builder setField46Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field46_ = value;
        bitField1_ |= 0x00002000;
        onChanged();
        return this;
      }

      private java.lang.Object field47_ = "";
      /**
       * <code>optional string field47 = 47;</code>
       * @return Whether the field47 field is set.
       */
      public boolean hasField47() {
        return ((bitField1_ & 0x00004000) != 0);
      }
      /**
       * <code>optional string field47 = 47;</code>
       * @return The field47.
       */
      public java.lang.String getField47() {
        java.lang.Object ref = field47_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field47_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field47 = 47;</code>
       * @return The bytes for field47.
       */
      public com.google.protobuf.ByteString
          getField47Bytes() {
        java.lang.Object ref = field47_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field47_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field47 = 47;</code>
       * @param value The field47 to set.
       * @return This builder for chaining.
       */
      public Builder setField47(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field47_ = value;
        bitField1_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field47 = 47;</code>
       * @return This builder for chaining.
       */
      public Builder clearField47() {
        field47_ = getDefaultInstance().getField47();
        bitField1_ = (bitField1_ & ~0x00004000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field47 = 47;</code>
       * @param value The bytes for field47 to set.
       * @return This builder for chaining.
       */
      public Builder setField47Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field47_ = value;
        bitField1_ |= 0x00004000;
        onChanged();
        return this;
      }

      private java.lang.Object field48_ = "";
      /**
       * <code>optional string field48 = 48;</code>
       * @return Whether the field48 field is set.
       */
      public boolean hasField48() {
        return ((bitField1_ & 0x00008000) != 0);
      }
      /**
       * <code>optional string field48 = 48;</code>
       * @return The field48.
       */
      public java.lang.String getField48() {
        java.lang.Object ref = field48_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field48_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field48 = 48;</code>
       * @return The bytes for field48.
       */
      public com.google.protobuf.ByteString
          getField48Bytes() {
        java.lang.Object ref = field48_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field48_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field48 = 48;</code>
       * @param value The field48 to set.
       * @return This builder for chaining.
       */
      public Builder setField48(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field48_ = value;
        bitField1_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field48 = 48;</code>
       * @return This builder for chaining.
       */
      public Builder clearField48() {
        field48_ = getDefaultInstance().getField48();
        bitField1_ = (bitField1_ & ~0x00008000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field48 = 48;</code>
       * @param value The bytes for field48 to set.
       * @return This builder for chaining.
       */
      public Builder setField48Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field48_ = value;
        bitField1_ |= 0x00008000;
        onChanged();
        return this;
      }

      private java.lang.Object field49_ = "";
      /**
       * <code>optional string field49 = 49;</code>
       * @return Whether the field49 field is set.
       */
      public boolean hasField49() {
        return ((bitField1_ & 0x00010000) != 0);
      }
      /**
       * <code>optional string field49 = 49;</code>
       * @return The field49.
       */
      public java.lang.String getField49() {
        java.lang.Object ref = field49_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field49_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field49 = 49;</code>
       * @return The bytes for field49.
       */
      public com.google.protobuf.ByteString
          getField49Bytes() {
        java.lang.Object ref = field49_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field49_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field49 = 49;</code>
       * @param value The field49 to set.
       * @return This builder for chaining.
       */
      public Builder setField49(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field49_ = value;
        bitField1_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field49 = 49;</code>
       * @return This builder for chaining.
       */
      public Builder clearField49() {
        field49_ = getDefaultInstance().getField49();
        bitField1_ = (bitField1_ & ~0x00010000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field49 = 49;</code>
       * @param value The bytes for field49 to set.
       * @return This builder for chaining.
       */
      public Builder setField49Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field49_ = value;
        bitField1_ |= 0x00010000;
        onChanged();
        return this;
      }

      private java.lang.Object field50_ = "";
      /**
       * <code>optional string field50 = 50;</code>
       * @return Whether the field50 field is set.
       */
      public boolean hasField50() {
        return ((bitField1_ & 0x00020000) != 0);
      }
      /**
       * <code>optional string field50 = 50;</code>
       * @return The field50.
       */
      public java.lang.String getField50() {
        java.lang.Object ref = field50_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field50_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field50 = 50;</code>
       * @return The bytes for field50.
       */
      public com.google.protobuf.ByteString
          getField50Bytes() {
        java.lang.Object ref = field50_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field50_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field50 = 50;</code>
       * @param value The field50 to set.
       * @return This builder for chaining.
       */
      public Builder setField50(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field50_ = value;
        bitField1_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field50 = 50;</code>
       * @return This builder for chaining.
       */
      public Builder clearField50() {
        field50_ = getDefaultInstance().getField50();
        bitField1_ = (bitField1_ & ~0x00020000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field50 = 50;</code>
       * @param value The bytes for field50 to set.
       * @return This builder for chaining.
       */
      public Builder setField50Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field50_ = value;
        bitField1_ |= 0x00020000;
        onChanged();
        return this;
      }

      private java.lang.Object field51_ = "";
      /**
       * <code>optional string field51 = 51;</code>
       * @return Whether the field51 field is set.
       */
      public boolean hasField51() {
        return ((bitField1_ & 0x00040000) != 0);
      }
      /**
       * <code>optional string field51 = 51;</code>
       * @return The field51.
       */
      public java.lang.String getField51() {
        java.lang.Object ref = field51_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field51_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field51 = 51;</code>
       * @return The bytes for field51.
       */
      public com.google.protobuf.ByteString
          getField51Bytes() {
        java.lang.Object ref = field51_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field51_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field51 = 51;</code>
       * @param value The field51 to set.
       * @return This builder for chaining.
       */
      public Builder setField51(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field51_ = value;
        bitField1_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field51 = 51;</code>
       * @return This builder for chaining.
       */
      public Builder clearField51() {
        field51_ = getDefaultInstance().getField51();
        bitField1_ = (bitField1_ & ~0x00040000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field51 = 51;</code>
       * @param value The bytes for field51 to set.
       * @return This builder for chaining.
       */
      public Builder setField51Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field51_ = value;
        bitField1_ |= 0x00040000;
        onChanged();
        return this;
      }

      private java.lang.Object field52_ = "";
      /**
       * <code>optional string field52 = 52;</code>
       * @return Whether the field52 field is set.
       */
      public boolean hasField52() {
        return ((bitField1_ & 0x00080000) != 0);
      }
      /**
       * <code>optional string field52 = 52;</code>
       * @return The field52.
       */
      public java.lang.String getField52() {
        java.lang.Object ref = field52_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field52_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field52 = 52;</code>
       * @return The bytes for field52.
       */
      public com.google.protobuf.ByteString
          getField52Bytes() {
        java.lang.Object ref = field52_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field52_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field52 = 52;</code>
       * @param value The field52 to set.
       * @return This builder for chaining.
       */
      public Builder setField52(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field52_ = value;
        bitField1_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field52 = 52;</code>
       * @return This builder for chaining.
       */
      public Builder clearField52() {
        field52_ = getDefaultInstance().getField52();
        bitField1_ = (bitField1_ & ~0x00080000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field52 = 52;</code>
       * @param value The bytes for field52 to set.
       * @return This builder for chaining.
       */
      public Builder setField52Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field52_ = value;
        bitField1_ |= 0x00080000;
        onChanged();
        return this;
      }

      private java.lang.Object field53_ = "";
      /**
       * <code>optional string field53 = 53;</code>
       * @return Whether the field53 field is set.
       */
      public boolean hasField53() {
        return ((bitField1_ & 0x00100000) != 0);
      }
      /**
       * <code>optional string field53 = 53;</code>
       * @return The field53.
       */
      public java.lang.String getField53() {
        java.lang.Object ref = field53_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field53_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field53 = 53;</code>
       * @return The bytes for field53.
       */
      public com.google.protobuf.ByteString
          getField53Bytes() {
        java.lang.Object ref = field53_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field53_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field53 = 53;</code>
       * @param value The field53 to set.
       * @return This builder for chaining.
       */
      public Builder setField53(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field53_ = value;
        bitField1_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field53 = 53;</code>
       * @return This builder for chaining.
       */
      public Builder clearField53() {
        field53_ = getDefaultInstance().getField53();
        bitField1_ = (bitField1_ & ~0x00100000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field53 = 53;</code>
       * @param value The bytes for field53 to set.
       * @return This builder for chaining.
       */
      public Builder setField53Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field53_ = value;
        bitField1_ |= 0x00100000;
        onChanged();
        return this;
      }

      private java.lang.Object field54_ = "";
      /**
       * <code>optional string field54 = 54;</code>
       * @return Whether the field54 field is set.
       */
      public boolean hasField54() {
        return ((bitField1_ & 0x00200000) != 0);
      }
      /**
       * <code>optional string field54 = 54;</code>
       * @return The field54.
       */
      public java.lang.String getField54() {
        java.lang.Object ref = field54_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field54_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field54 = 54;</code>
       * @return The bytes for field54.
       */
      public com.google.protobuf.ByteString
          getField54Bytes() {
        java.lang.Object ref = field54_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field54_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field54 = 54;</code>
       * @param value The field54 to set.
       * @return This builder for chaining.
       */
      public Builder setField54(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field54_ = value;
        bitField1_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field54 = 54;</code>
       * @return This builder for chaining.
       */
      public Builder clearField54() {
        field54_ = getDefaultInstance().getField54();
        bitField1_ = (bitField1_ & ~0x00200000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field54 = 54;</code>
       * @param value The bytes for field54 to set.
       * @return This builder for chaining.
       */
      public Builder setField54Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field54_ = value;
        bitField1_ |= 0x00200000;
        onChanged();
        return this;
      }

      private java.lang.Object field55_ = "";
      /**
       * <code>optional string field55 = 55;</code>
       * @return Whether the field55 field is set.
       */
      public boolean hasField55() {
        return ((bitField1_ & 0x00400000) != 0);
      }
      /**
       * <code>optional string field55 = 55;</code>
       * @return The field55.
       */
      public java.lang.String getField55() {
        java.lang.Object ref = field55_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field55_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field55 = 55;</code>
       * @return The bytes for field55.
       */
      public com.google.protobuf.ByteString
          getField55Bytes() {
        java.lang.Object ref = field55_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field55_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field55 = 55;</code>
       * @param value The field55 to set.
       * @return This builder for chaining.
       */
      public Builder setField55(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field55_ = value;
        bitField1_ |= 0x00400000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field55 = 55;</code>
       * @return This builder for chaining.
       */
      public Builder clearField55() {
        field55_ = getDefaultInstance().getField55();
        bitField1_ = (bitField1_ & ~0x00400000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field55 = 55;</code>
       * @param value The bytes for field55 to set.
       * @return This builder for chaining.
       */
      public Builder setField55Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field55_ = value;
        bitField1_ |= 0x00400000;
        onChanged();
        return this;
      }

      private java.lang.Object field56_ = "";
      /**
       * <code>optional string field56 = 56;</code>
       * @return Whether the field56 field is set.
       */
      public boolean hasField56() {
        return ((bitField1_ & 0x00800000) != 0);
      }
      /**
       * <code>optional string field56 = 56;</code>
       * @return The field56.
       */
      public java.lang.String getField56() {
        java.lang.Object ref = field56_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field56_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field56 = 56;</code>
       * @return The bytes for field56.
       */
      public com.google.protobuf.ByteString
          getField56Bytes() {
        java.lang.Object ref = field56_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field56_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field56 = 56;</code>
       * @param value The field56 to set.
       * @return This builder for chaining.
       */
      public Builder setField56(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field56_ = value;
        bitField1_ |= 0x00800000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field56 = 56;</code>
       * @return This builder for chaining.
       */
      public Builder clearField56() {
        field56_ = getDefaultInstance().getField56();
        bitField1_ = (bitField1_ & ~0x00800000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field56 = 56;</code>
       * @param value The bytes for field56 to set.
       * @return This builder for chaining.
       */
      public Builder setField56Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field56_ = value;
        bitField1_ |= 0x00800000;
        onChanged();
        return this;
      }

      private java.lang.Object field57_ = "";
      /**
       * <code>optional string field57 = 57;</code>
       * @return Whether the field57 field is set.
       */
      public boolean hasField57() {
        return ((bitField1_ & 0x01000000) != 0);
      }
      /**
       * <code>optional string field57 = 57;</code>
       * @return The field57.
       */
      public java.lang.String getField57() {
        java.lang.Object ref = field57_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field57_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field57 = 57;</code>
       * @return The bytes for field57.
       */
      public com.google.protobuf.ByteString
          getField57Bytes() {
        java.lang.Object ref = field57_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field57_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field57 = 57;</code>
       * @param value The field57 to set.
       * @return This builder for chaining.
       */
      public Builder setField57(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field57_ = value;
        bitField1_ |= 0x01000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field57 = 57;</code>
       * @return This builder for chaining.
       */
      public Builder clearField57() {
        field57_ = getDefaultInstance().getField57();
        bitField1_ = (bitField1_ & ~0x01000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field57 = 57;</code>
       * @param value The bytes for field57 to set.
       * @return This builder for chaining.
       */
      public Builder setField57Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field57_ = value;
        bitField1_ |= 0x01000000;
        onChanged();
        return this;
      }

      private java.lang.Object field58_ = "";
      /**
       * <code>optional string field58 = 58;</code>
       * @return Whether the field58 field is set.
       */
      public boolean hasField58() {
        return ((bitField1_ & 0x02000000) != 0);
      }
      /**
       * <code>optional string field58 = 58;</code>
       * @return The field58.
       */
      public java.lang.String getField58() {
        java.lang.Object ref = field58_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field58_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field58 = 58;</code>
       * @return The bytes for field58.
       */
      public com.google.protobuf.ByteString
          getField58Bytes() {
        java.lang.Object ref = field58_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field58_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field58 = 58;</code>
       * @param value The field58 to set.
       * @return This builder for chaining.
       */
      public Builder setField58(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field58_ = value;
        bitField1_ |= 0x02000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field58 = 58;</code>
       * @return This builder for chaining.
       */
      public Builder clearField58() {
        field58_ = getDefaultInstance().getField58();
        bitField1_ = (bitField1_ & ~0x02000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field58 = 58;</code>
       * @param value The bytes for field58 to set.
       * @return This builder for chaining.
       */
      public Builder setField58Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field58_ = value;
        bitField1_ |= 0x02000000;
        onChanged();
        return this;
      }

      private java.lang.Object field59_ = "";
      /**
       * <code>optional string field59 = 59;</code>
       * @return Whether the field59 field is set.
       */
      public boolean hasField59() {
        return ((bitField1_ & 0x04000000) != 0);
      }
      /**
       * <code>optional string field59 = 59;</code>
       * @return The field59.
       */
      public java.lang.String getField59() {
        java.lang.Object ref = field59_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field59_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field59 = 59;</code>
       * @return The bytes for field59.
       */
      public com.google.protobuf.ByteString
          getField59Bytes() {
        java.lang.Object ref = field59_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field59_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field59 = 59;</code>
       * @param value The field59 to set.
       * @return This builder for chaining.
       */
      public Builder setField59(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field59_ = value;
        bitField1_ |= 0x04000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field59 = 59;</code>
       * @return This builder for chaining.
       */
      public Builder clearField59() {
        field59_ = getDefaultInstance().getField59();
        bitField1_ = (bitField1_ & ~0x04000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field59 = 59;</code>
       * @param value The bytes for field59 to set.
       * @return This builder for chaining.
       */
      public Builder setField59Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field59_ = value;
        bitField1_ |= 0x04000000;
        onChanged();
        return this;
      }

      private java.lang.Object field60_ = "";
      /**
       * <code>optional string field60 = 60;</code>
       * @return Whether the field60 field is set.
       */
      public boolean hasField60() {
        return ((bitField1_ & 0x08000000) != 0);
      }
      /**
       * <code>optional string field60 = 60;</code>
       * @return The field60.
       */
      public java.lang.String getField60() {
        java.lang.Object ref = field60_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field60_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field60 = 60;</code>
       * @return The bytes for field60.
       */
      public com.google.protobuf.ByteString
          getField60Bytes() {
        java.lang.Object ref = field60_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field60_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field60 = 60;</code>
       * @param value The field60 to set.
       * @return This builder for chaining.
       */
      public Builder setField60(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field60_ = value;
        bitField1_ |= 0x08000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field60 = 60;</code>
       * @return This builder for chaining.
       */
      public Builder clearField60() {
        field60_ = getDefaultInstance().getField60();
        bitField1_ = (bitField1_ & ~0x08000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field60 = 60;</code>
       * @param value The bytes for field60 to set.
       * @return This builder for chaining.
       */
      public Builder setField60Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field60_ = value;
        bitField1_ |= 0x08000000;
        onChanged();
        return this;
      }

      private java.lang.Object field61_ = "";
      /**
       * <code>optional string field61 = 61;</code>
       * @return Whether the field61 field is set.
       */
      public boolean hasField61() {
        return ((bitField1_ & 0x10000000) != 0);
      }
      /**
       * <code>optional string field61 = 61;</code>
       * @return The field61.
       */
      public java.lang.String getField61() {
        java.lang.Object ref = field61_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field61_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field61 = 61;</code>
       * @return The bytes for field61.
       */
      public com.google.protobuf.ByteString
          getField61Bytes() {
        java.lang.Object ref = field61_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field61_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field61 = 61;</code>
       * @param value The field61 to set.
       * @return This builder for chaining.
       */
      public Builder setField61(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field61_ = value;
        bitField1_ |= 0x10000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field61 = 61;</code>
       * @return This builder for chaining.
       */
      public Builder clearField61() {
        field61_ = getDefaultInstance().getField61();
        bitField1_ = (bitField1_ & ~0x10000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field61 = 61;</code>
       * @param value The bytes for field61 to set.
       * @return This builder for chaining.
       */
      public Builder setField61Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field61_ = value;
        bitField1_ |= 0x10000000;
        onChanged();
        return this;
      }

      private java.lang.Object field62_ = "";
      /**
       * <code>optional string field62 = 62;</code>
       * @return Whether the field62 field is set.
       */
      public boolean hasField62() {
        return ((bitField1_ & 0x20000000) != 0);
      }
      /**
       * <code>optional string field62 = 62;</code>
       * @return The field62.
       */
      public java.lang.String getField62() {
        java.lang.Object ref = field62_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field62_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field62 = 62;</code>
       * @return The bytes for field62.
       */
      public com.google.protobuf.ByteString
          getField62Bytes() {
        java.lang.Object ref = field62_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field62_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field62 = 62;</code>
       * @param value The field62 to set.
       * @return This builder for chaining.
       */
      public Builder setField62(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field62_ = value;
        bitField1_ |= 0x20000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field62 = 62;</code>
       * @return This builder for chaining.
       */
      public Builder clearField62() {
        field62_ = getDefaultInstance().getField62();
        bitField1_ = (bitField1_ & ~0x20000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field62 = 62;</code>
       * @param value The bytes for field62 to set.
       * @return This builder for chaining.
       */
      public Builder setField62Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field62_ = value;
        bitField1_ |= 0x20000000;
        onChanged();
        return this;
      }

      private java.lang.Object field63_ = "";
      /**
       * <code>optional string field63 = 63;</code>
       * @return Whether the field63 field is set.
       */
      public boolean hasField63() {
        return ((bitField1_ & 0x40000000) != 0);
      }
      /**
       * <code>optional string field63 = 63;</code>
       * @return The field63.
       */
      public java.lang.String getField63() {
        java.lang.Object ref = field63_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field63_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field63 = 63;</code>
       * @return The bytes for field63.
       */
      public com.google.protobuf.ByteString
          getField63Bytes() {
        java.lang.Object ref = field63_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field63_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field63 = 63;</code>
       * @param value The field63 to set.
       * @return This builder for chaining.
       */
      public Builder setField63(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field63_ = value;
        bitField1_ |= 0x40000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field63 = 63;</code>
       * @return This builder for chaining.
       */
      public Builder clearField63() {
        field63_ = getDefaultInstance().getField63();
        bitField1_ = (bitField1_ & ~0x40000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field63 = 63;</code>
       * @param value The bytes for field63 to set.
       * @return This builder for chaining.
       */
      public Builder setField63Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field63_ = value;
        bitField1_ |= 0x40000000;
        onChanged();
        return this;
      }

      private java.lang.Object field64_ = "";
      /**
       * <code>optional string field64 = 64;</code>
       * @return Whether the field64 field is set.
       */
      public boolean hasField64() {
        return ((bitField1_ & 0x80000000) != 0);
      }
      /**
       * <code>optional string field64 = 64;</code>
       * @return The field64.
       */
      public java.lang.String getField64() {
        java.lang.Object ref = field64_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field64_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field64 = 64;</code>
       * @return The bytes for field64.
       */
      public com.google.protobuf.ByteString
          getField64Bytes() {
        java.lang.Object ref = field64_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field64_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field64 = 64;</code>
       * @param value The field64 to set.
       * @return This builder for chaining.
       */
      public Builder setField64(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field64_ = value;
        bitField1_ |= 0x80000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field64 = 64;</code>
       * @return This builder for chaining.
       */
      public Builder clearField64() {
        field64_ = getDefaultInstance().getField64();
        bitField1_ = (bitField1_ & ~0x80000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field64 = 64;</code>
       * @param value The bytes for field64 to set.
       * @return This builder for chaining.
       */
      public Builder setField64Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field64_ = value;
        bitField1_ |= 0x80000000;
        onChanged();
        return this;
      }

      private java.lang.Object field65_ = "";
      /**
       * <code>optional string field65 = 65;</code>
       * @return Whether the field65 field is set.
       */
      public boolean hasField65() {
        return ((bitField2_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string field65 = 65;</code>
       * @return The field65.
       */
      public java.lang.String getField65() {
        java.lang.Object ref = field65_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field65_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field65 = 65;</code>
       * @return The bytes for field65.
       */
      public com.google.protobuf.ByteString
          getField65Bytes() {
        java.lang.Object ref = field65_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field65_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field65 = 65;</code>
       * @param value The field65 to set.
       * @return This builder for chaining.
       */
      public Builder setField65(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field65_ = value;
        bitField2_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field65 = 65;</code>
       * @return This builder for chaining.
       */
      public Builder clearField65() {
        field65_ = getDefaultInstance().getField65();
        bitField2_ = (bitField2_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field65 = 65;</code>
       * @param value The bytes for field65 to set.
       * @return This builder for chaining.
       */
      public Builder setField65Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field65_ = value;
        bitField2_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object field66_ = "";
      /**
       * <code>optional string field66 = 66;</code>
       * @return Whether the field66 field is set.
       */
      public boolean hasField66() {
        return ((bitField2_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string field66 = 66;</code>
       * @return The field66.
       */
      public java.lang.String getField66() {
        java.lang.Object ref = field66_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field66_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field66 = 66;</code>
       * @return The bytes for field66.
       */
      public com.google.protobuf.ByteString
          getField66Bytes() {
        java.lang.Object ref = field66_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field66_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field66 = 66;</code>
       * @param value The field66 to set.
       * @return This builder for chaining.
       */
      public Builder setField66(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field66_ = value;
        bitField2_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field66 = 66;</code>
       * @return This builder for chaining.
       */
      public Builder clearField66() {
        field66_ = getDefaultInstance().getField66();
        bitField2_ = (bitField2_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field66 = 66;</code>
       * @param value The bytes for field66 to set.
       * @return This builder for chaining.
       */
      public Builder setField66Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field66_ = value;
        bitField2_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object field67_ = "";
      /**
       * <code>optional string field67 = 67;</code>
       * @return Whether the field67 field is set.
       */
      public boolean hasField67() {
        return ((bitField2_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string field67 = 67;</code>
       * @return The field67.
       */
      public java.lang.String getField67() {
        java.lang.Object ref = field67_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field67_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field67 = 67;</code>
       * @return The bytes for field67.
       */
      public com.google.protobuf.ByteString
          getField67Bytes() {
        java.lang.Object ref = field67_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field67_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field67 = 67;</code>
       * @param value The field67 to set.
       * @return This builder for chaining.
       */
      public Builder setField67(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field67_ = value;
        bitField2_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field67 = 67;</code>
       * @return This builder for chaining.
       */
      public Builder clearField67() {
        field67_ = getDefaultInstance().getField67();
        bitField2_ = (bitField2_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field67 = 67;</code>
       * @param value The bytes for field67 to set.
       * @return This builder for chaining.
       */
      public Builder setField67Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field67_ = value;
        bitField2_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object field68_ = "";
      /**
       * <code>optional string field68 = 68;</code>
       * @return Whether the field68 field is set.
       */
      public boolean hasField68() {
        return ((bitField2_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string field68 = 68;</code>
       * @return The field68.
       */
      public java.lang.String getField68() {
        java.lang.Object ref = field68_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field68_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field68 = 68;</code>
       * @return The bytes for field68.
       */
      public com.google.protobuf.ByteString
          getField68Bytes() {
        java.lang.Object ref = field68_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field68_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field68 = 68;</code>
       * @param value The field68 to set.
       * @return This builder for chaining.
       */
      public Builder setField68(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field68_ = value;
        bitField2_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field68 = 68;</code>
       * @return This builder for chaining.
       */
      public Builder clearField68() {
        field68_ = getDefaultInstance().getField68();
        bitField2_ = (bitField2_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field68 = 68;</code>
       * @param value The bytes for field68 to set.
       * @return This builder for chaining.
       */
      public Builder setField68Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field68_ = value;
        bitField2_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object field69_ = "";
      /**
       * <code>optional string field69 = 69;</code>
       * @return Whether the field69 field is set.
       */
      public boolean hasField69() {
        return ((bitField2_ & 0x00000010) != 0);
      }
      /**
       * <code>optional string field69 = 69;</code>
       * @return The field69.
       */
      public java.lang.String getField69() {
        java.lang.Object ref = field69_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field69_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field69 = 69;</code>
       * @return The bytes for field69.
       */
      public com.google.protobuf.ByteString
          getField69Bytes() {
        java.lang.Object ref = field69_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field69_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field69 = 69;</code>
       * @param value The field69 to set.
       * @return This builder for chaining.
       */
      public Builder setField69(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field69_ = value;
        bitField2_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field69 = 69;</code>
       * @return This builder for chaining.
       */
      public Builder clearField69() {
        field69_ = getDefaultInstance().getField69();
        bitField2_ = (bitField2_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field69 = 69;</code>
       * @param value The bytes for field69 to set.
       * @return This builder for chaining.
       */
      public Builder setField69Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field69_ = value;
        bitField2_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object field70_ = "";
      /**
       * <code>optional string field70 = 70;</code>
       * @return Whether the field70 field is set.
       */
      public boolean hasField70() {
        return ((bitField2_ & 0x00000020) != 0);
      }
      /**
       * <code>optional string field70 = 70;</code>
       * @return The field70.
       */
      public java.lang.String getField70() {
        java.lang.Object ref = field70_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field70_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field70 = 70;</code>
       * @return The bytes for field70.
       */
      public com.google.protobuf.ByteString
          getField70Bytes() {
        java.lang.Object ref = field70_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field70_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field70 = 70;</code>
       * @param value The field70 to set.
       * @return This builder for chaining.
       */
      public Builder setField70(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field70_ = value;
        bitField2_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field70 = 70;</code>
       * @return This builder for chaining.
       */
      public Builder clearField70() {
        field70_ = getDefaultInstance().getField70();
        bitField2_ = (bitField2_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field70 = 70;</code>
       * @param value The bytes for field70 to set.
       * @return This builder for chaining.
       */
      public Builder setField70Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field70_ = value;
        bitField2_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object field71_ = "";
      /**
       * <code>optional string field71 = 71;</code>
       * @return Whether the field71 field is set.
       */
      public boolean hasField71() {
        return ((bitField2_ & 0x00000040) != 0);
      }
      /**
       * <code>optional string field71 = 71;</code>
       * @return The field71.
       */
      public java.lang.String getField71() {
        java.lang.Object ref = field71_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field71_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field71 = 71;</code>
       * @return The bytes for field71.
       */
      public com.google.protobuf.ByteString
          getField71Bytes() {
        java.lang.Object ref = field71_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field71_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field71 = 71;</code>
       * @param value The field71 to set.
       * @return This builder for chaining.
       */
      public Builder setField71(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field71_ = value;
        bitField2_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field71 = 71;</code>
       * @return This builder for chaining.
       */
      public Builder clearField71() {
        field71_ = getDefaultInstance().getField71();
        bitField2_ = (bitField2_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field71 = 71;</code>
       * @param value The bytes for field71 to set.
       * @return This builder for chaining.
       */
      public Builder setField71Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field71_ = value;
        bitField2_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object field72_ = "";
      /**
       * <code>optional string field72 = 72;</code>
       * @return Whether the field72 field is set.
       */
      public boolean hasField72() {
        return ((bitField2_ & 0x00000080) != 0);
      }
      /**
       * <code>optional string field72 = 72;</code>
       * @return The field72.
       */
      public java.lang.String getField72() {
        java.lang.Object ref = field72_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field72_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field72 = 72;</code>
       * @return The bytes for field72.
       */
      public com.google.protobuf.ByteString
          getField72Bytes() {
        java.lang.Object ref = field72_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field72_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field72 = 72;</code>
       * @param value The field72 to set.
       * @return This builder for chaining.
       */
      public Builder setField72(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field72_ = value;
        bitField2_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field72 = 72;</code>
       * @return This builder for chaining.
       */
      public Builder clearField72() {
        field72_ = getDefaultInstance().getField72();
        bitField2_ = (bitField2_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field72 = 72;</code>
       * @param value The bytes for field72 to set.
       * @return This builder for chaining.
       */
      public Builder setField72Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field72_ = value;
        bitField2_ |= 0x00000080;
        onChanged();
        return this;
      }

      private java.lang.Object field73_ = "";
      /**
       * <code>optional string field73 = 73;</code>
       * @return Whether the field73 field is set.
       */
      public boolean hasField73() {
        return ((bitField2_ & 0x00000100) != 0);
      }
      /**
       * <code>optional string field73 = 73;</code>
       * @return The field73.
       */
      public java.lang.String getField73() {
        java.lang.Object ref = field73_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field73_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field73 = 73;</code>
       * @return The bytes for field73.
       */
      public com.google.protobuf.ByteString
          getField73Bytes() {
        java.lang.Object ref = field73_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field73_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field73 = 73;</code>
       * @param value The field73 to set.
       * @return This builder for chaining.
       */
      public Builder setField73(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field73_ = value;
        bitField2_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field73 = 73;</code>
       * @return This builder for chaining.
       */
      public Builder clearField73() {
        field73_ = getDefaultInstance().getField73();
        bitField2_ = (bitField2_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field73 = 73;</code>
       * @param value The bytes for field73 to set.
       * @return This builder for chaining.
       */
      public Builder setField73Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field73_ = value;
        bitField2_ |= 0x00000100;
        onChanged();
        return this;
      }

      private java.lang.Object field74_ = "";
      /**
       * <code>optional string field74 = 74;</code>
       * @return Whether the field74 field is set.
       */
      public boolean hasField74() {
        return ((bitField2_ & 0x00000200) != 0);
      }
      /**
       * <code>optional string field74 = 74;</code>
       * @return The field74.
       */
      public java.lang.String getField74() {
        java.lang.Object ref = field74_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field74_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field74 = 74;</code>
       * @return The bytes for field74.
       */
      public com.google.protobuf.ByteString
          getField74Bytes() {
        java.lang.Object ref = field74_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field74_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field74 = 74;</code>
       * @param value The field74 to set.
       * @return This builder for chaining.
       */
      public Builder setField74(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field74_ = value;
        bitField2_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field74 = 74;</code>
       * @return This builder for chaining.
       */
      public Builder clearField74() {
        field74_ = getDefaultInstance().getField74();
        bitField2_ = (bitField2_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field74 = 74;</code>
       * @param value The bytes for field74 to set.
       * @return This builder for chaining.
       */
      public Builder setField74Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field74_ = value;
        bitField2_ |= 0x00000200;
        onChanged();
        return this;
      }

      private java.lang.Object field75_ = "";
      /**
       * <code>optional string field75 = 75;</code>
       * @return Whether the field75 field is set.
       */
      public boolean hasField75() {
        return ((bitField2_ & 0x00000400) != 0);
      }
      /**
       * <code>optional string field75 = 75;</code>
       * @return The field75.
       */
      public java.lang.String getField75() {
        java.lang.Object ref = field75_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field75_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field75 = 75;</code>
       * @return The bytes for field75.
       */
      public com.google.protobuf.ByteString
          getField75Bytes() {
        java.lang.Object ref = field75_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field75_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field75 = 75;</code>
       * @param value The field75 to set.
       * @return This builder for chaining.
       */
      public Builder setField75(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field75_ = value;
        bitField2_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field75 = 75;</code>
       * @return This builder for chaining.
       */
      public Builder clearField75() {
        field75_ = getDefaultInstance().getField75();
        bitField2_ = (bitField2_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field75 = 75;</code>
       * @param value The bytes for field75 to set.
       * @return This builder for chaining.
       */
      public Builder setField75Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field75_ = value;
        bitField2_ |= 0x00000400;
        onChanged();
        return this;
      }

      private java.lang.Object field76_ = "";
      /**
       * <code>optional string field76 = 76;</code>
       * @return Whether the field76 field is set.
       */
      public boolean hasField76() {
        return ((bitField2_ & 0x00000800) != 0);
      }
      /**
       * <code>optional string field76 = 76;</code>
       * @return The field76.
       */
      public java.lang.String getField76() {
        java.lang.Object ref = field76_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field76_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field76 = 76;</code>
       * @return The bytes for field76.
       */
      public com.google.protobuf.ByteString
          getField76Bytes() {
        java.lang.Object ref = field76_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field76_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field76 = 76;</code>
       * @param value The field76 to set.
       * @return This builder for chaining.
       */
      public Builder setField76(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field76_ = value;
        bitField2_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field76 = 76;</code>
       * @return This builder for chaining.
       */
      public Builder clearField76() {
        field76_ = getDefaultInstance().getField76();
        bitField2_ = (bitField2_ & ~0x00000800);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field76 = 76;</code>
       * @param value The bytes for field76 to set.
       * @return This builder for chaining.
       */
      public Builder setField76Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field76_ = value;
        bitField2_ |= 0x00000800;
        onChanged();
        return this;
      }

      private java.lang.Object field77_ = "";
      /**
       * <code>optional string field77 = 77;</code>
       * @return Whether the field77 field is set.
       */
      public boolean hasField77() {
        return ((bitField2_ & 0x00001000) != 0);
      }
      /**
       * <code>optional string field77 = 77;</code>
       * @return The field77.
       */
      public java.lang.String getField77() {
        java.lang.Object ref = field77_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field77_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field77 = 77;</code>
       * @return The bytes for field77.
       */
      public com.google.protobuf.ByteString
          getField77Bytes() {
        java.lang.Object ref = field77_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field77_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field77 = 77;</code>
       * @param value The field77 to set.
       * @return This builder for chaining.
       */
      public Builder setField77(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field77_ = value;
        bitField2_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field77 = 77;</code>
       * @return This builder for chaining.
       */
      public Builder clearField77() {
        field77_ = getDefaultInstance().getField77();
        bitField2_ = (bitField2_ & ~0x00001000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field77 = 77;</code>
       * @param value The bytes for field77 to set.
       * @return This builder for chaining.
       */
      public Builder setField77Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field77_ = value;
        bitField2_ |= 0x00001000;
        onChanged();
        return this;
      }

      private java.lang.Object field78_ = "";
      /**
       * <code>optional string field78 = 78;</code>
       * @return Whether the field78 field is set.
       */
      public boolean hasField78() {
        return ((bitField2_ & 0x00002000) != 0);
      }
      /**
       * <code>optional string field78 = 78;</code>
       * @return The field78.
       */
      public java.lang.String getField78() {
        java.lang.Object ref = field78_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field78_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field78 = 78;</code>
       * @return The bytes for field78.
       */
      public com.google.protobuf.ByteString
          getField78Bytes() {
        java.lang.Object ref = field78_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field78_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field78 = 78;</code>
       * @param value The field78 to set.
       * @return This builder for chaining.
       */
      public Builder setField78(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field78_ = value;
        bitField2_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field78 = 78;</code>
       * @return This builder for chaining.
       */
      public Builder clearField78() {
        field78_ = getDefaultInstance().getField78();
        bitField2_ = (bitField2_ & ~0x00002000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field78 = 78;</code>
       * @param value The bytes for field78 to set.
       * @return This builder for chaining.
       */
      public Builder setField78Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field78_ = value;
        bitField2_ |= 0x00002000;
        onChanged();
        return this;
      }

      private java.lang.Object field79_ = "";
      /**
       * <code>optional string field79 = 79;</code>
       * @return Whether the field79 field is set.
       */
      public boolean hasField79() {
        return ((bitField2_ & 0x00004000) != 0);
      }
      /**
       * <code>optional string field79 = 79;</code>
       * @return The field79.
       */
      public java.lang.String getField79() {
        java.lang.Object ref = field79_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field79_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field79 = 79;</code>
       * @return The bytes for field79.
       */
      public com.google.protobuf.ByteString
          getField79Bytes() {
        java.lang.Object ref = field79_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field79_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field79 = 79;</code>
       * @param value The field79 to set.
       * @return This builder for chaining.
       */
      public Builder setField79(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field79_ = value;
        bitField2_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field79 = 79;</code>
       * @return This builder for chaining.
       */
      public Builder clearField79() {
        field79_ = getDefaultInstance().getField79();
        bitField2_ = (bitField2_ & ~0x00004000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field79 = 79;</code>
       * @param value The bytes for field79 to set.
       * @return This builder for chaining.
       */
      public Builder setField79Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field79_ = value;
        bitField2_ |= 0x00004000;
        onChanged();
        return this;
      }

      private java.lang.Object field80_ = "";
      /**
       * <code>optional string field80 = 80;</code>
       * @return Whether the field80 field is set.
       */
      public boolean hasField80() {
        return ((bitField2_ & 0x00008000) != 0);
      }
      /**
       * <code>optional string field80 = 80;</code>
       * @return The field80.
       */
      public java.lang.String getField80() {
        java.lang.Object ref = field80_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field80_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field80 = 80;</code>
       * @return The bytes for field80.
       */
      public com.google.protobuf.ByteString
          getField80Bytes() {
        java.lang.Object ref = field80_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field80_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field80 = 80;</code>
       * @param value The field80 to set.
       * @return This builder for chaining.
       */
      public Builder setField80(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field80_ = value;
        bitField2_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field80 = 80;</code>
       * @return This builder for chaining.
       */
      public Builder clearField80() {
        field80_ = getDefaultInstance().getField80();
        bitField2_ = (bitField2_ & ~0x00008000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field80 = 80;</code>
       * @param value The bytes for field80 to set.
       * @return This builder for chaining.
       */
      public Builder setField80Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field80_ = value;
        bitField2_ |= 0x00008000;
        onChanged();
        return this;
      }

      private java.lang.Object field81_ = "";
      /**
       * <code>optional string field81 = 81;</code>
       * @return Whether the field81 field is set.
       */
      public boolean hasField81() {
        return ((bitField2_ & 0x00010000) != 0);
      }
      /**
       * <code>optional string field81 = 81;</code>
       * @return The field81.
       */
      public java.lang.String getField81() {
        java.lang.Object ref = field81_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field81_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field81 = 81;</code>
       * @return The bytes for field81.
       */
      public com.google.protobuf.ByteString
          getField81Bytes() {
        java.lang.Object ref = field81_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field81_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field81 = 81;</code>
       * @param value The field81 to set.
       * @return This builder for chaining.
       */
      public Builder setField81(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field81_ = value;
        bitField2_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field81 = 81;</code>
       * @return This builder for chaining.
       */
      public Builder clearField81() {
        field81_ = getDefaultInstance().getField81();
        bitField2_ = (bitField2_ & ~0x00010000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field81 = 81;</code>
       * @param value The bytes for field81 to set.
       * @return This builder for chaining.
       */
      public Builder setField81Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field81_ = value;
        bitField2_ |= 0x00010000;
        onChanged();
        return this;
      }

      private java.lang.Object field82_ = "";
      /**
       * <code>optional string field82 = 82;</code>
       * @return Whether the field82 field is set.
       */
      public boolean hasField82() {
        return ((bitField2_ & 0x00020000) != 0);
      }
      /**
       * <code>optional string field82 = 82;</code>
       * @return The field82.
       */
      public java.lang.String getField82() {
        java.lang.Object ref = field82_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field82_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field82 = 82;</code>
       * @return The bytes for field82.
       */
      public com.google.protobuf.ByteString
          getField82Bytes() {
        java.lang.Object ref = field82_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field82_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field82 = 82;</code>
       * @param value The field82 to set.
       * @return This builder for chaining.
       */
      public Builder setField82(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field82_ = value;
        bitField2_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field82 = 82;</code>
       * @return This builder for chaining.
       */
      public Builder clearField82() {
        field82_ = getDefaultInstance().getField82();
        bitField2_ = (bitField2_ & ~0x00020000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field82 = 82;</code>
       * @param value The bytes for field82 to set.
       * @return This builder for chaining.
       */
      public Builder setField82Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field82_ = value;
        bitField2_ |= 0x00020000;
        onChanged();
        return this;
      }

      private java.lang.Object field83_ = "";
      /**
       * <code>optional string field83 = 83;</code>
       * @return Whether the field83 field is set.
       */
      public boolean hasField83() {
        return ((bitField2_ & 0x00040000) != 0);
      }
      /**
       * <code>optional string field83 = 83;</code>
       * @return The field83.
       */
      public java.lang.String getField83() {
        java.lang.Object ref = field83_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field83_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field83 = 83;</code>
       * @return The bytes for field83.
       */
      public com.google.protobuf.ByteString
          getField83Bytes() {
        java.lang.Object ref = field83_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field83_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field83 = 83;</code>
       * @param value The field83 to set.
       * @return This builder for chaining.
       */
      public Builder setField83(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field83_ = value;
        bitField2_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field83 = 83;</code>
       * @return This builder for chaining.
       */
      public Builder clearField83() {
        field83_ = getDefaultInstance().getField83();
        bitField2_ = (bitField2_ & ~0x00040000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field83 = 83;</code>
       * @param value The bytes for field83 to set.
       * @return This builder for chaining.
       */
      public Builder setField83Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field83_ = value;
        bitField2_ |= 0x00040000;
        onChanged();
        return this;
      }

      private java.lang.Object field84_ = "";
      /**
       * <code>optional string field84 = 84;</code>
       * @return Whether the field84 field is set.
       */
      public boolean hasField84() {
        return ((bitField2_ & 0x00080000) != 0);
      }
      /**
       * <code>optional string field84 = 84;</code>
       * @return The field84.
       */
      public java.lang.String getField84() {
        java.lang.Object ref = field84_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field84_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field84 = 84;</code>
       * @return The bytes for field84.
       */
      public com.google.protobuf.ByteString
          getField84Bytes() {
        java.lang.Object ref = field84_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field84_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field84 = 84;</code>
       * @param value The field84 to set.
       * @return This builder for chaining.
       */
      public Builder setField84(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field84_ = value;
        bitField2_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field84 = 84;</code>
       * @return This builder for chaining.
       */
      public Builder clearField84() {
        field84_ = getDefaultInstance().getField84();
        bitField2_ = (bitField2_ & ~0x00080000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field84 = 84;</code>
       * @param value The bytes for field84 to set.
       * @return This builder for chaining.
       */
      public Builder setField84Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field84_ = value;
        bitField2_ |= 0x00080000;
        onChanged();
        return this;
      }

      private java.lang.Object field85_ = "";
      /**
       * <code>optional string field85 = 85;</code>
       * @return Whether the field85 field is set.
       */
      public boolean hasField85() {
        return ((bitField2_ & 0x00100000) != 0);
      }
      /**
       * <code>optional string field85 = 85;</code>
       * @return The field85.
       */
      public java.lang.String getField85() {
        java.lang.Object ref = field85_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field85_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field85 = 85;</code>
       * @return The bytes for field85.
       */
      public com.google.protobuf.ByteString
          getField85Bytes() {
        java.lang.Object ref = field85_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field85_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field85 = 85;</code>
       * @param value The field85 to set.
       * @return This builder for chaining.
       */
      public Builder setField85(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field85_ = value;
        bitField2_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field85 = 85;</code>
       * @return This builder for chaining.
       */
      public Builder clearField85() {
        field85_ = getDefaultInstance().getField85();
        bitField2_ = (bitField2_ & ~0x00100000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field85 = 85;</code>
       * @param value The bytes for field85 to set.
       * @return This builder for chaining.
       */
      public Builder setField85Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field85_ = value;
        bitField2_ |= 0x00100000;
        onChanged();
        return this;
      }

      private java.lang.Object field86_ = "";
      /**
       * <code>optional string field86 = 86;</code>
       * @return Whether the field86 field is set.
       */
      public boolean hasField86() {
        return ((bitField2_ & 0x00200000) != 0);
      }
      /**
       * <code>optional string field86 = 86;</code>
       * @return The field86.
       */
      public java.lang.String getField86() {
        java.lang.Object ref = field86_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field86_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field86 = 86;</code>
       * @return The bytes for field86.
       */
      public com.google.protobuf.ByteString
          getField86Bytes() {
        java.lang.Object ref = field86_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field86_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field86 = 86;</code>
       * @param value The field86 to set.
       * @return This builder for chaining.
       */
      public Builder setField86(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field86_ = value;
        bitField2_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field86 = 86;</code>
       * @return This builder for chaining.
       */
      public Builder clearField86() {
        field86_ = getDefaultInstance().getField86();
        bitField2_ = (bitField2_ & ~0x00200000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field86 = 86;</code>
       * @param value The bytes for field86 to set.
       * @return This builder for chaining.
       */
      public Builder setField86Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field86_ = value;
        bitField2_ |= 0x00200000;
        onChanged();
        return this;
      }

      private java.lang.Object field87_ = "";
      /**
       * <code>optional string field87 = 87;</code>
       * @return Whether the field87 field is set.
       */
      public boolean hasField87() {
        return ((bitField2_ & 0x00400000) != 0);
      }
      /**
       * <code>optional string field87 = 87;</code>
       * @return The field87.
       */
      public java.lang.String getField87() {
        java.lang.Object ref = field87_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field87_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field87 = 87;</code>
       * @return The bytes for field87.
       */
      public com.google.protobuf.ByteString
          getField87Bytes() {
        java.lang.Object ref = field87_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field87_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field87 = 87;</code>
       * @param value The field87 to set.
       * @return This builder for chaining.
       */
      public Builder setField87(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field87_ = value;
        bitField2_ |= 0x00400000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field87 = 87;</code>
       * @return This builder for chaining.
       */
      public Builder clearField87() {
        field87_ = getDefaultInstance().getField87();
        bitField2_ = (bitField2_ & ~0x00400000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field87 = 87;</code>
       * @param value The bytes for field87 to set.
       * @return This builder for chaining.
       */
      public Builder setField87Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field87_ = value;
        bitField2_ |= 0x00400000;
        onChanged();
        return this;
      }

      private java.lang.Object field88_ = "";
      /**
       * <code>optional string field88 = 88;</code>
       * @return Whether the field88 field is set.
       */
      public boolean hasField88() {
        return ((bitField2_ & 0x00800000) != 0);
      }
      /**
       * <code>optional string field88 = 88;</code>
       * @return The field88.
       */
      public java.lang.String getField88() {
        java.lang.Object ref = field88_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field88_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field88 = 88;</code>
       * @return The bytes for field88.
       */
      public com.google.protobuf.ByteString
          getField88Bytes() {
        java.lang.Object ref = field88_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field88_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field88 = 88;</code>
       * @param value The field88 to set.
       * @return This builder for chaining.
       */
      public Builder setField88(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field88_ = value;
        bitField2_ |= 0x00800000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field88 = 88;</code>
       * @return This builder for chaining.
       */
      public Builder clearField88() {
        field88_ = getDefaultInstance().getField88();
        bitField2_ = (bitField2_ & ~0x00800000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field88 = 88;</code>
       * @param value The bytes for field88 to set.
       * @return This builder for chaining.
       */
      public Builder setField88Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field88_ = value;
        bitField2_ |= 0x00800000;
        onChanged();
        return this;
      }

      private java.lang.Object field89_ = "";
      /**
       * <code>optional string field89 = 89;</code>
       * @return Whether the field89 field is set.
       */
      public boolean hasField89() {
        return ((bitField2_ & 0x01000000) != 0);
      }
      /**
       * <code>optional string field89 = 89;</code>
       * @return The field89.
       */
      public java.lang.String getField89() {
        java.lang.Object ref = field89_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field89_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field89 = 89;</code>
       * @return The bytes for field89.
       */
      public com.google.protobuf.ByteString
          getField89Bytes() {
        java.lang.Object ref = field89_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field89_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field89 = 89;</code>
       * @param value The field89 to set.
       * @return This builder for chaining.
       */
      public Builder setField89(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field89_ = value;
        bitField2_ |= 0x01000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field89 = 89;</code>
       * @return This builder for chaining.
       */
      public Builder clearField89() {
        field89_ = getDefaultInstance().getField89();
        bitField2_ = (bitField2_ & ~0x01000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field89 = 89;</code>
       * @param value The bytes for field89 to set.
       * @return This builder for chaining.
       */
      public Builder setField89Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field89_ = value;
        bitField2_ |= 0x01000000;
        onChanged();
        return this;
      }

      private java.lang.Object field90_ = "";
      /**
       * <code>optional string field90 = 90;</code>
       * @return Whether the field90 field is set.
       */
      public boolean hasField90() {
        return ((bitField2_ & 0x02000000) != 0);
      }
      /**
       * <code>optional string field90 = 90;</code>
       * @return The field90.
       */
      public java.lang.String getField90() {
        java.lang.Object ref = field90_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field90_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field90 = 90;</code>
       * @return The bytes for field90.
       */
      public com.google.protobuf.ByteString
          getField90Bytes() {
        java.lang.Object ref = field90_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field90_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field90 = 90;</code>
       * @param value The field90 to set.
       * @return This builder for chaining.
       */
      public Builder setField90(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field90_ = value;
        bitField2_ |= 0x02000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field90 = 90;</code>
       * @return This builder for chaining.
       */
      public Builder clearField90() {
        field90_ = getDefaultInstance().getField90();
        bitField2_ = (bitField2_ & ~0x02000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field90 = 90;</code>
       * @param value The bytes for field90 to set.
       * @return This builder for chaining.
       */
      public Builder setField90Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field90_ = value;
        bitField2_ |= 0x02000000;
        onChanged();
        return this;
      }

      private java.lang.Object field91_ = "";
      /**
       * <code>optional string field91 = 91;</code>
       * @return Whether the field91 field is set.
       */
      public boolean hasField91() {
        return ((bitField2_ & 0x04000000) != 0);
      }
      /**
       * <code>optional string field91 = 91;</code>
       * @return The field91.
       */
      public java.lang.String getField91() {
        java.lang.Object ref = field91_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field91_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field91 = 91;</code>
       * @return The bytes for field91.
       */
      public com.google.protobuf.ByteString
          getField91Bytes() {
        java.lang.Object ref = field91_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field91_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field91 = 91;</code>
       * @param value The field91 to set.
       * @return This builder for chaining.
       */
      public Builder setField91(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field91_ = value;
        bitField2_ |= 0x04000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field91 = 91;</code>
       * @return This builder for chaining.
       */
      public Builder clearField91() {
        field91_ = getDefaultInstance().getField91();
        bitField2_ = (bitField2_ & ~0x04000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field91 = 91;</code>
       * @param value The bytes for field91 to set.
       * @return This builder for chaining.
       */
      public Builder setField91Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field91_ = value;
        bitField2_ |= 0x04000000;
        onChanged();
        return this;
      }

      private java.lang.Object field92_ = "";
      /**
       * <code>optional string field92 = 92;</code>
       * @return Whether the field92 field is set.
       */
      public boolean hasField92() {
        return ((bitField2_ & 0x08000000) != 0);
      }
      /**
       * <code>optional string field92 = 92;</code>
       * @return The field92.
       */
      public java.lang.String getField92() {
        java.lang.Object ref = field92_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field92_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field92 = 92;</code>
       * @return The bytes for field92.
       */
      public com.google.protobuf.ByteString
          getField92Bytes() {
        java.lang.Object ref = field92_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field92_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field92 = 92;</code>
       * @param value The field92 to set.
       * @return This builder for chaining.
       */
      public Builder setField92(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field92_ = value;
        bitField2_ |= 0x08000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field92 = 92;</code>
       * @return This builder for chaining.
       */
      public Builder clearField92() {
        field92_ = getDefaultInstance().getField92();
        bitField2_ = (bitField2_ & ~0x08000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field92 = 92;</code>
       * @param value The bytes for field92 to set.
       * @return This builder for chaining.
       */
      public Builder setField92Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field92_ = value;
        bitField2_ |= 0x08000000;
        onChanged();
        return this;
      }

      private java.lang.Object field93_ = "";
      /**
       * <code>optional string field93 = 93;</code>
       * @return Whether the field93 field is set.
       */
      public boolean hasField93() {
        return ((bitField2_ & 0x10000000) != 0);
      }
      /**
       * <code>optional string field93 = 93;</code>
       * @return The field93.
       */
      public java.lang.String getField93() {
        java.lang.Object ref = field93_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field93_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field93 = 93;</code>
       * @return The bytes for field93.
       */
      public com.google.protobuf.ByteString
          getField93Bytes() {
        java.lang.Object ref = field93_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field93_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field93 = 93;</code>
       * @param value The field93 to set.
       * @return This builder for chaining.
       */
      public Builder setField93(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field93_ = value;
        bitField2_ |= 0x10000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field93 = 93;</code>
       * @return This builder for chaining.
       */
      public Builder clearField93() {
        field93_ = getDefaultInstance().getField93();
        bitField2_ = (bitField2_ & ~0x10000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field93 = 93;</code>
       * @param value The bytes for field93 to set.
       * @return This builder for chaining.
       */
      public Builder setField93Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field93_ = value;
        bitField2_ |= 0x10000000;
        onChanged();
        return this;
      }

      private java.lang.Object field94_ = "";
      /**
       * <code>optional string field94 = 94;</code>
       * @return Whether the field94 field is set.
       */
      public boolean hasField94() {
        return ((bitField2_ & 0x20000000) != 0);
      }
      /**
       * <code>optional string field94 = 94;</code>
       * @return The field94.
       */
      public java.lang.String getField94() {
        java.lang.Object ref = field94_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field94_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field94 = 94;</code>
       * @return The bytes for field94.
       */
      public com.google.protobuf.ByteString
          getField94Bytes() {
        java.lang.Object ref = field94_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field94_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field94 = 94;</code>
       * @param value The field94 to set.
       * @return This builder for chaining.
       */
      public Builder setField94(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field94_ = value;
        bitField2_ |= 0x20000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field94 = 94;</code>
       * @return This builder for chaining.
       */
      public Builder clearField94() {
        field94_ = getDefaultInstance().getField94();
        bitField2_ = (bitField2_ & ~0x20000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field94 = 94;</code>
       * @param value The bytes for field94 to set.
       * @return This builder for chaining.
       */
      public Builder setField94Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field94_ = value;
        bitField2_ |= 0x20000000;
        onChanged();
        return this;
      }

      private java.lang.Object field95_ = "";
      /**
       * <code>optional string field95 = 95;</code>
       * @return Whether the field95 field is set.
       */
      public boolean hasField95() {
        return ((bitField2_ & 0x40000000) != 0);
      }
      /**
       * <code>optional string field95 = 95;</code>
       * @return The field95.
       */
      public java.lang.String getField95() {
        java.lang.Object ref = field95_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field95_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field95 = 95;</code>
       * @return The bytes for field95.
       */
      public com.google.protobuf.ByteString
          getField95Bytes() {
        java.lang.Object ref = field95_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field95_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field95 = 95;</code>
       * @param value The field95 to set.
       * @return This builder for chaining.
       */
      public Builder setField95(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field95_ = value;
        bitField2_ |= 0x40000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field95 = 95;</code>
       * @return This builder for chaining.
       */
      public Builder clearField95() {
        field95_ = getDefaultInstance().getField95();
        bitField2_ = (bitField2_ & ~0x40000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field95 = 95;</code>
       * @param value The bytes for field95 to set.
       * @return This builder for chaining.
       */
      public Builder setField95Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field95_ = value;
        bitField2_ |= 0x40000000;
        onChanged();
        return this;
      }

      private java.lang.Object field96_ = "";
      /**
       * <code>optional string field96 = 96;</code>
       * @return Whether the field96 field is set.
       */
      public boolean hasField96() {
        return ((bitField2_ & 0x80000000) != 0);
      }
      /**
       * <code>optional string field96 = 96;</code>
       * @return The field96.
       */
      public java.lang.String getField96() {
        java.lang.Object ref = field96_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field96_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field96 = 96;</code>
       * @return The bytes for field96.
       */
      public com.google.protobuf.ByteString
          getField96Bytes() {
        java.lang.Object ref = field96_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field96_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field96 = 96;</code>
       * @param value The field96 to set.
       * @return This builder for chaining.
       */
      public Builder setField96(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field96_ = value;
        bitField2_ |= 0x80000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field96 = 96;</code>
       * @return This builder for chaining.
       */
      public Builder clearField96() {
        field96_ = getDefaultInstance().getField96();
        bitField2_ = (bitField2_ & ~0x80000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field96 = 96;</code>
       * @param value The bytes for field96 to set.
       * @return This builder for chaining.
       */
      public Builder setField96Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field96_ = value;
        bitField2_ |= 0x80000000;
        onChanged();
        return this;
      }

      private java.lang.Object field97_ = "";
      /**
       * <code>optional string field97 = 97;</code>
       * @return Whether the field97 field is set.
       */
      public boolean hasField97() {
        return ((bitField3_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string field97 = 97;</code>
       * @return The field97.
       */
      public java.lang.String getField97() {
        java.lang.Object ref = field97_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field97_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field97 = 97;</code>
       * @return The bytes for field97.
       */
      public com.google.protobuf.ByteString
          getField97Bytes() {
        java.lang.Object ref = field97_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field97_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field97 = 97;</code>
       * @param value The field97 to set.
       * @return This builder for chaining.
       */
      public Builder setField97(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field97_ = value;
        bitField3_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field97 = 97;</code>
       * @return This builder for chaining.
       */
      public Builder clearField97() {
        field97_ = getDefaultInstance().getField97();
        bitField3_ = (bitField3_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field97 = 97;</code>
       * @param value The bytes for field97 to set.
       * @return This builder for chaining.
       */
      public Builder setField97Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field97_ = value;
        bitField3_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object field98_ = "";
      /**
       * <code>optional string field98 = 98;</code>
       * @return Whether the field98 field is set.
       */
      public boolean hasField98() {
        return ((bitField3_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string field98 = 98;</code>
       * @return The field98.
       */
      public java.lang.String getField98() {
        java.lang.Object ref = field98_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field98_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field98 = 98;</code>
       * @return The bytes for field98.
       */
      public com.google.protobuf.ByteString
          getField98Bytes() {
        java.lang.Object ref = field98_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field98_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field98 = 98;</code>
       * @param value The field98 to set.
       * @return This builder for chaining.
       */
      public Builder setField98(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field98_ = value;
        bitField3_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field98 = 98;</code>
       * @return This builder for chaining.
       */
      public Builder clearField98() {
        field98_ = getDefaultInstance().getField98();
        bitField3_ = (bitField3_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field98 = 98;</code>
       * @param value The bytes for field98 to set.
       * @return This builder for chaining.
       */
      public Builder setField98Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field98_ = value;
        bitField3_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object field99_ = "";
      /**
       * <code>optional string field99 = 99;</code>
       * @return Whether the field99 field is set.
       */
      public boolean hasField99() {
        return ((bitField3_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string field99 = 99;</code>
       * @return The field99.
       */
      public java.lang.String getField99() {
        java.lang.Object ref = field99_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field99_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field99 = 99;</code>
       * @return The bytes for field99.
       */
      public com.google.protobuf.ByteString
          getField99Bytes() {
        java.lang.Object ref = field99_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field99_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field99 = 99;</code>
       * @param value The field99 to set.
       * @return This builder for chaining.
       */
      public Builder setField99(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field99_ = value;
        bitField3_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field99 = 99;</code>
       * @return This builder for chaining.
       */
      public Builder clearField99() {
        field99_ = getDefaultInstance().getField99();
        bitField3_ = (bitField3_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field99 = 99;</code>
       * @param value The bytes for field99 to set.
       * @return This builder for chaining.
       */
      public Builder setField99Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field99_ = value;
        bitField3_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object field100_ = "";
      /**
       * <code>optional string field100 = 100;</code>
       * @return Whether the field100 field is set.
       */
      public boolean hasField100() {
        return ((bitField3_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string field100 = 100;</code>
       * @return The field100.
       */
      public java.lang.String getField100() {
        java.lang.Object ref = field100_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field100_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field100 = 100;</code>
       * @return The bytes for field100.
       */
      public com.google.protobuf.ByteString
          getField100Bytes() {
        java.lang.Object ref = field100_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field100_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field100 = 100;</code>
       * @param value The field100 to set.
       * @return This builder for chaining.
       */
      public Builder setField100(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field100_ = value;
        bitField3_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field100 = 100;</code>
       * @return This builder for chaining.
       */
      public Builder clearField100() {
        field100_ = getDefaultInstance().getField100();
        bitField3_ = (bitField3_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field100 = 100;</code>
       * @param value The bytes for field100 to set.
       * @return This builder for chaining.
       */
      public Builder setField100Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field100_ = value;
        bitField3_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object field101_ = "";
      /**
       * <code>optional string field101 = 101;</code>
       * @return Whether the field101 field is set.
       */
      public boolean hasField101() {
        return ((bitField3_ & 0x00000010) != 0);
      }
      /**
       * <code>optional string field101 = 101;</code>
       * @return The field101.
       */
      public java.lang.String getField101() {
        java.lang.Object ref = field101_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field101_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field101 = 101;</code>
       * @return The bytes for field101.
       */
      public com.google.protobuf.ByteString
          getField101Bytes() {
        java.lang.Object ref = field101_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field101_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field101 = 101;</code>
       * @param value The field101 to set.
       * @return This builder for chaining.
       */
      public Builder setField101(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field101_ = value;
        bitField3_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field101 = 101;</code>
       * @return This builder for chaining.
       */
      public Builder clearField101() {
        field101_ = getDefaultInstance().getField101();
        bitField3_ = (bitField3_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field101 = 101;</code>
       * @param value The bytes for field101 to set.
       * @return This builder for chaining.
       */
      public Builder setField101Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field101_ = value;
        bitField3_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object field102_ = "";
      /**
       * <code>optional string field102 = 102;</code>
       * @return Whether the field102 field is set.
       */
      public boolean hasField102() {
        return ((bitField3_ & 0x00000020) != 0);
      }
      /**
       * <code>optional string field102 = 102;</code>
       * @return The field102.
       */
      public java.lang.String getField102() {
        java.lang.Object ref = field102_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field102_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field102 = 102;</code>
       * @return The bytes for field102.
       */
      public com.google.protobuf.ByteString
          getField102Bytes() {
        java.lang.Object ref = field102_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field102_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field102 = 102;</code>
       * @param value The field102 to set.
       * @return This builder for chaining.
       */
      public Builder setField102(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field102_ = value;
        bitField3_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field102 = 102;</code>
       * @return This builder for chaining.
       */
      public Builder clearField102() {
        field102_ = getDefaultInstance().getField102();
        bitField3_ = (bitField3_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field102 = 102;</code>
       * @param value The bytes for field102 to set.
       * @return This builder for chaining.
       */
      public Builder setField102Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field102_ = value;
        bitField3_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object field103_ = "";
      /**
       * <code>optional string field103 = 103;</code>
       * @return Whether the field103 field is set.
       */
      public boolean hasField103() {
        return ((bitField3_ & 0x00000040) != 0);
      }
      /**
       * <code>optional string field103 = 103;</code>
       * @return The field103.
       */
      public java.lang.String getField103() {
        java.lang.Object ref = field103_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field103_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field103 = 103;</code>
       * @return The bytes for field103.
       */
      public com.google.protobuf.ByteString
          getField103Bytes() {
        java.lang.Object ref = field103_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field103_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field103 = 103;</code>
       * @param value The field103 to set.
       * @return This builder for chaining.
       */
      public Builder setField103(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field103_ = value;
        bitField3_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field103 = 103;</code>
       * @return This builder for chaining.
       */
      public Builder clearField103() {
        field103_ = getDefaultInstance().getField103();
        bitField3_ = (bitField3_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field103 = 103;</code>
       * @param value The bytes for field103 to set.
       * @return This builder for chaining.
       */
      public Builder setField103Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field103_ = value;
        bitField3_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object field104_ = "";
      /**
       * <code>optional string field104 = 104;</code>
       * @return Whether the field104 field is set.
       */
      public boolean hasField104() {
        return ((bitField3_ & 0x00000080) != 0);
      }
      /**
       * <code>optional string field104 = 104;</code>
       * @return The field104.
       */
      public java.lang.String getField104() {
        java.lang.Object ref = field104_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field104_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field104 = 104;</code>
       * @return The bytes for field104.
       */
      public com.google.protobuf.ByteString
          getField104Bytes() {
        java.lang.Object ref = field104_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field104_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field104 = 104;</code>
       * @param value The field104 to set.
       * @return This builder for chaining.
       */
      public Builder setField104(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field104_ = value;
        bitField3_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field104 = 104;</code>
       * @return This builder for chaining.
       */
      public Builder clearField104() {
        field104_ = getDefaultInstance().getField104();
        bitField3_ = (bitField3_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field104 = 104;</code>
       * @param value The bytes for field104 to set.
       * @return This builder for chaining.
       */
      public Builder setField104Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field104_ = value;
        bitField3_ |= 0x00000080;
        onChanged();
        return this;
      }

      private java.lang.Object field105_ = "";
      /**
       * <code>optional string field105 = 105;</code>
       * @return Whether the field105 field is set.
       */
      public boolean hasField105() {
        return ((bitField3_ & 0x00000100) != 0);
      }
      /**
       * <code>optional string field105 = 105;</code>
       * @return The field105.
       */
      public java.lang.String getField105() {
        java.lang.Object ref = field105_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field105_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field105 = 105;</code>
       * @return The bytes for field105.
       */
      public com.google.protobuf.ByteString
          getField105Bytes() {
        java.lang.Object ref = field105_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field105_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field105 = 105;</code>
       * @param value The field105 to set.
       * @return This builder for chaining.
       */
      public Builder setField105(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field105_ = value;
        bitField3_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field105 = 105;</code>
       * @return This builder for chaining.
       */
      public Builder clearField105() {
        field105_ = getDefaultInstance().getField105();
        bitField3_ = (bitField3_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field105 = 105;</code>
       * @param value The bytes for field105 to set.
       * @return This builder for chaining.
       */
      public Builder setField105Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field105_ = value;
        bitField3_ |= 0x00000100;
        onChanged();
        return this;
      }

      private java.lang.Object field106_ = "";
      /**
       * <code>optional string field106 = 106;</code>
       * @return Whether the field106 field is set.
       */
      public boolean hasField106() {
        return ((bitField3_ & 0x00000200) != 0);
      }
      /**
       * <code>optional string field106 = 106;</code>
       * @return The field106.
       */
      public java.lang.String getField106() {
        java.lang.Object ref = field106_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field106_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field106 = 106;</code>
       * @return The bytes for field106.
       */
      public com.google.protobuf.ByteString
          getField106Bytes() {
        java.lang.Object ref = field106_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field106_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field106 = 106;</code>
       * @param value The field106 to set.
       * @return This builder for chaining.
       */
      public Builder setField106(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field106_ = value;
        bitField3_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field106 = 106;</code>
       * @return This builder for chaining.
       */
      public Builder clearField106() {
        field106_ = getDefaultInstance().getField106();
        bitField3_ = (bitField3_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field106 = 106;</code>
       * @param value The bytes for field106 to set.
       * @return This builder for chaining.
       */
      public Builder setField106Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field106_ = value;
        bitField3_ |= 0x00000200;
        onChanged();
        return this;
      }

      private java.lang.Object field107_ = "";
      /**
       * <code>optional string field107 = 107;</code>
       * @return Whether the field107 field is set.
       */
      public boolean hasField107() {
        return ((bitField3_ & 0x00000400) != 0);
      }
      /**
       * <code>optional string field107 = 107;</code>
       * @return The field107.
       */
      public java.lang.String getField107() {
        java.lang.Object ref = field107_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field107_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field107 = 107;</code>
       * @return The bytes for field107.
       */
      public com.google.protobuf.ByteString
          getField107Bytes() {
        java.lang.Object ref = field107_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field107_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field107 = 107;</code>
       * @param value The field107 to set.
       * @return This builder for chaining.
       */
      public Builder setField107(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field107_ = value;
        bitField3_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field107 = 107;</code>
       * @return This builder for chaining.
       */
      public Builder clearField107() {
        field107_ = getDefaultInstance().getField107();
        bitField3_ = (bitField3_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field107 = 107;</code>
       * @param value The bytes for field107 to set.
       * @return This builder for chaining.
       */
      public Builder setField107Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field107_ = value;
        bitField3_ |= 0x00000400;
        onChanged();
        return this;
      }

      private java.lang.Object field108_ = "";
      /**
       * <code>optional string field108 = 108;</code>
       * @return Whether the field108 field is set.
       */
      public boolean hasField108() {
        return ((bitField3_ & 0x00000800) != 0);
      }
      /**
       * <code>optional string field108 = 108;</code>
       * @return The field108.
       */
      public java.lang.String getField108() {
        java.lang.Object ref = field108_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field108_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field108 = 108;</code>
       * @return The bytes for field108.
       */
      public com.google.protobuf.ByteString
          getField108Bytes() {
        java.lang.Object ref = field108_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field108_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field108 = 108;</code>
       * @param value The field108 to set.
       * @return This builder for chaining.
       */
      public Builder setField108(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field108_ = value;
        bitField3_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field108 = 108;</code>
       * @return This builder for chaining.
       */
      public Builder clearField108() {
        field108_ = getDefaultInstance().getField108();
        bitField3_ = (bitField3_ & ~0x00000800);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field108 = 108;</code>
       * @param value The bytes for field108 to set.
       * @return This builder for chaining.
       */
      public Builder setField108Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field108_ = value;
        bitField3_ |= 0x00000800;
        onChanged();
        return this;
      }

      private java.lang.Object field109_ = "";
      /**
       * <code>optional string field109 = 109;</code>
       * @return Whether the field109 field is set.
       */
      public boolean hasField109() {
        return ((bitField3_ & 0x00001000) != 0);
      }
      /**
       * <code>optional string field109 = 109;</code>
       * @return The field109.
       */
      public java.lang.String getField109() {
        java.lang.Object ref = field109_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field109_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field109 = 109;</code>
       * @return The bytes for field109.
       */
      public com.google.protobuf.ByteString
          getField109Bytes() {
        java.lang.Object ref = field109_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field109_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field109 = 109;</code>
       * @param value The field109 to set.
       * @return This builder for chaining.
       */
      public Builder setField109(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field109_ = value;
        bitField3_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field109 = 109;</code>
       * @return This builder for chaining.
       */
      public Builder clearField109() {
        field109_ = getDefaultInstance().getField109();
        bitField3_ = (bitField3_ & ~0x00001000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field109 = 109;</code>
       * @param value The bytes for field109 to set.
       * @return This builder for chaining.
       */
      public Builder setField109Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field109_ = value;
        bitField3_ |= 0x00001000;
        onChanged();
        return this;
      }

      private java.lang.Object field110_ = "";
      /**
       * <code>optional string field110 = 110;</code>
       * @return Whether the field110 field is set.
       */
      public boolean hasField110() {
        return ((bitField3_ & 0x00002000) != 0);
      }
      /**
       * <code>optional string field110 = 110;</code>
       * @return The field110.
       */
      public java.lang.String getField110() {
        java.lang.Object ref = field110_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field110_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field110 = 110;</code>
       * @return The bytes for field110.
       */
      public com.google.protobuf.ByteString
          getField110Bytes() {
        java.lang.Object ref = field110_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field110_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field110 = 110;</code>
       * @param value The field110 to set.
       * @return This builder for chaining.
       */
      public Builder setField110(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field110_ = value;
        bitField3_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field110 = 110;</code>
       * @return This builder for chaining.
       */
      public Builder clearField110() {
        field110_ = getDefaultInstance().getField110();
        bitField3_ = (bitField3_ & ~0x00002000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field110 = 110;</code>
       * @param value The bytes for field110 to set.
       * @return This builder for chaining.
       */
      public Builder setField110Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field110_ = value;
        bitField3_ |= 0x00002000;
        onChanged();
        return this;
      }

      private java.lang.Object field111_ = "";
      /**
       * <code>optional string field111 = 111;</code>
       * @return Whether the field111 field is set.
       */
      public boolean hasField111() {
        return ((bitField3_ & 0x00004000) != 0);
      }
      /**
       * <code>optional string field111 = 111;</code>
       * @return The field111.
       */
      public java.lang.String getField111() {
        java.lang.Object ref = field111_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field111_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field111 = 111;</code>
       * @return The bytes for field111.
       */
      public com.google.protobuf.ByteString
          getField111Bytes() {
        java.lang.Object ref = field111_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field111_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field111 = 111;</code>
       * @param value The field111 to set.
       * @return This builder for chaining.
       */
      public Builder setField111(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field111_ = value;
        bitField3_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field111 = 111;</code>
       * @return This builder for chaining.
       */
      public Builder clearField111() {
        field111_ = getDefaultInstance().getField111();
        bitField3_ = (bitField3_ & ~0x00004000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field111 = 111;</code>
       * @param value The bytes for field111 to set.
       * @return This builder for chaining.
       */
      public Builder setField111Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field111_ = value;
        bitField3_ |= 0x00004000;
        onChanged();
        return this;
      }

      private java.lang.Object field112_ = "";
      /**
       * <code>optional string field112 = 112;</code>
       * @return Whether the field112 field is set.
       */
      public boolean hasField112() {
        return ((bitField3_ & 0x00008000) != 0);
      }
      /**
       * <code>optional string field112 = 112;</code>
       * @return The field112.
       */
      public java.lang.String getField112() {
        java.lang.Object ref = field112_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field112_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field112 = 112;</code>
       * @return The bytes for field112.
       */
      public com.google.protobuf.ByteString
          getField112Bytes() {
        java.lang.Object ref = field112_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field112_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field112 = 112;</code>
       * @param value The field112 to set.
       * @return This builder for chaining.
       */
      public Builder setField112(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field112_ = value;
        bitField3_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field112 = 112;</code>
       * @return This builder for chaining.
       */
      public Builder clearField112() {
        field112_ = getDefaultInstance().getField112();
        bitField3_ = (bitField3_ & ~0x00008000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field112 = 112;</code>
       * @param value The bytes for field112 to set.
       * @return This builder for chaining.
       */
      public Builder setField112Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field112_ = value;
        bitField3_ |= 0x00008000;
        onChanged();
        return this;
      }

      private java.lang.Object field113_ = "";
      /**
       * <code>optional string field113 = 113;</code>
       * @return Whether the field113 field is set.
       */
      public boolean hasField113() {
        return ((bitField3_ & 0x00010000) != 0);
      }
      /**
       * <code>optional string field113 = 113;</code>
       * @return The field113.
       */
      public java.lang.String getField113() {
        java.lang.Object ref = field113_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field113_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field113 = 113;</code>
       * @return The bytes for field113.
       */
      public com.google.protobuf.ByteString
          getField113Bytes() {
        java.lang.Object ref = field113_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field113_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field113 = 113;</code>
       * @param value The field113 to set.
       * @return This builder for chaining.
       */
      public Builder setField113(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field113_ = value;
        bitField3_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field113 = 113;</code>
       * @return This builder for chaining.
       */
      public Builder clearField113() {
        field113_ = getDefaultInstance().getField113();
        bitField3_ = (bitField3_ & ~0x00010000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field113 = 113;</code>
       * @param value The bytes for field113 to set.
       * @return This builder for chaining.
       */
      public Builder setField113Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field113_ = value;
        bitField3_ |= 0x00010000;
        onChanged();
        return this;
      }

      private java.lang.Object field114_ = "";
      /**
       * <code>optional string field114 = 114;</code>
       * @return Whether the field114 field is set.
       */
      public boolean hasField114() {
        return ((bitField3_ & 0x00020000) != 0);
      }
      /**
       * <code>optional string field114 = 114;</code>
       * @return The field114.
       */
      public java.lang.String getField114() {
        java.lang.Object ref = field114_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field114_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field114 = 114;</code>
       * @return The bytes for field114.
       */
      public com.google.protobuf.ByteString
          getField114Bytes() {
        java.lang.Object ref = field114_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field114_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field114 = 114;</code>
       * @param value The field114 to set.
       * @return This builder for chaining.
       */
      public Builder setField114(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field114_ = value;
        bitField3_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field114 = 114;</code>
       * @return This builder for chaining.
       */
      public Builder clearField114() {
        field114_ = getDefaultInstance().getField114();
        bitField3_ = (bitField3_ & ~0x00020000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field114 = 114;</code>
       * @param value The bytes for field114 to set.
       * @return This builder for chaining.
       */
      public Builder setField114Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field114_ = value;
        bitField3_ |= 0x00020000;
        onChanged();
        return this;
      }

      private java.lang.Object field115_ = "";
      /**
       * <code>optional string field115 = 115;</code>
       * @return Whether the field115 field is set.
       */
      public boolean hasField115() {
        return ((bitField3_ & 0x00040000) != 0);
      }
      /**
       * <code>optional string field115 = 115;</code>
       * @return The field115.
       */
      public java.lang.String getField115() {
        java.lang.Object ref = field115_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field115_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field115 = 115;</code>
       * @return The bytes for field115.
       */
      public com.google.protobuf.ByteString
          getField115Bytes() {
        java.lang.Object ref = field115_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field115_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field115 = 115;</code>
       * @param value The field115 to set.
       * @return This builder for chaining.
       */
      public Builder setField115(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field115_ = value;
        bitField3_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field115 = 115;</code>
       * @return This builder for chaining.
       */
      public Builder clearField115() {
        field115_ = getDefaultInstance().getField115();
        bitField3_ = (bitField3_ & ~0x00040000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field115 = 115;</code>
       * @param value The bytes for field115 to set.
       * @return This builder for chaining.
       */
      public Builder setField115Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field115_ = value;
        bitField3_ |= 0x00040000;
        onChanged();
        return this;
      }

      private java.lang.Object field116_ = "";
      /**
       * <code>optional string field116 = 116;</code>
       * @return Whether the field116 field is set.
       */
      public boolean hasField116() {
        return ((bitField3_ & 0x00080000) != 0);
      }
      /**
       * <code>optional string field116 = 116;</code>
       * @return The field116.
       */
      public java.lang.String getField116() {
        java.lang.Object ref = field116_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field116_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field116 = 116;</code>
       * @return The bytes for field116.
       */
      public com.google.protobuf.ByteString
          getField116Bytes() {
        java.lang.Object ref = field116_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field116_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field116 = 116;</code>
       * @param value The field116 to set.
       * @return This builder for chaining.
       */
      public Builder setField116(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field116_ = value;
        bitField3_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field116 = 116;</code>
       * @return This builder for chaining.
       */
      public Builder clearField116() {
        field116_ = getDefaultInstance().getField116();
        bitField3_ = (bitField3_ & ~0x00080000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field116 = 116;</code>
       * @param value The bytes for field116 to set.
       * @return This builder for chaining.
       */
      public Builder setField116Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field116_ = value;
        bitField3_ |= 0x00080000;
        onChanged();
        return this;
      }

      private java.lang.Object field117_ = "";
      /**
       * <code>optional string field117 = 117;</code>
       * @return Whether the field117 field is set.
       */
      public boolean hasField117() {
        return ((bitField3_ & 0x00100000) != 0);
      }
      /**
       * <code>optional string field117 = 117;</code>
       * @return The field117.
       */
      public java.lang.String getField117() {
        java.lang.Object ref = field117_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field117_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field117 = 117;</code>
       * @return The bytes for field117.
       */
      public com.google.protobuf.ByteString
          getField117Bytes() {
        java.lang.Object ref = field117_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field117_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field117 = 117;</code>
       * @param value The field117 to set.
       * @return This builder for chaining.
       */
      public Builder setField117(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field117_ = value;
        bitField3_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field117 = 117;</code>
       * @return This builder for chaining.
       */
      public Builder clearField117() {
        field117_ = getDefaultInstance().getField117();
        bitField3_ = (bitField3_ & ~0x00100000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field117 = 117;</code>
       * @param value The bytes for field117 to set.
       * @return This builder for chaining.
       */
      public Builder setField117Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field117_ = value;
        bitField3_ |= 0x00100000;
        onChanged();
        return this;
      }

      private java.lang.Object field118_ = "";
      /**
       * <code>optional string field118 = 118;</code>
       * @return Whether the field118 field is set.
       */
      public boolean hasField118() {
        return ((bitField3_ & 0x00200000) != 0);
      }
      /**
       * <code>optional string field118 = 118;</code>
       * @return The field118.
       */
      public java.lang.String getField118() {
        java.lang.Object ref = field118_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field118_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field118 = 118;</code>
       * @return The bytes for field118.
       */
      public com.google.protobuf.ByteString
          getField118Bytes() {
        java.lang.Object ref = field118_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field118_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field118 = 118;</code>
       * @param value The field118 to set.
       * @return This builder for chaining.
       */
      public Builder setField118(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field118_ = value;
        bitField3_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field118 = 118;</code>
       * @return This builder for chaining.
       */
      public Builder clearField118() {
        field118_ = getDefaultInstance().getField118();
        bitField3_ = (bitField3_ & ~0x00200000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field118 = 118;</code>
       * @param value The bytes for field118 to set.
       * @return This builder for chaining.
       */
      public Builder setField118Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field118_ = value;
        bitField3_ |= 0x00200000;
        onChanged();
        return this;
      }

      private java.lang.Object field119_ = "";
      /**
       * <code>optional string field119 = 119;</code>
       * @return Whether the field119 field is set.
       */
      public boolean hasField119() {
        return ((bitField3_ & 0x00400000) != 0);
      }
      /**
       * <code>optional string field119 = 119;</code>
       * @return The field119.
       */
      public java.lang.String getField119() {
        java.lang.Object ref = field119_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field119_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field119 = 119;</code>
       * @return The bytes for field119.
       */
      public com.google.protobuf.ByteString
          getField119Bytes() {
        java.lang.Object ref = field119_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field119_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field119 = 119;</code>
       * @param value The field119 to set.
       * @return This builder for chaining.
       */
      public Builder setField119(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field119_ = value;
        bitField3_ |= 0x00400000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field119 = 119;</code>
       * @return This builder for chaining.
       */
      public Builder clearField119() {
        field119_ = getDefaultInstance().getField119();
        bitField3_ = (bitField3_ & ~0x00400000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field119 = 119;</code>
       * @param value The bytes for field119 to set.
       * @return This builder for chaining.
       */
      public Builder setField119Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field119_ = value;
        bitField3_ |= 0x00400000;
        onChanged();
        return this;
      }

      private java.lang.Object field120_ = "";
      /**
       * <code>optional string field120 = 120;</code>
       * @return Whether the field120 field is set.
       */
      public boolean hasField120() {
        return ((bitField3_ & 0x00800000) != 0);
      }
      /**
       * <code>optional string field120 = 120;</code>
       * @return The field120.
       */
      public java.lang.String getField120() {
        java.lang.Object ref = field120_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field120_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field120 = 120;</code>
       * @return The bytes for field120.
       */
      public com.google.protobuf.ByteString
          getField120Bytes() {
        java.lang.Object ref = field120_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field120_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field120 = 120;</code>
       * @param value The field120 to set.
       * @return This builder for chaining.
       */
      public Builder setField120(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field120_ = value;
        bitField3_ |= 0x00800000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field120 = 120;</code>
       * @return This builder for chaining.
       */
      public Builder clearField120() {
        field120_ = getDefaultInstance().getField120();
        bitField3_ = (bitField3_ & ~0x00800000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field120 = 120;</code>
       * @param value The bytes for field120 to set.
       * @return This builder for chaining.
       */
      public Builder setField120Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field120_ = value;
        bitField3_ |= 0x00800000;
        onChanged();
        return this;
      }

      private java.lang.Object field121_ = "";
      /**
       * <code>optional string field121 = 121;</code>
       * @return Whether the field121 field is set.
       */
      public boolean hasField121() {
        return ((bitField3_ & 0x01000000) != 0);
      }
      /**
       * <code>optional string field121 = 121;</code>
       * @return The field121.
       */
      public java.lang.String getField121() {
        java.lang.Object ref = field121_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field121_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field121 = 121;</code>
       * @return The bytes for field121.
       */
      public com.google.protobuf.ByteString
          getField121Bytes() {
        java.lang.Object ref = field121_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field121_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field121 = 121;</code>
       * @param value The field121 to set.
       * @return This builder for chaining.
       */
      public Builder setField121(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field121_ = value;
        bitField3_ |= 0x01000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field121 = 121;</code>
       * @return This builder for chaining.
       */
      public Builder clearField121() {
        field121_ = getDefaultInstance().getField121();
        bitField3_ = (bitField3_ & ~0x01000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field121 = 121;</code>
       * @param value The bytes for field121 to set.
       * @return This builder for chaining.
       */
      public Builder setField121Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field121_ = value;
        bitField3_ |= 0x01000000;
        onChanged();
        return this;
      }

      private java.lang.Object field122_ = "";
      /**
       * <code>optional string field122 = 122;</code>
       * @return Whether the field122 field is set.
       */
      public boolean hasField122() {
        return ((bitField3_ & 0x02000000) != 0);
      }
      /**
       * <code>optional string field122 = 122;</code>
       * @return The field122.
       */
      public java.lang.String getField122() {
        java.lang.Object ref = field122_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field122_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field122 = 122;</code>
       * @return The bytes for field122.
       */
      public com.google.protobuf.ByteString
          getField122Bytes() {
        java.lang.Object ref = field122_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field122_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field122 = 122;</code>
       * @param value The field122 to set.
       * @return This builder for chaining.
       */
      public Builder setField122(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field122_ = value;
        bitField3_ |= 0x02000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field122 = 122;</code>
       * @return This builder for chaining.
       */
      public Builder clearField122() {
        field122_ = getDefaultInstance().getField122();
        bitField3_ = (bitField3_ & ~0x02000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field122 = 122;</code>
       * @param value The bytes for field122 to set.
       * @return This builder for chaining.
       */
      public Builder setField122Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field122_ = value;
        bitField3_ |= 0x02000000;
        onChanged();
        return this;
      }

      private java.lang.Object field123_ = "";
      /**
       * <code>optional string field123 = 123;</code>
       * @return Whether the field123 field is set.
       */
      public boolean hasField123() {
        return ((bitField3_ & 0x04000000) != 0);
      }
      /**
       * <code>optional string field123 = 123;</code>
       * @return The field123.
       */
      public java.lang.String getField123() {
        java.lang.Object ref = field123_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field123_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field123 = 123;</code>
       * @return The bytes for field123.
       */
      public com.google.protobuf.ByteString
          getField123Bytes() {
        java.lang.Object ref = field123_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field123_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field123 = 123;</code>
       * @param value The field123 to set.
       * @return This builder for chaining.
       */
      public Builder setField123(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field123_ = value;
        bitField3_ |= 0x04000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field123 = 123;</code>
       * @return This builder for chaining.
       */
      public Builder clearField123() {
        field123_ = getDefaultInstance().getField123();
        bitField3_ = (bitField3_ & ~0x04000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field123 = 123;</code>
       * @param value The bytes for field123 to set.
       * @return This builder for chaining.
       */
      public Builder setField123Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field123_ = value;
        bitField3_ |= 0x04000000;
        onChanged();
        return this;
      }

      private java.lang.Object field124_ = "";
      /**
       * <code>optional string field124 = 124;</code>
       * @return Whether the field124 field is set.
       */
      public boolean hasField124() {
        return ((bitField3_ & 0x08000000) != 0);
      }
      /**
       * <code>optional string field124 = 124;</code>
       * @return The field124.
       */
      public java.lang.String getField124() {
        java.lang.Object ref = field124_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field124_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field124 = 124;</code>
       * @return The bytes for field124.
       */
      public com.google.protobuf.ByteString
          getField124Bytes() {
        java.lang.Object ref = field124_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field124_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field124 = 124;</code>
       * @param value The field124 to set.
       * @return This builder for chaining.
       */
      public Builder setField124(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field124_ = value;
        bitField3_ |= 0x08000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field124 = 124;</code>
       * @return This builder for chaining.
       */
      public Builder clearField124() {
        field124_ = getDefaultInstance().getField124();
        bitField3_ = (bitField3_ & ~0x08000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field124 = 124;</code>
       * @param value The bytes for field124 to set.
       * @return This builder for chaining.
       */
      public Builder setField124Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field124_ = value;
        bitField3_ |= 0x08000000;
        onChanged();
        return this;
      }

      private java.lang.Object field125_ = "";
      /**
       * <code>optional string field125 = 125;</code>
       * @return Whether the field125 field is set.
       */
      public boolean hasField125() {
        return ((bitField3_ & 0x10000000) != 0);
      }
      /**
       * <code>optional string field125 = 125;</code>
       * @return The field125.
       */
      public java.lang.String getField125() {
        java.lang.Object ref = field125_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field125_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field125 = 125;</code>
       * @return The bytes for field125.
       */
      public com.google.protobuf.ByteString
          getField125Bytes() {
        java.lang.Object ref = field125_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field125_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field125 = 125;</code>
       * @param value The field125 to set.
       * @return This builder for chaining.
       */
      public Builder setField125(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field125_ = value;
        bitField3_ |= 0x10000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field125 = 125;</code>
       * @return This builder for chaining.
       */
      public Builder clearField125() {
        field125_ = getDefaultInstance().getField125();
        bitField3_ = (bitField3_ & ~0x10000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field125 = 125;</code>
       * @param value The bytes for field125 to set.
       * @return This builder for chaining.
       */
      public Builder setField125Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field125_ = value;
        bitField3_ |= 0x10000000;
        onChanged();
        return this;
      }

      private java.lang.Object field126_ = "";
      /**
       * <code>optional string field126 = 126;</code>
       * @return Whether the field126 field is set.
       */
      public boolean hasField126() {
        return ((bitField3_ & 0x20000000) != 0);
      }
      /**
       * <code>optional string field126 = 126;</code>
       * @return The field126.
       */
      public java.lang.String getField126() {
        java.lang.Object ref = field126_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field126_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field126 = 126;</code>
       * @return The bytes for field126.
       */
      public com.google.protobuf.ByteString
          getField126Bytes() {
        java.lang.Object ref = field126_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field126_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field126 = 126;</code>
       * @param value The field126 to set.
       * @return This builder for chaining.
       */
      public Builder setField126(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field126_ = value;
        bitField3_ |= 0x20000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field126 = 126;</code>
       * @return This builder for chaining.
       */
      public Builder clearField126() {
        field126_ = getDefaultInstance().getField126();
        bitField3_ = (bitField3_ & ~0x20000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field126 = 126;</code>
       * @param value The bytes for field126 to set.
       * @return This builder for chaining.
       */
      public Builder setField126Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field126_ = value;
        bitField3_ |= 0x20000000;
        onChanged();
        return this;
      }

      private java.lang.Object field127_ = "";
      /**
       * <code>optional string field127 = 127;</code>
       * @return Whether the field127 field is set.
       */
      public boolean hasField127() {
        return ((bitField3_ & 0x40000000) != 0);
      }
      /**
       * <code>optional string field127 = 127;</code>
       * @return The field127.
       */
      public java.lang.String getField127() {
        java.lang.Object ref = field127_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field127_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field127 = 127;</code>
       * @return The bytes for field127.
       */
      public com.google.protobuf.ByteString
          getField127Bytes() {
        java.lang.Object ref = field127_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field127_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field127 = 127;</code>
       * @param value The field127 to set.
       * @return This builder for chaining.
       */
      public Builder setField127(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field127_ = value;
        bitField3_ |= 0x40000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field127 = 127;</code>
       * @return This builder for chaining.
       */
      public Builder clearField127() {
        field127_ = getDefaultInstance().getField127();
        bitField3_ = (bitField3_ & ~0x40000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field127 = 127;</code>
       * @param value The bytes for field127 to set.
       * @return This builder for chaining.
       */
      public Builder setField127Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field127_ = value;
        bitField3_ |= 0x40000000;
        onChanged();
        return this;
      }

      private java.lang.Object field128_ = "";
      /**
       * <code>optional string field128 = 128;</code>
       * @return Whether the field128 field is set.
       */
      public boolean hasField128() {
        return ((bitField3_ & 0x80000000) != 0);
      }
      /**
       * <code>optional string field128 = 128;</code>
       * @return The field128.
       */
      public java.lang.String getField128() {
        java.lang.Object ref = field128_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field128_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string field128 = 128;</code>
       * @return The bytes for field128.
       */
      public com.google.protobuf.ByteString
          getField128Bytes() {
        java.lang.Object ref = field128_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field128_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string field128 = 128;</code>
       * @param value The field128 to set.
       * @return This builder for chaining.
       */
      public Builder setField128(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field128_ = value;
        bitField3_ |= 0x80000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string field128 = 128;</code>
       * @return This builder for chaining.
       */
      public Builder clearField128() {
        field128_ = getDefaultInstance().getField128();
        bitField3_ = (bitField3_ & ~0x80000000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string field128 = 128;</code>
       * @param value The bytes for field128 to set.
       * @return This builder for chaining.
       */
      public Builder setField128Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field128_ = value;
        bitField3_ |= 0x80000000;
        onChanged();
        return this;
      }

      private java.lang.Object field129_ = "";
      /**
       * <code>required string field129 = 129;</code>
       * @return Whether the field129 field is set.
       */
      public boolean hasField129() {
        return ((bitField4_ & 0x00000001) != 0);
      }
      /**
       * <code>required string field129 = 129;</code>
       * @return The field129.
       */
      public java.lang.String getField129() {
        java.lang.Object ref = field129_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            field129_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string field129 = 129;</code>
       * @return The bytes for field129.
       */
      public com.google.protobuf.ByteString
          getField129Bytes() {
        java.lang.Object ref = field129_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          field129_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string field129 = 129;</code>
       * @param value The field129 to set.
       * @return This builder for chaining.
       */
      public Builder setField129(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        field129_ = value;
        bitField4_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required string field129 = 129;</code>
       * @return This builder for chaining.
       */
      public Builder clearField129() {
        field129_ = getDefaultInstance().getField129();
        bitField4_ = (bitField4_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>required string field129 = 129;</code>
       * @param value The bytes for field129 to set.
       * @return This builder for chaining.
       */
      public Builder setField129Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        field129_ = value;
        bitField4_ |= 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:foo.TestRequiredFieldsBitmap)
    }

    // @@protoc_insertion_point(class_scope:foo.TestRequiredFieldsBitmap)
    private static final foo.TestFull.TestRequiredFieldsBitmap DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestRequiredFieldsBitmap();
    }

    public static foo.TestFull.TestRequiredFieldsBitmap getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestRequiredFieldsBitmap getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestFieldFlagsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestFieldFlags)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional int32 no_flags1 = 1;</code>
     * @return Whether the noFlags1 field is set.
     */
    boolean hasNoFlags1();
    /**
     * <code>optional int32 no_flags1 = 1;</code>
     * @return The noFlags1.
     */
    int getNoFlags1();

    /**
     * <code>required int32 no_flags2 = 2;</code>
     * @return Whether the noFlags2 field is set.
     */
    boolean hasNoFlags2();
    /**
     * <code>required int32 no_flags2 = 2;</code>
     * @return The noFlags2.
     */
    int getNoFlags2();

    /**
     * <code>repeated int32 no_flags3 = 3;</code>
     * @return A list containing the noFlags3.
     */
    java.util.List<java.lang.Integer> getNoFlags3List();
    /**
     * <code>repeated int32 no_flags3 = 3;</code>
     * @return The count of noFlags3.
     */
    int getNoFlags3Count();
    /**
     * <code>repeated int32 no_flags3 = 3;</code>
     * @param index The index of the element to return.
     * @return The noFlags3 at the given index.
     */
    int getNoFlags3(int index);

    /**
     * <code>repeated int32 packed = 4 [packed = true];</code>
     * @return A list containing the packed.
     */
    java.util.List<java.lang.Integer> getPackedList();
    /**
     * <code>repeated int32 packed = 4 [packed = true];</code>
     * @return The count of packed.
     */
    int getPackedCount();
    /**
     * <code>repeated int32 packed = 4 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The packed at the given index.
     */
    int getPacked(int index);

    /**
     * <code>repeated int32 packed_deprecated = 5 [packed = true, deprecated = true];</code>
     * @deprecated foo.TestFieldFlags.packed_deprecated is deprecated.
     *     See test-full.proto;l=389
     * @return A list containing the packedDeprecated.
     */
    @java.lang.Deprecated java.util.List<java.lang.Integer> getPackedDeprecatedList();
    /**
     * <code>repeated int32 packed_deprecated = 5 [packed = true, deprecated = true];</code>
     * @deprecated foo.TestFieldFlags.packed_deprecated is deprecated.
     *     See test-full.proto;l=389
     * @return The count of packedDeprecated.
     */
    @java.lang.Deprecated int getPackedDeprecatedCount();
    /**
     * <code>repeated int32 packed_deprecated = 5 [packed = true, deprecated = true];</code>
     * @deprecated foo.TestFieldFlags.packed_deprecated is deprecated.
     *     See test-full.proto;l=389
     * @param index The index of the element to return.
     * @return The packedDeprecated at the given index.
     */
    @java.lang.Deprecated int getPackedDeprecated(int index);

    /**
     * <code>repeated int32 deprecated = 6 [deprecated = true];</code>
     * @deprecated foo.TestFieldFlags.deprecated is deprecated.
     *     See test-full.proto;l=390
     * @return A list containing the deprecated.
     */
    @java.lang.Deprecated java.util.List<java.lang.Integer> getDeprecatedList();
    /**
     * <code>repeated int32 deprecated = 6 [deprecated = true];</code>
     * @deprecated foo.TestFieldFlags.deprecated is deprecated.
     *     See test-full.proto;l=390
     * @return The count of deprecated.
     */
    @java.lang.Deprecated int getDeprecatedCount();
    /**
     * <code>repeated int32 deprecated = 6 [deprecated = true];</code>
     * @deprecated foo.TestFieldFlags.deprecated is deprecated.
     *     See test-full.proto;l=390
     * @param index The index of the element to return.
     * @return The deprecated at the given index.
     */
    @java.lang.Deprecated int getDeprecated(int index);
  }
  /**
   * Protobuf type {@code foo.TestFieldFlags}
   */
  public static final class TestFieldFlags extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestFieldFlags)
      TestFieldFlagsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestFieldFlags.newBuilder() to construct.
    private TestFieldFlags(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestFieldFlags() {
      noFlags3_ = emptyIntList();
      packed_ = emptyIntList();
      packedDeprecated_ = emptyIntList();
      deprecated_ = emptyIntList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestFieldFlags_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestFieldFlags_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestFieldFlags.class, foo.TestFull.TestFieldFlags.Builder.class);
    }

    private int bitField0_;
    public static final int NO_FLAGS1_FIELD_NUMBER = 1;
    private int noFlags1_ = 0;
    /**
     * <code>optional int32 no_flags1 = 1;</code>
     * @return Whether the noFlags1 field is set.
     */
    @java.lang.Override
    public boolean hasNoFlags1() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional int32 no_flags1 = 1;</code>
     * @return The noFlags1.
     */
    @java.lang.Override
    public int getNoFlags1() {
      return noFlags1_;
    }

    public static final int NO_FLAGS2_FIELD_NUMBER = 2;
    private int noFlags2_ = 0;
    /**
     * <code>required int32 no_flags2 = 2;</code>
     * @return Whether the noFlags2 field is set.
     */
    @java.lang.Override
    public boolean hasNoFlags2() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required int32 no_flags2 = 2;</code>
     * @return The noFlags2.
     */
    @java.lang.Override
    public int getNoFlags2() {
      return noFlags2_;
    }

    public static final int NO_FLAGS3_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList noFlags3_ =
        emptyIntList();
    /**
     * <code>repeated int32 no_flags3 = 3;</code>
     * @return A list containing the noFlags3.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getNoFlags3List() {
      return noFlags3_;
    }
    /**
     * <code>repeated int32 no_flags3 = 3;</code>
     * @return The count of noFlags3.
     */
    public int getNoFlags3Count() {
      return noFlags3_.size();
    }
    /**
     * <code>repeated int32 no_flags3 = 3;</code>
     * @param index The index of the element to return.
     * @return The noFlags3 at the given index.
     */
    public int getNoFlags3(int index) {
      return noFlags3_.getInt(index);
    }

    public static final int PACKED_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList packed_ =
        emptyIntList();
    /**
     * <code>repeated int32 packed = 4 [packed = true];</code>
     * @return A list containing the packed.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getPackedList() {
      return packed_;
    }
    /**
     * <code>repeated int32 packed = 4 [packed = true];</code>
     * @return The count of packed.
     */
    public int getPackedCount() {
      return packed_.size();
    }
    /**
     * <code>repeated int32 packed = 4 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The packed at the given index.
     */
    public int getPacked(int index) {
      return packed_.getInt(index);
    }
    private int packedMemoizedSerializedSize = -1;

    public static final int PACKED_DEPRECATED_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList packedDeprecated_ =
        emptyIntList();
    /**
     * <code>repeated int32 packed_deprecated = 5 [packed = true, deprecated = true];</code>
     * @deprecated foo.TestFieldFlags.packed_deprecated is deprecated.
     *     See test-full.proto;l=389
     * @return A list containing the packedDeprecated.
     */
    @java.lang.Override
    @java.lang.Deprecated public java.util.List<java.lang.Integer>
        getPackedDeprecatedList() {
      return packedDeprecated_;
    }
    /**
     * <code>repeated int32 packed_deprecated = 5 [packed = true, deprecated = true];</code>
     * @deprecated foo.TestFieldFlags.packed_deprecated is deprecated.
     *     See test-full.proto;l=389
     * @return The count of packedDeprecated.
     */
    @java.lang.Deprecated public int getPackedDeprecatedCount() {
      return packedDeprecated_.size();
    }
    /**
     * <code>repeated int32 packed_deprecated = 5 [packed = true, deprecated = true];</code>
     * @deprecated foo.TestFieldFlags.packed_deprecated is deprecated.
     *     See test-full.proto;l=389
     * @param index The index of the element to return.
     * @return The packedDeprecated at the given index.
     */
    @java.lang.Deprecated public int getPackedDeprecated(int index) {
      return packedDeprecated_.getInt(index);
    }
    private int packedDeprecatedMemoizedSerializedSize = -1;

    public static final int DEPRECATED_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList deprecated_ =
        emptyIntList();
    /**
     * <code>repeated int32 deprecated = 6 [deprecated = true];</code>
     * @deprecated foo.TestFieldFlags.deprecated is deprecated.
     *     See test-full.proto;l=390
     * @return A list containing the deprecated.
     */
    @java.lang.Override
    @java.lang.Deprecated public java.util.List<java.lang.Integer>
        getDeprecatedList() {
      return deprecated_;
    }
    /**
     * <code>repeated int32 deprecated = 6 [deprecated = true];</code>
     * @deprecated foo.TestFieldFlags.deprecated is deprecated.
     *     See test-full.proto;l=390
     * @return The count of deprecated.
     */
    @java.lang.Deprecated public int getDeprecatedCount() {
      return deprecated_.size();
    }
    /**
     * <code>repeated int32 deprecated = 6 [deprecated = true];</code>
     * @deprecated foo.TestFieldFlags.deprecated is deprecated.
     *     See test-full.proto;l=390
     * @param index The index of the element to return.
     * @return The deprecated at the given index.
     */
    @java.lang.Deprecated public int getDeprecated(int index) {
      return deprecated_.getInt(index);
    }

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

      if (!hasNoFlags2()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(1, noFlags1_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(2, noFlags2_);
      }
      for (int i = 0; i < noFlags3_.size(); i++) {
        output.writeInt32(3, noFlags3_.getInt(i));
      }
      if (getPackedList().size() > 0) {
        output.writeUInt32NoTag(34);
        output.writeUInt32NoTag(packedMemoizedSerializedSize);
      }
      for (int i = 0; i < packed_.size(); i++) {
        output.writeInt32NoTag(packed_.getInt(i));
      }
      if (getPackedDeprecatedList().size() > 0) {
        output.writeUInt32NoTag(42);
        output.writeUInt32NoTag(packedDeprecatedMemoizedSerializedSize);
      }
      for (int i = 0; i < packedDeprecated_.size(); i++) {
        output.writeInt32NoTag(packedDeprecated_.getInt(i));
      }
      for (int i = 0; i < deprecated_.size(); i++) {
        output.writeInt32(6, deprecated_.getInt(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, noFlags1_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, noFlags2_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < noFlags3_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(noFlags3_.getInt(i));
        }
        size += dataSize;
        size += 1 * getNoFlags3List().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < packed_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(packed_.getInt(i));
        }
        size += dataSize;
        if (!getPackedList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        packedMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < packedDeprecated_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(packedDeprecated_.getInt(i));
        }
        size += dataSize;
        if (!getPackedDeprecatedList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        packedDeprecatedMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < deprecated_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(deprecated_.getInt(i));
        }
        size += dataSize;
        size += 1 * getDeprecatedList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof foo.TestFull.TestFieldFlags)) {
        return super.equals(obj);
      }
      foo.TestFull.TestFieldFlags other = (foo.TestFull.TestFieldFlags) obj;

      if (hasNoFlags1() != other.hasNoFlags1()) return false;
      if (hasNoFlags1()) {
        if (getNoFlags1()
            != other.getNoFlags1()) return false;
      }
      if (hasNoFlags2() != other.hasNoFlags2()) return false;
      if (hasNoFlags2()) {
        if (getNoFlags2()
            != other.getNoFlags2()) return false;
      }
      if (!getNoFlags3List()
          .equals(other.getNoFlags3List())) return false;
      if (!getPackedList()
          .equals(other.getPackedList())) return false;
      if (!getPackedDeprecatedList()
          .equals(other.getPackedDeprecatedList())) return false;
      if (!getDeprecatedList()
          .equals(other.getDeprecatedList())) 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 (hasNoFlags1()) {
        hash = (37 * hash) + NO_FLAGS1_FIELD_NUMBER;
        hash = (53 * hash) + getNoFlags1();
      }
      if (hasNoFlags2()) {
        hash = (37 * hash) + NO_FLAGS2_FIELD_NUMBER;
        hash = (53 * hash) + getNoFlags2();
      }
      if (getNoFlags3Count() > 0) {
        hash = (37 * hash) + NO_FLAGS3_FIELD_NUMBER;
        hash = (53 * hash) + getNoFlags3List().hashCode();
      }
      if (getPackedCount() > 0) {
        hash = (37 * hash) + PACKED_FIELD_NUMBER;
        hash = (53 * hash) + getPackedList().hashCode();
      }
      if (getPackedDeprecatedCount() > 0) {
        hash = (37 * hash) + PACKED_DEPRECATED_FIELD_NUMBER;
        hash = (53 * hash) + getPackedDeprecatedList().hashCode();
      }
      if (getDeprecatedCount() > 0) {
        hash = (37 * hash) + DEPRECATED_FIELD_NUMBER;
        hash = (53 * hash) + getDeprecatedList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestFieldFlags_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestFieldFlags.class, foo.TestFull.TestFieldFlags.Builder.class);
      }

      // Construct using foo.TestFull.TestFieldFlags.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        noFlags1_ = 0;
        noFlags2_ = 0;
        noFlags3_ = emptyIntList();
        packed_ = emptyIntList();
        packedDeprecated_ = emptyIntList();
        deprecated_ = emptyIntList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestFieldFlags_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldFlags getDefaultInstanceForType() {
        return foo.TestFull.TestFieldFlags.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestFieldFlags build() {
        foo.TestFull.TestFieldFlags result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestFieldFlags buildPartial() {
        foo.TestFull.TestFieldFlags result = new foo.TestFull.TestFieldFlags(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestFieldFlags result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.noFlags1_ = noFlags1_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.noFlags2_ = noFlags2_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          noFlags3_.makeImmutable();
          result.noFlags3_ = noFlags3_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          packed_.makeImmutable();
          result.packed_ = packed_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          packedDeprecated_.makeImmutable();
          result.packedDeprecated_ = packedDeprecated_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          deprecated_.makeImmutable();
          result.deprecated_ = deprecated_;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestFieldFlags) {
          return mergeFrom((foo.TestFull.TestFieldFlags)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestFieldFlags other) {
        if (other == foo.TestFull.TestFieldFlags.getDefaultInstance()) return this;
        if (other.hasNoFlags1()) {
          setNoFlags1(other.getNoFlags1());
        }
        if (other.hasNoFlags2()) {
          setNoFlags2(other.getNoFlags2());
        }
        if (!other.noFlags3_.isEmpty()) {
          if (noFlags3_.isEmpty()) {
            noFlags3_ = other.noFlags3_;
            noFlags3_.makeImmutable();
            bitField0_ |= 0x00000004;
          } else {
            ensureNoFlags3IsMutable();
            noFlags3_.addAll(other.noFlags3_);
          }
          onChanged();
        }
        if (!other.packed_.isEmpty()) {
          if (packed_.isEmpty()) {
            packed_ = other.packed_;
            packed_.makeImmutable();
            bitField0_ |= 0x00000008;
          } else {
            ensurePackedIsMutable();
            packed_.addAll(other.packed_);
          }
          onChanged();
        }
        if (!other.packedDeprecated_.isEmpty()) {
          if (packedDeprecated_.isEmpty()) {
            packedDeprecated_ = other.packedDeprecated_;
            packedDeprecated_.makeImmutable();
            bitField0_ |= 0x00000010;
          } else {
            ensurePackedDeprecatedIsMutable();
            packedDeprecated_.addAll(other.packedDeprecated_);
          }
          onChanged();
        }
        if (!other.deprecated_.isEmpty()) {
          if (deprecated_.isEmpty()) {
            deprecated_ = other.deprecated_;
            deprecated_.makeImmutable();
            bitField0_ |= 0x00000020;
          } else {
            ensureDeprecatedIsMutable();
            deprecated_.addAll(other.deprecated_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasNoFlags2()) {
          return false;
        }
        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: {
                noFlags1_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                noFlags2_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                int v = input.readInt32();
                ensureNoFlags3IsMutable();
                noFlags3_.addInt(v);
                break;
              } // case 24
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureNoFlags3IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  noFlags3_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 26
              case 32: {
                int v = input.readInt32();
                ensurePackedIsMutable();
                packed_.addInt(v);
                break;
              } // case 32
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensurePackedIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  packed_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 34
              case 40: {
                int v = input.readInt32();
                ensurePackedDeprecatedIsMutable();
                packedDeprecated_.addInt(v);
                break;
              } // case 40
              case 42: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensurePackedDeprecatedIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  packedDeprecated_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 42
              case 48: {
                int v = input.readInt32();
                ensureDeprecatedIsMutable();
                deprecated_.addInt(v);
                break;
              } // case 48
              case 50: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureDeprecatedIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  deprecated_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 50
              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 noFlags1_ ;
      /**
       * <code>optional int32 no_flags1 = 1;</code>
       * @return Whether the noFlags1 field is set.
       */
      @java.lang.Override
      public boolean hasNoFlags1() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional int32 no_flags1 = 1;</code>
       * @return The noFlags1.
       */
      @java.lang.Override
      public int getNoFlags1() {
        return noFlags1_;
      }
      /**
       * <code>optional int32 no_flags1 = 1;</code>
       * @param value The noFlags1 to set.
       * @return This builder for chaining.
       */
      public Builder setNoFlags1(int value) {

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

      private int noFlags2_ ;
      /**
       * <code>required int32 no_flags2 = 2;</code>
       * @return Whether the noFlags2 field is set.
       */
      @java.lang.Override
      public boolean hasNoFlags2() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required int32 no_flags2 = 2;</code>
       * @return The noFlags2.
       */
      @java.lang.Override
      public int getNoFlags2() {
        return noFlags2_;
      }
      /**
       * <code>required int32 no_flags2 = 2;</code>
       * @param value The noFlags2 to set.
       * @return This builder for chaining.
       */
      public Builder setNoFlags2(int value) {

        noFlags2_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 no_flags2 = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNoFlags2() {
        bitField0_ = (bitField0_ & ~0x00000002);
        noFlags2_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList noFlags3_ = emptyIntList();
      private void ensureNoFlags3IsMutable() {
        if (!noFlags3_.isModifiable()) {
          noFlags3_ = mutableCopy(noFlags3_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <code>repeated int32 no_flags3 = 3;</code>
       * @return A list containing the noFlags3.
       */
      public java.util.List<java.lang.Integer>
          getNoFlags3List() {
        noFlags3_.makeImmutable();
        return noFlags3_;
      }
      /**
       * <code>repeated int32 no_flags3 = 3;</code>
       * @return The count of noFlags3.
       */
      public int getNoFlags3Count() {
        return noFlags3_.size();
      }
      /**
       * <code>repeated int32 no_flags3 = 3;</code>
       * @param index The index of the element to return.
       * @return The noFlags3 at the given index.
       */
      public int getNoFlags3(int index) {
        return noFlags3_.getInt(index);
      }
      /**
       * <code>repeated int32 no_flags3 = 3;</code>
       * @param index The index to set the value at.
       * @param value The noFlags3 to set.
       * @return This builder for chaining.
       */
      public Builder setNoFlags3(
          int index, int value) {

        ensureNoFlags3IsMutable();
        noFlags3_.setInt(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 no_flags3 = 3;</code>
       * @param value The noFlags3 to add.
       * @return This builder for chaining.
       */
      public Builder addNoFlags3(int value) {

        ensureNoFlags3IsMutable();
        noFlags3_.addInt(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 no_flags3 = 3;</code>
       * @param values The noFlags3 to add.
       * @return This builder for chaining.
       */
      public Builder addAllNoFlags3(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureNoFlags3IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, noFlags3_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 no_flags3 = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearNoFlags3() {
        noFlags3_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList packed_ = emptyIntList();
      private void ensurePackedIsMutable() {
        if (!packed_.isModifiable()) {
          packed_ = mutableCopy(packed_);
        }
        bitField0_ |= 0x00000008;
      }
      /**
       * <code>repeated int32 packed = 4 [packed = true];</code>
       * @return A list containing the packed.
       */
      public java.util.List<java.lang.Integer>
          getPackedList() {
        packed_.makeImmutable();
        return packed_;
      }
      /**
       * <code>repeated int32 packed = 4 [packed = true];</code>
       * @return The count of packed.
       */
      public int getPackedCount() {
        return packed_.size();
      }
      /**
       * <code>repeated int32 packed = 4 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The packed at the given index.
       */
      public int getPacked(int index) {
        return packed_.getInt(index);
      }
      /**
       * <code>repeated int32 packed = 4 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The packed to set.
       * @return This builder for chaining.
       */
      public Builder setPacked(
          int index, int value) {

        ensurePackedIsMutable();
        packed_.setInt(index, value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 packed = 4 [packed = true];</code>
       * @param value The packed to add.
       * @return This builder for chaining.
       */
      public Builder addPacked(int value) {

        ensurePackedIsMutable();
        packed_.addInt(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 packed = 4 [packed = true];</code>
       * @param values The packed to add.
       * @return This builder for chaining.
       */
      public Builder addAllPacked(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensurePackedIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, packed_);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 packed = 4 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearPacked() {
        packed_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList packedDeprecated_ = emptyIntList();
      private void ensurePackedDeprecatedIsMutable() {
        if (!packedDeprecated_.isModifiable()) {
          packedDeprecated_ = mutableCopy(packedDeprecated_);
        }
        bitField0_ |= 0x00000010;
      }
      /**
       * <code>repeated int32 packed_deprecated = 5 [packed = true, deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.packed_deprecated is deprecated.
       *     See test-full.proto;l=389
       * @return A list containing the packedDeprecated.
       */
      @java.lang.Deprecated public java.util.List<java.lang.Integer>
          getPackedDeprecatedList() {
        packedDeprecated_.makeImmutable();
        return packedDeprecated_;
      }
      /**
       * <code>repeated int32 packed_deprecated = 5 [packed = true, deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.packed_deprecated is deprecated.
       *     See test-full.proto;l=389
       * @return The count of packedDeprecated.
       */
      @java.lang.Deprecated public int getPackedDeprecatedCount() {
        return packedDeprecated_.size();
      }
      /**
       * <code>repeated int32 packed_deprecated = 5 [packed = true, deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.packed_deprecated is deprecated.
       *     See test-full.proto;l=389
       * @param index The index of the element to return.
       * @return The packedDeprecated at the given index.
       */
      @java.lang.Deprecated public int getPackedDeprecated(int index) {
        return packedDeprecated_.getInt(index);
      }
      /**
       * <code>repeated int32 packed_deprecated = 5 [packed = true, deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.packed_deprecated is deprecated.
       *     See test-full.proto;l=389
       * @param index The index to set the value at.
       * @param value The packedDeprecated to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setPackedDeprecated(
          int index, int value) {

        ensurePackedDeprecatedIsMutable();
        packedDeprecated_.setInt(index, value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 packed_deprecated = 5 [packed = true, deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.packed_deprecated is deprecated.
       *     See test-full.proto;l=389
       * @param value The packedDeprecated to add.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder addPackedDeprecated(int value) {

        ensurePackedDeprecatedIsMutable();
        packedDeprecated_.addInt(value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 packed_deprecated = 5 [packed = true, deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.packed_deprecated is deprecated.
       *     See test-full.proto;l=389
       * @param values The packedDeprecated to add.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder addAllPackedDeprecated(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensurePackedDeprecatedIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, packedDeprecated_);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 packed_deprecated = 5 [packed = true, deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.packed_deprecated is deprecated.
       *     See test-full.proto;l=389
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearPackedDeprecated() {
        packedDeprecated_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList deprecated_ = emptyIntList();
      private void ensureDeprecatedIsMutable() {
        if (!deprecated_.isModifiable()) {
          deprecated_ = mutableCopy(deprecated_);
        }
        bitField0_ |= 0x00000020;
      }
      /**
       * <code>repeated int32 deprecated = 6 [deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.deprecated is deprecated.
       *     See test-full.proto;l=390
       * @return A list containing the deprecated.
       */
      @java.lang.Deprecated public java.util.List<java.lang.Integer>
          getDeprecatedList() {
        deprecated_.makeImmutable();
        return deprecated_;
      }
      /**
       * <code>repeated int32 deprecated = 6 [deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.deprecated is deprecated.
       *     See test-full.proto;l=390
       * @return The count of deprecated.
       */
      @java.lang.Deprecated public int getDeprecatedCount() {
        return deprecated_.size();
      }
      /**
       * <code>repeated int32 deprecated = 6 [deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.deprecated is deprecated.
       *     See test-full.proto;l=390
       * @param index The index of the element to return.
       * @return The deprecated at the given index.
       */
      @java.lang.Deprecated public int getDeprecated(int index) {
        return deprecated_.getInt(index);
      }
      /**
       * <code>repeated int32 deprecated = 6 [deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.deprecated is deprecated.
       *     See test-full.proto;l=390
       * @param index The index to set the value at.
       * @param value The deprecated to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setDeprecated(
          int index, int value) {

        ensureDeprecatedIsMutable();
        deprecated_.setInt(index, value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 deprecated = 6 [deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.deprecated is deprecated.
       *     See test-full.proto;l=390
       * @param value The deprecated to add.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder addDeprecated(int value) {

        ensureDeprecatedIsMutable();
        deprecated_.addInt(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 deprecated = 6 [deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.deprecated is deprecated.
       *     See test-full.proto;l=390
       * @param values The deprecated to add.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder addAllDeprecated(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureDeprecatedIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, deprecated_);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 deprecated = 6 [deprecated = true];</code>
       * @deprecated foo.TestFieldFlags.deprecated is deprecated.
       *     See test-full.proto;l=390
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearDeprecated() {
        deprecated_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000020);
        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:foo.TestFieldFlags)
    }

    // @@protoc_insertion_point(class_scope:foo.TestFieldFlags)
    private static final foo.TestFull.TestFieldFlags DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestFieldFlags();
    }

    public static foo.TestFull.TestFieldFlags getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestFieldFlags getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessageCheckOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessageCheck)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
     * @return Whether the requiredMsg field is set.
     */
    boolean hasRequiredMsg();
    /**
     * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
     * @return The requiredMsg.
     */
    foo.TestFull.TestMessageCheck.SubMessage getRequiredMsg();
    /**
     * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
     */
    foo.TestFull.TestMessageCheck.SubMessageOrBuilder getRequiredMsgOrBuilder();

    /**
     * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
     */
    java.util.List<foo.TestFull.TestMessageCheck.SubMessage> 
        getRepeatedMsgList();
    /**
     * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
     */
    foo.TestFull.TestMessageCheck.SubMessage getRepeatedMsg(int index);
    /**
     * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
     */
    int getRepeatedMsgCount();
    /**
     * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
     */
    java.util.List<? extends foo.TestFull.TestMessageCheck.SubMessageOrBuilder> 
        getRepeatedMsgOrBuilderList();
    /**
     * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
     */
    foo.TestFull.TestMessageCheck.SubMessageOrBuilder getRepeatedMsgOrBuilder(
        int index);

    /**
     * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
     * @return Whether the optionalMsg field is set.
     */
    boolean hasOptionalMsg();
    /**
     * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
     * @return The optionalMsg.
     */
    foo.TestFull.TestMessageCheck.SubMessage getOptionalMsg();
    /**
     * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
     */
    foo.TestFull.TestMessageCheck.SubMessageOrBuilder getOptionalMsgOrBuilder();

    /**
     * <code>required string required_string = 4;</code>
     * @return Whether the requiredString field is set.
     */
    boolean hasRequiredString();
    /**
     * <code>required string required_string = 4;</code>
     * @return The requiredString.
     */
    java.lang.String getRequiredString();
    /**
     * <code>required string required_string = 4;</code>
     * @return The bytes for requiredString.
     */
    com.google.protobuf.ByteString
        getRequiredStringBytes();

    /**
     * <code>repeated string repeated_string = 5;</code>
     * @return A list containing the repeatedString.
     */
    java.util.List<java.lang.String>
        getRepeatedStringList();
    /**
     * <code>repeated string repeated_string = 5;</code>
     * @return The count of repeatedString.
     */
    int getRepeatedStringCount();
    /**
     * <code>repeated string repeated_string = 5;</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 = 5;</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>optional string optional_string = 6;</code>
     * @return Whether the optionalString field is set.
     */
    boolean hasOptionalString();
    /**
     * <code>optional string optional_string = 6;</code>
     * @return The optionalString.
     */
    java.lang.String getOptionalString();
    /**
     * <code>optional string optional_string = 6;</code>
     * @return The bytes for optionalString.
     */
    com.google.protobuf.ByteString
        getOptionalStringBytes();

    /**
     * <code>required bytes required_bytes = 7;</code>
     * @return Whether the requiredBytes field is set.
     */
    boolean hasRequiredBytes();
    /**
     * <code>required bytes required_bytes = 7;</code>
     * @return The requiredBytes.
     */
    com.google.protobuf.ByteString getRequiredBytes();

    /**
     * <code>repeated bytes repeated_bytes = 8;</code>
     * @return A list containing the repeatedBytes.
     */
    java.util.List<com.google.protobuf.ByteString> getRepeatedBytesList();
    /**
     * <code>repeated bytes repeated_bytes = 8;</code>
     * @return The count of repeatedBytes.
     */
    int getRepeatedBytesCount();
    /**
     * <code>repeated bytes repeated_bytes = 8;</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>optional bytes optional_bytes = 9;</code>
     * @return Whether the optionalBytes field is set.
     */
    boolean hasOptionalBytes();
    /**
     * <code>optional bytes optional_bytes = 9;</code>
     * @return The optionalBytes.
     */
    com.google.protobuf.ByteString getOptionalBytes();
  }
  /**
   * Protobuf type {@code foo.TestMessageCheck}
   */
  public static final class TestMessageCheck extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessageCheck)
      TestMessageCheckOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessageCheck.newBuilder() to construct.
    private TestMessageCheck(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessageCheck() {
      repeatedMsg_ = java.util.Collections.emptyList();
      requiredString_ = "";
      repeatedString_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      optionalString_ = "";
      requiredBytes_ = com.google.protobuf.ByteString.EMPTY;
      repeatedBytes_ = java.util.Collections.emptyList();
      optionalBytes_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessageCheck_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessageCheck_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessageCheck.class, foo.TestFull.TestMessageCheck.Builder.class);
    }

    public interface SubMessageOrBuilder extends
        // @@protoc_insertion_point(interface_extends:foo.TestMessageCheck.SubMessage)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>required string str = 1;</code>
       * @return Whether the str field is set.
       */
      boolean hasStr();
      /**
       * <code>required string str = 1;</code>
       * @return The str.
       */
      java.lang.String getStr();
      /**
       * <code>required string str = 1;</code>
       * @return The bytes for str.
       */
      com.google.protobuf.ByteString
          getStrBytes();
    }
    /**
     * Protobuf type {@code foo.TestMessageCheck.SubMessage}
     */
    public static final class SubMessage extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:foo.TestMessageCheck.SubMessage)
        SubMessageOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SubMessage.newBuilder() to construct.
      private SubMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SubMessage() {
        str_ = "";
      }

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return foo.TestFull.internal_static_foo_TestMessageCheck_SubMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessageCheck_SubMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessageCheck.SubMessage.class, foo.TestFull.TestMessageCheck.SubMessage.Builder.class);
      }

      private int bitField0_;
      public static final int STR_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object str_ = "";
      /**
       * <code>required string str = 1;</code>
       * @return Whether the str field is set.
       */
      @java.lang.Override
      public boolean hasStr() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string str = 1;</code>
       * @return The str.
       */
      @java.lang.Override
      public java.lang.String getStr() {
        java.lang.Object ref = str_;
        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 (bs.isValidUtf8()) {
            str_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string str = 1;</code>
       * @return The bytes for str.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getStrBytes() {
        java.lang.Object ref = str_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          str_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

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

        if (!hasStr()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, str_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, str_);
        }
        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 foo.TestFull.TestMessageCheck.SubMessage)) {
          return super.equals(obj);
        }
        foo.TestFull.TestMessageCheck.SubMessage other = (foo.TestFull.TestMessageCheck.SubMessage) obj;

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

      public static foo.TestFull.TestMessageCheck.SubMessage parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static foo.TestFull.TestMessageCheck.SubMessage parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static foo.TestFull.TestMessageCheck.SubMessage parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static foo.TestFull.TestMessageCheck.SubMessage parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static foo.TestFull.TestMessageCheck.SubMessage parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static foo.TestFull.TestMessageCheck.SubMessage parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static foo.TestFull.TestMessageCheck.SubMessage parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static foo.TestFull.TestMessageCheck.SubMessage 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 foo.TestFull.TestMessageCheck.SubMessage parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static foo.TestFull.TestMessageCheck.SubMessage 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 foo.TestFull.TestMessageCheck.SubMessage parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static foo.TestFull.TestMessageCheck.SubMessage 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(foo.TestFull.TestMessageCheck.SubMessage 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 foo.TestMessageCheck.SubMessage}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:foo.TestMessageCheck.SubMessage)
          foo.TestFull.TestMessageCheck.SubMessageOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return foo.TestFull.internal_static_foo_TestMessageCheck_SubMessage_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return foo.TestFull.internal_static_foo_TestMessageCheck_SubMessage_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  foo.TestFull.TestMessageCheck.SubMessage.class, foo.TestFull.TestMessageCheck.SubMessage.Builder.class);
        }

        // Construct using foo.TestFull.TestMessageCheck.SubMessage.newBuilder()
        private Builder() {

        }

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

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

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return foo.TestFull.internal_static_foo_TestMessageCheck_SubMessage_descriptor;
        }

        @java.lang.Override
        public foo.TestFull.TestMessageCheck.SubMessage getDefaultInstanceForType() {
          return foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance();
        }

        @java.lang.Override
        public foo.TestFull.TestMessageCheck.SubMessage build() {
          foo.TestFull.TestMessageCheck.SubMessage result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public foo.TestFull.TestMessageCheck.SubMessage buildPartial() {
          foo.TestFull.TestMessageCheck.SubMessage result = new foo.TestFull.TestMessageCheck.SubMessage(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(foo.TestFull.TestMessageCheck.SubMessage result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.str_ = str_;
            to_bitField0_ |= 0x00000001;
          }
          result.bitField0_ |= to_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 foo.TestFull.TestMessageCheck.SubMessage) {
            return mergeFrom((foo.TestFull.TestMessageCheck.SubMessage)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(foo.TestFull.TestMessageCheck.SubMessage other) {
          if (other == foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance()) return this;
          if (other.hasStr()) {
            str_ = other.str_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

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

        private java.lang.Object str_ = "";
        /**
         * <code>required string str = 1;</code>
         * @return Whether the str field is set.
         */
        public boolean hasStr() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string str = 1;</code>
         * @return The str.
         */
        public java.lang.String getStr() {
          java.lang.Object ref = str_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              str_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string str = 1;</code>
         * @return The bytes for str.
         */
        public com.google.protobuf.ByteString
            getStrBytes() {
          java.lang.Object ref = str_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            str_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string str = 1;</code>
         * @param value The str to set.
         * @return This builder for chaining.
         */
        public Builder setStr(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          str_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>required string str = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearStr() {
          str_ = getDefaultInstance().getStr();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>required string str = 1;</code>
         * @param value The bytes for str to set.
         * @return This builder for chaining.
         */
        public Builder setStrBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          str_ = value;
          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:foo.TestMessageCheck.SubMessage)
      }

      // @@protoc_insertion_point(class_scope:foo.TestMessageCheck.SubMessage)
      private static final foo.TestFull.TestMessageCheck.SubMessage DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new foo.TestFull.TestMessageCheck.SubMessage();
      }

      public static foo.TestFull.TestMessageCheck.SubMessage getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

      @java.lang.Override
      public foo.TestFull.TestMessageCheck.SubMessage getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int REQUIRED_MSG_FIELD_NUMBER = 1;
    private foo.TestFull.TestMessageCheck.SubMessage requiredMsg_;
    /**
     * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
     * @return Whether the requiredMsg field is set.
     */
    @java.lang.Override
    public boolean hasRequiredMsg() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
     * @return The requiredMsg.
     */
    @java.lang.Override
    public foo.TestFull.TestMessageCheck.SubMessage getRequiredMsg() {
      return requiredMsg_ == null ? foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance() : requiredMsg_;
    }
    /**
     * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
     */
    @java.lang.Override
    public foo.TestFull.TestMessageCheck.SubMessageOrBuilder getRequiredMsgOrBuilder() {
      return requiredMsg_ == null ? foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance() : requiredMsg_;
    }

    public static final int REPEATED_MSG_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<foo.TestFull.TestMessageCheck.SubMessage> repeatedMsg_;
    /**
     * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
     */
    @java.lang.Override
    public java.util.List<foo.TestFull.TestMessageCheck.SubMessage> getRepeatedMsgList() {
      return repeatedMsg_;
    }
    /**
     * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends foo.TestFull.TestMessageCheck.SubMessageOrBuilder> 
        getRepeatedMsgOrBuilderList() {
      return repeatedMsg_;
    }
    /**
     * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
     */
    @java.lang.Override
    public int getRepeatedMsgCount() {
      return repeatedMsg_.size();
    }
    /**
     * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
     */
    @java.lang.Override
    public foo.TestFull.TestMessageCheck.SubMessage getRepeatedMsg(int index) {
      return repeatedMsg_.get(index);
    }
    /**
     * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
     */
    @java.lang.Override
    public foo.TestFull.TestMessageCheck.SubMessageOrBuilder getRepeatedMsgOrBuilder(
        int index) {
      return repeatedMsg_.get(index);
    }

    public static final int OPTIONAL_MSG_FIELD_NUMBER = 3;
    private foo.TestFull.TestMessageCheck.SubMessage optionalMsg_;
    /**
     * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
     * @return Whether the optionalMsg field is set.
     */
    @java.lang.Override
    public boolean hasOptionalMsg() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
     * @return The optionalMsg.
     */
    @java.lang.Override
    public foo.TestFull.TestMessageCheck.SubMessage getOptionalMsg() {
      return optionalMsg_ == null ? foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance() : optionalMsg_;
    }
    /**
     * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
     */
    @java.lang.Override
    public foo.TestFull.TestMessageCheck.SubMessageOrBuilder getOptionalMsgOrBuilder() {
      return optionalMsg_ == null ? foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance() : optionalMsg_;
    }

    public static final int REQUIRED_STRING_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object requiredString_ = "";
    /**
     * <code>required string required_string = 4;</code>
     * @return Whether the requiredString field is set.
     */
    @java.lang.Override
    public boolean hasRequiredString() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required string required_string = 4;</code>
     * @return The requiredString.
     */
    @java.lang.Override
    public java.lang.String getRequiredString() {
      java.lang.Object ref = requiredString_;
      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 (bs.isValidUtf8()) {
          requiredString_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string required_string = 4;</code>
     * @return The bytes for requiredString.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRequiredStringBytes() {
      java.lang.Object ref = requiredString_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        requiredString_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REPEATED_STRING_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList repeatedString_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <code>repeated string repeated_string = 5;</code>
     * @return A list containing the repeatedString.
     */
    public com.google.protobuf.ProtocolStringList
        getRepeatedStringList() {
      return repeatedString_;
    }
    /**
     * <code>repeated string repeated_string = 5;</code>
     * @return The count of repeatedString.
     */
    public int getRepeatedStringCount() {
      return repeatedString_.size();
    }
    /**
     * <code>repeated string repeated_string = 5;</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 = 5;</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 OPTIONAL_STRING_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object optionalString_ = "";
    /**
     * <code>optional string optional_string = 6;</code>
     * @return Whether the optionalString field is set.
     */
    @java.lang.Override
    public boolean hasOptionalString() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional string optional_string = 6;</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();
        if (bs.isValidUtf8()) {
          optionalString_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string optional_string = 6;</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 REQUIRED_BYTES_FIELD_NUMBER = 7;
    private com.google.protobuf.ByteString requiredBytes_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>required bytes required_bytes = 7;</code>
     * @return Whether the requiredBytes field is set.
     */
    @java.lang.Override
    public boolean hasRequiredBytes() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>required bytes required_bytes = 7;</code>
     * @return The requiredBytes.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getRequiredBytes() {
      return requiredBytes_;
    }

    public static final int REPEATED_BYTES_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private java.util.List<com.google.protobuf.ByteString> repeatedBytes_ =
        java.util.Collections.emptyList();
    /**
     * <code>repeated bytes repeated_bytes = 8;</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 = 8;</code>
     * @return The count of repeatedBytes.
     */
    public int getRepeatedBytesCount() {
      return repeatedBytes_.size();
    }
    /**
     * <code>repeated bytes repeated_bytes = 8;</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 OPTIONAL_BYTES_FIELD_NUMBER = 9;
    private com.google.protobuf.ByteString optionalBytes_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>optional bytes optional_bytes = 9;</code>
     * @return Whether the optionalBytes field is set.
     */
    @java.lang.Override
    public boolean hasOptionalBytes() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional bytes optional_bytes = 9;</code>
     * @return The optionalBytes.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getOptionalBytes() {
      return optionalBytes_;
    }

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

      if (!hasRequiredMsg()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRequiredString()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRequiredBytes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getRequiredMsg().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getRepeatedMsgCount(); i++) {
        if (!getRepeatedMsg(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasOptionalMsg()) {
        if (!getOptionalMsg().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRequiredMsg());
      }
      for (int i = 0; i < repeatedMsg_.size(); i++) {
        output.writeMessage(2, repeatedMsg_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(3, getOptionalMsg());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, requiredString_);
      }
      for (int i = 0; i < repeatedString_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, repeatedString_.getRaw(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, optionalString_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeBytes(7, requiredBytes_);
      }
      for (int i = 0; i < repeatedBytes_.size(); i++) {
        output.writeBytes(8, repeatedBytes_.get(i));
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeBytes(9, optionalBytes_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRequiredMsg());
      }
      for (int i = 0; i < repeatedMsg_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, repeatedMsg_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getOptionalMsg());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, requiredString_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeatedString_.size(); i++) {
          dataSize += computeStringSizeNoTag(repeatedString_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getRepeatedStringList().size();
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, optionalString_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, requiredBytes_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeatedBytes_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(repeatedBytes_.get(i));
        }
        size += dataSize;
        size += 1 * getRepeatedBytesList().size();
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(9, optionalBytes_);
      }
      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 foo.TestFull.TestMessageCheck)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessageCheck other = (foo.TestFull.TestMessageCheck) obj;

      if (hasRequiredMsg() != other.hasRequiredMsg()) return false;
      if (hasRequiredMsg()) {
        if (!getRequiredMsg()
            .equals(other.getRequiredMsg())) return false;
      }
      if (!getRepeatedMsgList()
          .equals(other.getRepeatedMsgList())) return false;
      if (hasOptionalMsg() != other.hasOptionalMsg()) return false;
      if (hasOptionalMsg()) {
        if (!getOptionalMsg()
            .equals(other.getOptionalMsg())) return false;
      }
      if (hasRequiredString() != other.hasRequiredString()) return false;
      if (hasRequiredString()) {
        if (!getRequiredString()
            .equals(other.getRequiredString())) return false;
      }
      if (!getRepeatedStringList()
          .equals(other.getRepeatedStringList())) return false;
      if (hasOptionalString() != other.hasOptionalString()) return false;
      if (hasOptionalString()) {
        if (!getOptionalString()
            .equals(other.getOptionalString())) return false;
      }
      if (hasRequiredBytes() != other.hasRequiredBytes()) return false;
      if (hasRequiredBytes()) {
        if (!getRequiredBytes()
            .equals(other.getRequiredBytes())) return false;
      }
      if (!getRepeatedBytesList()
          .equals(other.getRepeatedBytesList())) return false;
      if (hasOptionalBytes() != other.hasOptionalBytes()) return false;
      if (hasOptionalBytes()) {
        if (!getOptionalBytes()
            .equals(other.getOptionalBytes())) 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 (hasRequiredMsg()) {
        hash = (37 * hash) + REQUIRED_MSG_FIELD_NUMBER;
        hash = (53 * hash) + getRequiredMsg().hashCode();
      }
      if (getRepeatedMsgCount() > 0) {
        hash = (37 * hash) + REPEATED_MSG_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedMsgList().hashCode();
      }
      if (hasOptionalMsg()) {
        hash = (37 * hash) + OPTIONAL_MSG_FIELD_NUMBER;
        hash = (53 * hash) + getOptionalMsg().hashCode();
      }
      if (hasRequiredString()) {
        hash = (37 * hash) + REQUIRED_STRING_FIELD_NUMBER;
        hash = (53 * hash) + getRequiredString().hashCode();
      }
      if (getRepeatedStringCount() > 0) {
        hash = (37 * hash) + REPEATED_STRING_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedStringList().hashCode();
      }
      if (hasOptionalString()) {
        hash = (37 * hash) + OPTIONAL_STRING_FIELD_NUMBER;
        hash = (53 * hash) + getOptionalString().hashCode();
      }
      if (hasRequiredBytes()) {
        hash = (37 * hash) + REQUIRED_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + getRequiredBytes().hashCode();
      }
      if (getRepeatedBytesCount() > 0) {
        hash = (37 * hash) + REPEATED_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedBytesList().hashCode();
      }
      if (hasOptionalBytes()) {
        hash = (37 * hash) + OPTIONAL_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + getOptionalBytes().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessageCheck_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessageCheck.class, foo.TestFull.TestMessageCheck.Builder.class);
      }

      // Construct using foo.TestFull.TestMessageCheck.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRequiredMsgFieldBuilder();
          getRepeatedMsgFieldBuilder();
          getOptionalMsgFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        requiredMsg_ = null;
        if (requiredMsgBuilder_ != null) {
          requiredMsgBuilder_.dispose();
          requiredMsgBuilder_ = null;
        }
        if (repeatedMsgBuilder_ == null) {
          repeatedMsg_ = java.util.Collections.emptyList();
        } else {
          repeatedMsg_ = null;
          repeatedMsgBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        optionalMsg_ = null;
        if (optionalMsgBuilder_ != null) {
          optionalMsgBuilder_.dispose();
          optionalMsgBuilder_ = null;
        }
        requiredString_ = "";
        repeatedString_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        optionalString_ = "";
        requiredBytes_ = com.google.protobuf.ByteString.EMPTY;
        repeatedBytes_ = java.util.Collections.emptyList();
        optionalBytes_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessageCheck_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessageCheck getDefaultInstanceForType() {
        return foo.TestFull.TestMessageCheck.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessageCheck build() {
        foo.TestFull.TestMessageCheck result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessageCheck buildPartial() {
        foo.TestFull.TestMessageCheck result = new foo.TestFull.TestMessageCheck(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(foo.TestFull.TestMessageCheck result) {
        if (repeatedMsgBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            repeatedMsg_ = java.util.Collections.unmodifiableList(repeatedMsg_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.repeatedMsg_ = repeatedMsg_;
        } else {
          result.repeatedMsg_ = repeatedMsgBuilder_.build();
        }
        if (((bitField0_ & 0x00000080) != 0)) {
          repeatedBytes_ = java.util.Collections.unmodifiableList(repeatedBytes_);
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.repeatedBytes_ = repeatedBytes_;
      }

      private void buildPartial0(foo.TestFull.TestMessageCheck result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.requiredMsg_ = requiredMsgBuilder_ == null
              ? requiredMsg_
              : requiredMsgBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.optionalMsg_ = optionalMsgBuilder_ == null
              ? optionalMsg_
              : optionalMsgBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.requiredString_ = requiredString_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          repeatedString_.makeImmutable();
          result.repeatedString_ = repeatedString_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.optionalString_ = optionalString_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.requiredBytes_ = requiredBytes_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.optionalBytes_ = optionalBytes_;
          to_bitField0_ |= 0x00000020;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessageCheck) {
          return mergeFrom((foo.TestFull.TestMessageCheck)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessageCheck other) {
        if (other == foo.TestFull.TestMessageCheck.getDefaultInstance()) return this;
        if (other.hasRequiredMsg()) {
          mergeRequiredMsg(other.getRequiredMsg());
        }
        if (repeatedMsgBuilder_ == null) {
          if (!other.repeatedMsg_.isEmpty()) {
            if (repeatedMsg_.isEmpty()) {
              repeatedMsg_ = other.repeatedMsg_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureRepeatedMsgIsMutable();
              repeatedMsg_.addAll(other.repeatedMsg_);
            }
            onChanged();
          }
        } else {
          if (!other.repeatedMsg_.isEmpty()) {
            if (repeatedMsgBuilder_.isEmpty()) {
              repeatedMsgBuilder_.dispose();
              repeatedMsgBuilder_ = null;
              repeatedMsg_ = other.repeatedMsg_;
              bitField0_ = (bitField0_ & ~0x00000002);
              repeatedMsgBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRepeatedMsgFieldBuilder() : null;
            } else {
              repeatedMsgBuilder_.addAllMessages(other.repeatedMsg_);
            }
          }
        }
        if (other.hasOptionalMsg()) {
          mergeOptionalMsg(other.getOptionalMsg());
        }
        if (other.hasRequiredString()) {
          requiredString_ = other.requiredString_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (!other.repeatedString_.isEmpty()) {
          if (repeatedString_.isEmpty()) {
            repeatedString_ = other.repeatedString_;
            bitField0_ |= 0x00000010;
          } else {
            ensureRepeatedStringIsMutable();
            repeatedString_.addAll(other.repeatedString_);
          }
          onChanged();
        }
        if (other.hasOptionalString()) {
          optionalString_ = other.optionalString_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasRequiredBytes()) {
          setRequiredBytes(other.getRequiredBytes());
        }
        if (!other.repeatedBytes_.isEmpty()) {
          if (repeatedBytes_.isEmpty()) {
            repeatedBytes_ = other.repeatedBytes_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureRepeatedBytesIsMutable();
            repeatedBytes_.addAll(other.repeatedBytes_);
          }
          onChanged();
        }
        if (other.hasOptionalBytes()) {
          setOptionalBytes(other.getOptionalBytes());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasRequiredMsg()) {
          return false;
        }
        if (!hasRequiredString()) {
          return false;
        }
        if (!hasRequiredBytes()) {
          return false;
        }
        if (!getRequiredMsg().isInitialized()) {
          return false;
        }
        for (int i = 0; i < getRepeatedMsgCount(); i++) {
          if (!getRepeatedMsg(i).isInitialized()) {
            return false;
          }
        }
        if (hasOptionalMsg()) {
          if (!getOptionalMsg().isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getRequiredMsgFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                foo.TestFull.TestMessageCheck.SubMessage m =
                    input.readMessage(
                        foo.TestFull.TestMessageCheck.SubMessage.PARSER,
                        extensionRegistry);
                if (repeatedMsgBuilder_ == null) {
                  ensureRepeatedMsgIsMutable();
                  repeatedMsg_.add(m);
                } else {
                  repeatedMsgBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getOptionalMsgFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                requiredString_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureRepeatedStringIsMutable();
                repeatedString_.add(bs);
                break;
              } // case 42
              case 50: {
                optionalString_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                requiredBytes_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                com.google.protobuf.ByteString v = input.readBytes();
                ensureRepeatedBytesIsMutable();
                repeatedBytes_.add(v);
                break;
              } // case 66
              case 74: {
                optionalBytes_ = input.readBytes();
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private foo.TestFull.TestMessageCheck.SubMessage requiredMsg_;
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.TestMessageCheck.SubMessage, foo.TestFull.TestMessageCheck.SubMessage.Builder, foo.TestFull.TestMessageCheck.SubMessageOrBuilder> requiredMsgBuilder_;
      /**
       * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
       * @return Whether the requiredMsg field is set.
       */
      public boolean hasRequiredMsg() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
       * @return The requiredMsg.
       */
      public foo.TestFull.TestMessageCheck.SubMessage getRequiredMsg() {
        if (requiredMsgBuilder_ == null) {
          return requiredMsg_ == null ? foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance() : requiredMsg_;
        } else {
          return requiredMsgBuilder_.getMessage();
        }
      }
      /**
       * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
       */
      public Builder setRequiredMsg(foo.TestFull.TestMessageCheck.SubMessage value) {
        if (requiredMsgBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          requiredMsg_ = value;
        } else {
          requiredMsgBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
       */
      public Builder setRequiredMsg(
          foo.TestFull.TestMessageCheck.SubMessage.Builder builderForValue) {
        if (requiredMsgBuilder_ == null) {
          requiredMsg_ = builderForValue.build();
        } else {
          requiredMsgBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
       */
      public Builder mergeRequiredMsg(foo.TestFull.TestMessageCheck.SubMessage value) {
        if (requiredMsgBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            requiredMsg_ != null &&
            requiredMsg_ != foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance()) {
            getRequiredMsgBuilder().mergeFrom(value);
          } else {
            requiredMsg_ = value;
          }
        } else {
          requiredMsgBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
       */
      public Builder clearRequiredMsg() {
        bitField0_ = (bitField0_ & ~0x00000001);
        requiredMsg_ = null;
        if (requiredMsgBuilder_ != null) {
          requiredMsgBuilder_.dispose();
          requiredMsgBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
       */
      public foo.TestFull.TestMessageCheck.SubMessage.Builder getRequiredMsgBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRequiredMsgFieldBuilder().getBuilder();
      }
      /**
       * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
       */
      public foo.TestFull.TestMessageCheck.SubMessageOrBuilder getRequiredMsgOrBuilder() {
        if (requiredMsgBuilder_ != null) {
          return requiredMsgBuilder_.getMessageOrBuilder();
        } else {
          return requiredMsg_ == null ?
              foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance() : requiredMsg_;
        }
      }
      /**
       * <code>required .foo.TestMessageCheck.SubMessage required_msg = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.TestMessageCheck.SubMessage, foo.TestFull.TestMessageCheck.SubMessage.Builder, foo.TestFull.TestMessageCheck.SubMessageOrBuilder> 
          getRequiredMsgFieldBuilder() {
        if (requiredMsgBuilder_ == null) {
          requiredMsgBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              foo.TestFull.TestMessageCheck.SubMessage, foo.TestFull.TestMessageCheck.SubMessage.Builder, foo.TestFull.TestMessageCheck.SubMessageOrBuilder>(
                  getRequiredMsg(),
                  getParentForChildren(),
                  isClean());
          requiredMsg_ = null;
        }
        return requiredMsgBuilder_;
      }

      private java.util.List<foo.TestFull.TestMessageCheck.SubMessage> repeatedMsg_ =
        java.util.Collections.emptyList();
      private void ensureRepeatedMsgIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          repeatedMsg_ = new java.util.ArrayList<foo.TestFull.TestMessageCheck.SubMessage>(repeatedMsg_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          foo.TestFull.TestMessageCheck.SubMessage, foo.TestFull.TestMessageCheck.SubMessage.Builder, foo.TestFull.TestMessageCheck.SubMessageOrBuilder> repeatedMsgBuilder_;

      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public java.util.List<foo.TestFull.TestMessageCheck.SubMessage> getRepeatedMsgList() {
        if (repeatedMsgBuilder_ == null) {
          return java.util.Collections.unmodifiableList(repeatedMsg_);
        } else {
          return repeatedMsgBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public int getRepeatedMsgCount() {
        if (repeatedMsgBuilder_ == null) {
          return repeatedMsg_.size();
        } else {
          return repeatedMsgBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public foo.TestFull.TestMessageCheck.SubMessage getRepeatedMsg(int index) {
        if (repeatedMsgBuilder_ == null) {
          return repeatedMsg_.get(index);
        } else {
          return repeatedMsgBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public Builder setRepeatedMsg(
          int index, foo.TestFull.TestMessageCheck.SubMessage value) {
        if (repeatedMsgBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRepeatedMsgIsMutable();
          repeatedMsg_.set(index, value);
          onChanged();
        } else {
          repeatedMsgBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public Builder setRepeatedMsg(
          int index, foo.TestFull.TestMessageCheck.SubMessage.Builder builderForValue) {
        if (repeatedMsgBuilder_ == null) {
          ensureRepeatedMsgIsMutable();
          repeatedMsg_.set(index, builderForValue.build());
          onChanged();
        } else {
          repeatedMsgBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public Builder addRepeatedMsg(foo.TestFull.TestMessageCheck.SubMessage value) {
        if (repeatedMsgBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRepeatedMsgIsMutable();
          repeatedMsg_.add(value);
          onChanged();
        } else {
          repeatedMsgBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public Builder addRepeatedMsg(
          int index, foo.TestFull.TestMessageCheck.SubMessage value) {
        if (repeatedMsgBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRepeatedMsgIsMutable();
          repeatedMsg_.add(index, value);
          onChanged();
        } else {
          repeatedMsgBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public Builder addRepeatedMsg(
          foo.TestFull.TestMessageCheck.SubMessage.Builder builderForValue) {
        if (repeatedMsgBuilder_ == null) {
          ensureRepeatedMsgIsMutable();
          repeatedMsg_.add(builderForValue.build());
          onChanged();
        } else {
          repeatedMsgBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public Builder addRepeatedMsg(
          int index, foo.TestFull.TestMessageCheck.SubMessage.Builder builderForValue) {
        if (repeatedMsgBuilder_ == null) {
          ensureRepeatedMsgIsMutable();
          repeatedMsg_.add(index, builderForValue.build());
          onChanged();
        } else {
          repeatedMsgBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public Builder addAllRepeatedMsg(
          java.lang.Iterable<? extends foo.TestFull.TestMessageCheck.SubMessage> values) {
        if (repeatedMsgBuilder_ == null) {
          ensureRepeatedMsgIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, repeatedMsg_);
          onChanged();
        } else {
          repeatedMsgBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public Builder clearRepeatedMsg() {
        if (repeatedMsgBuilder_ == null) {
          repeatedMsg_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          repeatedMsgBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public Builder removeRepeatedMsg(int index) {
        if (repeatedMsgBuilder_ == null) {
          ensureRepeatedMsgIsMutable();
          repeatedMsg_.remove(index);
          onChanged();
        } else {
          repeatedMsgBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public foo.TestFull.TestMessageCheck.SubMessage.Builder getRepeatedMsgBuilder(
          int index) {
        return getRepeatedMsgFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public foo.TestFull.TestMessageCheck.SubMessageOrBuilder getRepeatedMsgOrBuilder(
          int index) {
        if (repeatedMsgBuilder_ == null) {
          return repeatedMsg_.get(index);  } else {
          return repeatedMsgBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public java.util.List<? extends foo.TestFull.TestMessageCheck.SubMessageOrBuilder> 
           getRepeatedMsgOrBuilderList() {
        if (repeatedMsgBuilder_ != null) {
          return repeatedMsgBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(repeatedMsg_);
        }
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public foo.TestFull.TestMessageCheck.SubMessage.Builder addRepeatedMsgBuilder() {
        return getRepeatedMsgFieldBuilder().addBuilder(
            foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance());
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public foo.TestFull.TestMessageCheck.SubMessage.Builder addRepeatedMsgBuilder(
          int index) {
        return getRepeatedMsgFieldBuilder().addBuilder(
            index, foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance());
      }
      /**
       * <code>repeated .foo.TestMessageCheck.SubMessage repeated_msg = 2;</code>
       */
      public java.util.List<foo.TestFull.TestMessageCheck.SubMessage.Builder> 
           getRepeatedMsgBuilderList() {
        return getRepeatedMsgFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          foo.TestFull.TestMessageCheck.SubMessage, foo.TestFull.TestMessageCheck.SubMessage.Builder, foo.TestFull.TestMessageCheck.SubMessageOrBuilder> 
          getRepeatedMsgFieldBuilder() {
        if (repeatedMsgBuilder_ == null) {
          repeatedMsgBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              foo.TestFull.TestMessageCheck.SubMessage, foo.TestFull.TestMessageCheck.SubMessage.Builder, foo.TestFull.TestMessageCheck.SubMessageOrBuilder>(
                  repeatedMsg_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          repeatedMsg_ = null;
        }
        return repeatedMsgBuilder_;
      }

      private foo.TestFull.TestMessageCheck.SubMessage optionalMsg_;
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.TestMessageCheck.SubMessage, foo.TestFull.TestMessageCheck.SubMessage.Builder, foo.TestFull.TestMessageCheck.SubMessageOrBuilder> optionalMsgBuilder_;
      /**
       * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
       * @return Whether the optionalMsg field is set.
       */
      public boolean hasOptionalMsg() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
       * @return The optionalMsg.
       */
      public foo.TestFull.TestMessageCheck.SubMessage getOptionalMsg() {
        if (optionalMsgBuilder_ == null) {
          return optionalMsg_ == null ? foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance() : optionalMsg_;
        } else {
          return optionalMsgBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
       */
      public Builder setOptionalMsg(foo.TestFull.TestMessageCheck.SubMessage value) {
        if (optionalMsgBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          optionalMsg_ = value;
        } else {
          optionalMsgBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
       */
      public Builder setOptionalMsg(
          foo.TestFull.TestMessageCheck.SubMessage.Builder builderForValue) {
        if (optionalMsgBuilder_ == null) {
          optionalMsg_ = builderForValue.build();
        } else {
          optionalMsgBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
       */
      public Builder mergeOptionalMsg(foo.TestFull.TestMessageCheck.SubMessage value) {
        if (optionalMsgBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            optionalMsg_ != null &&
            optionalMsg_ != foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance()) {
            getOptionalMsgBuilder().mergeFrom(value);
          } else {
            optionalMsg_ = value;
          }
        } else {
          optionalMsgBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
       */
      public Builder clearOptionalMsg() {
        bitField0_ = (bitField0_ & ~0x00000004);
        optionalMsg_ = null;
        if (optionalMsgBuilder_ != null) {
          optionalMsgBuilder_.dispose();
          optionalMsgBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
       */
      public foo.TestFull.TestMessageCheck.SubMessage.Builder getOptionalMsgBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getOptionalMsgFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
       */
      public foo.TestFull.TestMessageCheck.SubMessageOrBuilder getOptionalMsgOrBuilder() {
        if (optionalMsgBuilder_ != null) {
          return optionalMsgBuilder_.getMessageOrBuilder();
        } else {
          return optionalMsg_ == null ?
              foo.TestFull.TestMessageCheck.SubMessage.getDefaultInstance() : optionalMsg_;
        }
      }
      /**
       * <code>optional .foo.TestMessageCheck.SubMessage optional_msg = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.TestMessageCheck.SubMessage, foo.TestFull.TestMessageCheck.SubMessage.Builder, foo.TestFull.TestMessageCheck.SubMessageOrBuilder> 
          getOptionalMsgFieldBuilder() {
        if (optionalMsgBuilder_ == null) {
          optionalMsgBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              foo.TestFull.TestMessageCheck.SubMessage, foo.TestFull.TestMessageCheck.SubMessage.Builder, foo.TestFull.TestMessageCheck.SubMessageOrBuilder>(
                  getOptionalMsg(),
                  getParentForChildren(),
                  isClean());
          optionalMsg_ = null;
        }
        return optionalMsgBuilder_;
      }

      private java.lang.Object requiredString_ = "";
      /**
       * <code>required string required_string = 4;</code>
       * @return Whether the requiredString field is set.
       */
      public boolean hasRequiredString() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required string required_string = 4;</code>
       * @return The requiredString.
       */
      public java.lang.String getRequiredString() {
        java.lang.Object ref = requiredString_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            requiredString_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string required_string = 4;</code>
       * @return The bytes for requiredString.
       */
      public com.google.protobuf.ByteString
          getRequiredStringBytes() {
        java.lang.Object ref = requiredString_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          requiredString_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string required_string = 4;</code>
       * @param value The requiredString to set.
       * @return This builder for chaining.
       */
      public Builder setRequiredString(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        requiredString_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>required string required_string = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearRequiredString() {
        requiredString_ = getDefaultInstance().getRequiredString();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <code>required string required_string = 4;</code>
       * @param value The bytes for requiredString to set.
       * @return This builder for chaining.
       */
      public Builder setRequiredStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        requiredString_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList repeatedString_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureRepeatedStringIsMutable() {
        if (!repeatedString_.isModifiable()) {
          repeatedString_ = new com.google.protobuf.LazyStringArrayList(repeatedString_);
        }
        bitField0_ |= 0x00000010;
      }
      /**
       * <code>repeated string repeated_string = 5;</code>
       * @return A list containing the repeatedString.
       */
      public com.google.protobuf.ProtocolStringList
          getRepeatedStringList() {
        repeatedString_.makeImmutable();
        return repeatedString_;
      }
      /**
       * <code>repeated string repeated_string = 5;</code>
       * @return The count of repeatedString.
       */
      public int getRepeatedStringCount() {
        return repeatedString_.size();
      }
      /**
       * <code>repeated string repeated_string = 5;</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 = 5;</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 = 5;</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);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string repeated_string = 5;</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);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string repeated_string = 5;</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_);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string repeated_string = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearRepeatedString() {
        repeatedString_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string repeated_string = 5;</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(); }
        ensureRepeatedStringIsMutable();
        repeatedString_.add(value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object optionalString_ = "";
      /**
       * <code>optional string optional_string = 6;</code>
       * @return Whether the optionalString field is set.
       */
      public boolean hasOptionalString() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional string optional_string = 6;</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();
          if (bs.isValidUtf8()) {
            optionalString_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string optional_string = 6;</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>optional string optional_string = 6;</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_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>optional string optional_string = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptionalString() {
        optionalString_ = getDefaultInstance().getOptionalString();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <code>optional string optional_string = 6;</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(); }
        optionalString_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString requiredBytes_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>required bytes required_bytes = 7;</code>
       * @return Whether the requiredBytes field is set.
       */
      @java.lang.Override
      public boolean hasRequiredBytes() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>required bytes required_bytes = 7;</code>
       * @return The requiredBytes.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getRequiredBytes() {
        return requiredBytes_;
      }
      /**
       * <code>required bytes required_bytes = 7;</code>
       * @param value The requiredBytes to set.
       * @return This builder for chaining.
       */
      public Builder setRequiredBytes(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        requiredBytes_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>required bytes required_bytes = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearRequiredBytes() {
        bitField0_ = (bitField0_ & ~0x00000040);
        requiredBytes_ = getDefaultInstance().getRequiredBytes();
        onChanged();
        return this;
      }

      private java.util.List<com.google.protobuf.ByteString> repeatedBytes_ = java.util.Collections.emptyList();
      private void ensureRepeatedBytesIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          repeatedBytes_ = new java.util.ArrayList<com.google.protobuf.ByteString>(repeatedBytes_);
          bitField0_ |= 0x00000080;
        }
      }
      /**
       * <code>repeated bytes repeated_bytes = 8;</code>
       * @return A list containing the repeatedBytes.
       */
      public java.util.List<com.google.protobuf.ByteString>
          getRepeatedBytesList() {
        return ((bitField0_ & 0x00000080) != 0) ?
                 java.util.Collections.unmodifiableList(repeatedBytes_) : repeatedBytes_;
      }
      /**
       * <code>repeated bytes repeated_bytes = 8;</code>
       * @return The count of repeatedBytes.
       */
      public int getRepeatedBytesCount() {
        return repeatedBytes_.size();
      }
      /**
       * <code>repeated bytes repeated_bytes = 8;</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 = 8;</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 = 8;</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 = 8;</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 = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearRepeatedBytes() {
        repeatedBytes_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString optionalBytes_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes optional_bytes = 9;</code>
       * @return Whether the optionalBytes field is set.
       */
      @java.lang.Override
      public boolean hasOptionalBytes() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional bytes optional_bytes = 9;</code>
       * @return The optionalBytes.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getOptionalBytes() {
        return optionalBytes_;
      }
      /**
       * <code>optional bytes optional_bytes = 9;</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_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes optional_bytes = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptionalBytes() {
        bitField0_ = (bitField0_ & ~0x00000100);
        optionalBytes_ = getDefaultInstance().getOptionalBytes();
        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:foo.TestMessageCheck)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessageCheck)
    private static final foo.TestFull.TestMessageCheck DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessageCheck();
    }

    public static foo.TestFull.TestMessageCheck getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessageCheck getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessSubMessOrBuilder extends
      // @@protoc_insertion_point(interface_extends:foo.TestMessSubMess)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .foo.TestMess rep_mess = 1;</code>
     * @return Whether the repMess field is set.
     */
    boolean hasRepMess();
    /**
     * <code>required .foo.TestMess rep_mess = 1;</code>
     * @return The repMess.
     */
    foo.TestFull.TestMess getRepMess();
    /**
     * <code>required .foo.TestMess rep_mess = 1;</code>
     */
    foo.TestFull.TestMessOrBuilder getRepMessOrBuilder();

    /**
     * <code>required .foo.TestMessOptional opt_mess = 2;</code>
     * @return Whether the optMess field is set.
     */
    boolean hasOptMess();
    /**
     * <code>required .foo.TestMessOptional opt_mess = 2;</code>
     * @return The optMess.
     */
    foo.TestFull.TestMessOptional getOptMess();
    /**
     * <code>required .foo.TestMessOptional opt_mess = 2;</code>
     */
    foo.TestFull.TestMessOptionalOrBuilder getOptMessOrBuilder();

    /**
     * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
     * @return Whether the oneofMess field is set.
     */
    boolean hasOneofMess();
    /**
     * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
     * @return The oneofMess.
     */
    foo.TestFull.TestMessOneof getOneofMess();
    /**
     * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
     */
    foo.TestFull.TestMessOneofOrBuilder getOneofMessOrBuilder();

    /**
     * <code>required .foo.SubMess req_mess = 4;</code>
     * @return Whether the reqMess field is set.
     */
    boolean hasReqMess();
    /**
     * <code>required .foo.SubMess req_mess = 4;</code>
     * @return The reqMess.
     */
    foo.TestFull.SubMess getReqMess();
    /**
     * <code>required .foo.SubMess req_mess = 4;</code>
     */
    foo.TestFull.SubMessOrBuilder getReqMessOrBuilder();

    /**
     * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
     * @return Whether the defMess field is set.
     */
    boolean hasDefMess();
    /**
     * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
     * @return The defMess.
     */
    foo.TestFull.DefaultOptionalValues getDefMess();
    /**
     * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
     */
    foo.TestFull.DefaultOptionalValuesOrBuilder getDefMessOrBuilder();
  }
  /**
   * Protobuf type {@code foo.TestMessSubMess}
   */
  public static final class TestMessSubMess extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:foo.TestMessSubMess)
      TestMessSubMessOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessSubMess.newBuilder() to construct.
    private TestMessSubMess(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessSubMess() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return foo.TestFull.internal_static_foo_TestMessSubMess_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return foo.TestFull.internal_static_foo_TestMessSubMess_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              foo.TestFull.TestMessSubMess.class, foo.TestFull.TestMessSubMess.Builder.class);
    }

    private int bitField0_;
    public static final int REP_MESS_FIELD_NUMBER = 1;
    private foo.TestFull.TestMess repMess_;
    /**
     * <code>required .foo.TestMess rep_mess = 1;</code>
     * @return Whether the repMess field is set.
     */
    @java.lang.Override
    public boolean hasRepMess() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .foo.TestMess rep_mess = 1;</code>
     * @return The repMess.
     */
    @java.lang.Override
    public foo.TestFull.TestMess getRepMess() {
      return repMess_ == null ? foo.TestFull.TestMess.getDefaultInstance() : repMess_;
    }
    /**
     * <code>required .foo.TestMess rep_mess = 1;</code>
     */
    @java.lang.Override
    public foo.TestFull.TestMessOrBuilder getRepMessOrBuilder() {
      return repMess_ == null ? foo.TestFull.TestMess.getDefaultInstance() : repMess_;
    }

    public static final int OPT_MESS_FIELD_NUMBER = 2;
    private foo.TestFull.TestMessOptional optMess_;
    /**
     * <code>required .foo.TestMessOptional opt_mess = 2;</code>
     * @return Whether the optMess field is set.
     */
    @java.lang.Override
    public boolean hasOptMess() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required .foo.TestMessOptional opt_mess = 2;</code>
     * @return The optMess.
     */
    @java.lang.Override
    public foo.TestFull.TestMessOptional getOptMess() {
      return optMess_ == null ? foo.TestFull.TestMessOptional.getDefaultInstance() : optMess_;
    }
    /**
     * <code>required .foo.TestMessOptional opt_mess = 2;</code>
     */
    @java.lang.Override
    public foo.TestFull.TestMessOptionalOrBuilder getOptMessOrBuilder() {
      return optMess_ == null ? foo.TestFull.TestMessOptional.getDefaultInstance() : optMess_;
    }

    public static final int ONEOF_MESS_FIELD_NUMBER = 3;
    private foo.TestFull.TestMessOneof oneofMess_;
    /**
     * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
     * @return Whether the oneofMess field is set.
     */
    @java.lang.Override
    public boolean hasOneofMess() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
     * @return The oneofMess.
     */
    @java.lang.Override
    public foo.TestFull.TestMessOneof getOneofMess() {
      return oneofMess_ == null ? foo.TestFull.TestMessOneof.getDefaultInstance() : oneofMess_;
    }
    /**
     * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
     */
    @java.lang.Override
    public foo.TestFull.TestMessOneofOrBuilder getOneofMessOrBuilder() {
      return oneofMess_ == null ? foo.TestFull.TestMessOneof.getDefaultInstance() : oneofMess_;
    }

    public static final int REQ_MESS_FIELD_NUMBER = 4;
    private foo.TestFull.SubMess reqMess_;
    /**
     * <code>required .foo.SubMess req_mess = 4;</code>
     * @return Whether the reqMess field is set.
     */
    @java.lang.Override
    public boolean hasReqMess() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required .foo.SubMess req_mess = 4;</code>
     * @return The reqMess.
     */
    @java.lang.Override
    public foo.TestFull.SubMess getReqMess() {
      return reqMess_ == null ? foo.TestFull.SubMess.getDefaultInstance() : reqMess_;
    }
    /**
     * <code>required .foo.SubMess req_mess = 4;</code>
     */
    @java.lang.Override
    public foo.TestFull.SubMessOrBuilder getReqMessOrBuilder() {
      return reqMess_ == null ? foo.TestFull.SubMess.getDefaultInstance() : reqMess_;
    }

    public static final int DEF_MESS_FIELD_NUMBER = 5;
    private foo.TestFull.DefaultOptionalValues defMess_;
    /**
     * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
     * @return Whether the defMess field is set.
     */
    @java.lang.Override
    public boolean hasDefMess() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
     * @return The defMess.
     */
    @java.lang.Override
    public foo.TestFull.DefaultOptionalValues getDefMess() {
      return defMess_ == null ? foo.TestFull.DefaultOptionalValues.getDefaultInstance() : defMess_;
    }
    /**
     * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
     */
    @java.lang.Override
    public foo.TestFull.DefaultOptionalValuesOrBuilder getDefMessOrBuilder() {
      return defMess_ == null ? foo.TestFull.DefaultOptionalValues.getDefaultInstance() : defMess_;
    }

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

      if (!hasRepMess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasOptMess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasOneofMess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasReqMess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasDefMess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getRepMess().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getOptMess().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getOneofMess().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getReqMess().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRepMess());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getOptMess());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getOneofMess());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getReqMess());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getDefMess());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRepMess());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getOptMess());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getOneofMess());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getReqMess());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getDefMess());
      }
      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 foo.TestFull.TestMessSubMess)) {
        return super.equals(obj);
      }
      foo.TestFull.TestMessSubMess other = (foo.TestFull.TestMessSubMess) obj;

      if (hasRepMess() != other.hasRepMess()) return false;
      if (hasRepMess()) {
        if (!getRepMess()
            .equals(other.getRepMess())) return false;
      }
      if (hasOptMess() != other.hasOptMess()) return false;
      if (hasOptMess()) {
        if (!getOptMess()
            .equals(other.getOptMess())) return false;
      }
      if (hasOneofMess() != other.hasOneofMess()) return false;
      if (hasOneofMess()) {
        if (!getOneofMess()
            .equals(other.getOneofMess())) return false;
      }
      if (hasReqMess() != other.hasReqMess()) return false;
      if (hasReqMess()) {
        if (!getReqMess()
            .equals(other.getReqMess())) return false;
      }
      if (hasDefMess() != other.hasDefMess()) return false;
      if (hasDefMess()) {
        if (!getDefMess()
            .equals(other.getDefMess())) 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 (hasRepMess()) {
        hash = (37 * hash) + REP_MESS_FIELD_NUMBER;
        hash = (53 * hash) + getRepMess().hashCode();
      }
      if (hasOptMess()) {
        hash = (37 * hash) + OPT_MESS_FIELD_NUMBER;
        hash = (53 * hash) + getOptMess().hashCode();
      }
      if (hasOneofMess()) {
        hash = (37 * hash) + ONEOF_MESS_FIELD_NUMBER;
        hash = (53 * hash) + getOneofMess().hashCode();
      }
      if (hasReqMess()) {
        hash = (37 * hash) + REQ_MESS_FIELD_NUMBER;
        hash = (53 * hash) + getReqMess().hashCode();
      }
      if (hasDefMess()) {
        hash = (37 * hash) + DEF_MESS_FIELD_NUMBER;
        hash = (53 * hash) + getDefMess().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return foo.TestFull.internal_static_foo_TestMessSubMess_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                foo.TestFull.TestMessSubMess.class, foo.TestFull.TestMessSubMess.Builder.class);
      }

      // Construct using foo.TestFull.TestMessSubMess.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRepMessFieldBuilder();
          getOptMessFieldBuilder();
          getOneofMessFieldBuilder();
          getReqMessFieldBuilder();
          getDefMessFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        repMess_ = null;
        if (repMessBuilder_ != null) {
          repMessBuilder_.dispose();
          repMessBuilder_ = null;
        }
        optMess_ = null;
        if (optMessBuilder_ != null) {
          optMessBuilder_.dispose();
          optMessBuilder_ = null;
        }
        oneofMess_ = null;
        if (oneofMessBuilder_ != null) {
          oneofMessBuilder_.dispose();
          oneofMessBuilder_ = null;
        }
        reqMess_ = null;
        if (reqMessBuilder_ != null) {
          reqMessBuilder_.dispose();
          reqMessBuilder_ = null;
        }
        defMess_ = null;
        if (defMessBuilder_ != null) {
          defMessBuilder_.dispose();
          defMessBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return foo.TestFull.internal_static_foo_TestMessSubMess_descriptor;
      }

      @java.lang.Override
      public foo.TestFull.TestMessSubMess getDefaultInstanceForType() {
        return foo.TestFull.TestMessSubMess.getDefaultInstance();
      }

      @java.lang.Override
      public foo.TestFull.TestMessSubMess build() {
        foo.TestFull.TestMessSubMess result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public foo.TestFull.TestMessSubMess buildPartial() {
        foo.TestFull.TestMessSubMess result = new foo.TestFull.TestMessSubMess(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(foo.TestFull.TestMessSubMess result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.repMess_ = repMessBuilder_ == null
              ? repMess_
              : repMessBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.optMess_ = optMessBuilder_ == null
              ? optMess_
              : optMessBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.oneofMess_ = oneofMessBuilder_ == null
              ? oneofMess_
              : oneofMessBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.reqMess_ = reqMessBuilder_ == null
              ? reqMess_
              : reqMessBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.defMess_ = defMessBuilder_ == null
              ? defMess_
              : defMessBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        result.bitField0_ |= to_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 foo.TestFull.TestMessSubMess) {
          return mergeFrom((foo.TestFull.TestMessSubMess)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(foo.TestFull.TestMessSubMess other) {
        if (other == foo.TestFull.TestMessSubMess.getDefaultInstance()) return this;
        if (other.hasRepMess()) {
          mergeRepMess(other.getRepMess());
        }
        if (other.hasOptMess()) {
          mergeOptMess(other.getOptMess());
        }
        if (other.hasOneofMess()) {
          mergeOneofMess(other.getOneofMess());
        }
        if (other.hasReqMess()) {
          mergeReqMess(other.getReqMess());
        }
        if (other.hasDefMess()) {
          mergeDefMess(other.getDefMess());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasRepMess()) {
          return false;
        }
        if (!hasOptMess()) {
          return false;
        }
        if (!hasOneofMess()) {
          return false;
        }
        if (!hasReqMess()) {
          return false;
        }
        if (!hasDefMess()) {
          return false;
        }
        if (!getRepMess().isInitialized()) {
          return false;
        }
        if (!getOptMess().isInitialized()) {
          return false;
        }
        if (!getOneofMess().isInitialized()) {
          return false;
        }
        if (!getReqMess().isInitialized()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getRepMessFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getOptMessFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getOneofMessFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getReqMessFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getDefMessFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              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 foo.TestFull.TestMess repMess_;
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.TestMess, foo.TestFull.TestMess.Builder, foo.TestFull.TestMessOrBuilder> repMessBuilder_;
      /**
       * <code>required .foo.TestMess rep_mess = 1;</code>
       * @return Whether the repMess field is set.
       */
      public boolean hasRepMess() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .foo.TestMess rep_mess = 1;</code>
       * @return The repMess.
       */
      public foo.TestFull.TestMess getRepMess() {
        if (repMessBuilder_ == null) {
          return repMess_ == null ? foo.TestFull.TestMess.getDefaultInstance() : repMess_;
        } else {
          return repMessBuilder_.getMessage();
        }
      }
      /**
       * <code>required .foo.TestMess rep_mess = 1;</code>
       */
      public Builder setRepMess(foo.TestFull.TestMess value) {
        if (repMessBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          repMess_ = value;
        } else {
          repMessBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMess rep_mess = 1;</code>
       */
      public Builder setRepMess(
          foo.TestFull.TestMess.Builder builderForValue) {
        if (repMessBuilder_ == null) {
          repMess_ = builderForValue.build();
        } else {
          repMessBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMess rep_mess = 1;</code>
       */
      public Builder mergeRepMess(foo.TestFull.TestMess value) {
        if (repMessBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            repMess_ != null &&
            repMess_ != foo.TestFull.TestMess.getDefaultInstance()) {
            getRepMessBuilder().mergeFrom(value);
          } else {
            repMess_ = value;
          }
        } else {
          repMessBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMess rep_mess = 1;</code>
       */
      public Builder clearRepMess() {
        bitField0_ = (bitField0_ & ~0x00000001);
        repMess_ = null;
        if (repMessBuilder_ != null) {
          repMessBuilder_.dispose();
          repMessBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMess rep_mess = 1;</code>
       */
      public foo.TestFull.TestMess.Builder getRepMessBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRepMessFieldBuilder().getBuilder();
      }
      /**
       * <code>required .foo.TestMess rep_mess = 1;</code>
       */
      public foo.TestFull.TestMessOrBuilder getRepMessOrBuilder() {
        if (repMessBuilder_ != null) {
          return repMessBuilder_.getMessageOrBuilder();
        } else {
          return repMess_ == null ?
              foo.TestFull.TestMess.getDefaultInstance() : repMess_;
        }
      }
      /**
       * <code>required .foo.TestMess rep_mess = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.TestMess, foo.TestFull.TestMess.Builder, foo.TestFull.TestMessOrBuilder> 
          getRepMessFieldBuilder() {
        if (repMessBuilder_ == null) {
          repMessBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              foo.TestFull.TestMess, foo.TestFull.TestMess.Builder, foo.TestFull.TestMessOrBuilder>(
                  getRepMess(),
                  getParentForChildren(),
                  isClean());
          repMess_ = null;
        }
        return repMessBuilder_;
      }

      private foo.TestFull.TestMessOptional optMess_;
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.TestMessOptional, foo.TestFull.TestMessOptional.Builder, foo.TestFull.TestMessOptionalOrBuilder> optMessBuilder_;
      /**
       * <code>required .foo.TestMessOptional opt_mess = 2;</code>
       * @return Whether the optMess field is set.
       */
      public boolean hasOptMess() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required .foo.TestMessOptional opt_mess = 2;</code>
       * @return The optMess.
       */
      public foo.TestFull.TestMessOptional getOptMess() {
        if (optMessBuilder_ == null) {
          return optMess_ == null ? foo.TestFull.TestMessOptional.getDefaultInstance() : optMess_;
        } else {
          return optMessBuilder_.getMessage();
        }
      }
      /**
       * <code>required .foo.TestMessOptional opt_mess = 2;</code>
       */
      public Builder setOptMess(foo.TestFull.TestMessOptional value) {
        if (optMessBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          optMess_ = value;
        } else {
          optMessBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMessOptional opt_mess = 2;</code>
       */
      public Builder setOptMess(
          foo.TestFull.TestMessOptional.Builder builderForValue) {
        if (optMessBuilder_ == null) {
          optMess_ = builderForValue.build();
        } else {
          optMessBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMessOptional opt_mess = 2;</code>
       */
      public Builder mergeOptMess(foo.TestFull.TestMessOptional value) {
        if (optMessBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            optMess_ != null &&
            optMess_ != foo.TestFull.TestMessOptional.getDefaultInstance()) {
            getOptMessBuilder().mergeFrom(value);
          } else {
            optMess_ = value;
          }
        } else {
          optMessBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMessOptional opt_mess = 2;</code>
       */
      public Builder clearOptMess() {
        bitField0_ = (bitField0_ & ~0x00000002);
        optMess_ = null;
        if (optMessBuilder_ != null) {
          optMessBuilder_.dispose();
          optMessBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMessOptional opt_mess = 2;</code>
       */
      public foo.TestFull.TestMessOptional.Builder getOptMessBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getOptMessFieldBuilder().getBuilder();
      }
      /**
       * <code>required .foo.TestMessOptional opt_mess = 2;</code>
       */
      public foo.TestFull.TestMessOptionalOrBuilder getOptMessOrBuilder() {
        if (optMessBuilder_ != null) {
          return optMessBuilder_.getMessageOrBuilder();
        } else {
          return optMess_ == null ?
              foo.TestFull.TestMessOptional.getDefaultInstance() : optMess_;
        }
      }
      /**
       * <code>required .foo.TestMessOptional opt_mess = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.TestMessOptional, foo.TestFull.TestMessOptional.Builder, foo.TestFull.TestMessOptionalOrBuilder> 
          getOptMessFieldBuilder() {
        if (optMessBuilder_ == null) {
          optMessBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              foo.TestFull.TestMessOptional, foo.TestFull.TestMessOptional.Builder, foo.TestFull.TestMessOptionalOrBuilder>(
                  getOptMess(),
                  getParentForChildren(),
                  isClean());
          optMess_ = null;
        }
        return optMessBuilder_;
      }

      private foo.TestFull.TestMessOneof oneofMess_;
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.TestMessOneof, foo.TestFull.TestMessOneof.Builder, foo.TestFull.TestMessOneofOrBuilder> oneofMessBuilder_;
      /**
       * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
       * @return Whether the oneofMess field is set.
       */
      public boolean hasOneofMess() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
       * @return The oneofMess.
       */
      public foo.TestFull.TestMessOneof getOneofMess() {
        if (oneofMessBuilder_ == null) {
          return oneofMess_ == null ? foo.TestFull.TestMessOneof.getDefaultInstance() : oneofMess_;
        } else {
          return oneofMessBuilder_.getMessage();
        }
      }
      /**
       * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
       */
      public Builder setOneofMess(foo.TestFull.TestMessOneof value) {
        if (oneofMessBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          oneofMess_ = value;
        } else {
          oneofMessBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
       */
      public Builder setOneofMess(
          foo.TestFull.TestMessOneof.Builder builderForValue) {
        if (oneofMessBuilder_ == null) {
          oneofMess_ = builderForValue.build();
        } else {
          oneofMessBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
       */
      public Builder mergeOneofMess(foo.TestFull.TestMessOneof value) {
        if (oneofMessBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            oneofMess_ != null &&
            oneofMess_ != foo.TestFull.TestMessOneof.getDefaultInstance()) {
            getOneofMessBuilder().mergeFrom(value);
          } else {
            oneofMess_ = value;
          }
        } else {
          oneofMessBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
       */
      public Builder clearOneofMess() {
        bitField0_ = (bitField0_ & ~0x00000004);
        oneofMess_ = null;
        if (oneofMessBuilder_ != null) {
          oneofMessBuilder_.dispose();
          oneofMessBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
       */
      public foo.TestFull.TestMessOneof.Builder getOneofMessBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getOneofMessFieldBuilder().getBuilder();
      }
      /**
       * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
       */
      public foo.TestFull.TestMessOneofOrBuilder getOneofMessOrBuilder() {
        if (oneofMessBuilder_ != null) {
          return oneofMessBuilder_.getMessageOrBuilder();
        } else {
          return oneofMess_ == null ?
              foo.TestFull.TestMessOneof.getDefaultInstance() : oneofMess_;
        }
      }
      /**
       * <code>required .foo.TestMessOneof oneof_mess = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.TestMessOneof, foo.TestFull.TestMessOneof.Builder, foo.TestFull.TestMessOneofOrBuilder> 
          getOneofMessFieldBuilder() {
        if (oneofMessBuilder_ == null) {
          oneofMessBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              foo.TestFull.TestMessOneof, foo.TestFull.TestMessOneof.Builder, foo.TestFull.TestMessOneofOrBuilder>(
                  getOneofMess(),
                  getParentForChildren(),
                  isClean());
          oneofMess_ = null;
        }
        return oneofMessBuilder_;
      }

      private foo.TestFull.SubMess reqMess_;
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder> reqMessBuilder_;
      /**
       * <code>required .foo.SubMess req_mess = 4;</code>
       * @return Whether the reqMess field is set.
       */
      public boolean hasReqMess() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required .foo.SubMess req_mess = 4;</code>
       * @return The reqMess.
       */
      public foo.TestFull.SubMess getReqMess() {
        if (reqMessBuilder_ == null) {
          return reqMess_ == null ? foo.TestFull.SubMess.getDefaultInstance() : reqMess_;
        } else {
          return reqMessBuilder_.getMessage();
        }
      }
      /**
       * <code>required .foo.SubMess req_mess = 4;</code>
       */
      public Builder setReqMess(foo.TestFull.SubMess value) {
        if (reqMessBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          reqMess_ = value;
        } else {
          reqMessBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.SubMess req_mess = 4;</code>
       */
      public Builder setReqMess(
          foo.TestFull.SubMess.Builder builderForValue) {
        if (reqMessBuilder_ == null) {
          reqMess_ = builderForValue.build();
        } else {
          reqMessBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.SubMess req_mess = 4;</code>
       */
      public Builder mergeReqMess(foo.TestFull.SubMess value) {
        if (reqMessBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            reqMess_ != null &&
            reqMess_ != foo.TestFull.SubMess.getDefaultInstance()) {
            getReqMessBuilder().mergeFrom(value);
          } else {
            reqMess_ = value;
          }
        } else {
          reqMessBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.SubMess req_mess = 4;</code>
       */
      public Builder clearReqMess() {
        bitField0_ = (bitField0_ & ~0x00000008);
        reqMess_ = null;
        if (reqMessBuilder_ != null) {
          reqMessBuilder_.dispose();
          reqMessBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.SubMess req_mess = 4;</code>
       */
      public foo.TestFull.SubMess.Builder getReqMessBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getReqMessFieldBuilder().getBuilder();
      }
      /**
       * <code>required .foo.SubMess req_mess = 4;</code>
       */
      public foo.TestFull.SubMessOrBuilder getReqMessOrBuilder() {
        if (reqMessBuilder_ != null) {
          return reqMessBuilder_.getMessageOrBuilder();
        } else {
          return reqMess_ == null ?
              foo.TestFull.SubMess.getDefaultInstance() : reqMess_;
        }
      }
      /**
       * <code>required .foo.SubMess req_mess = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder> 
          getReqMessFieldBuilder() {
        if (reqMessBuilder_ == null) {
          reqMessBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              foo.TestFull.SubMess, foo.TestFull.SubMess.Builder, foo.TestFull.SubMessOrBuilder>(
                  getReqMess(),
                  getParentForChildren(),
                  isClean());
          reqMess_ = null;
        }
        return reqMessBuilder_;
      }

      private foo.TestFull.DefaultOptionalValues defMess_;
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.DefaultOptionalValues, foo.TestFull.DefaultOptionalValues.Builder, foo.TestFull.DefaultOptionalValuesOrBuilder> defMessBuilder_;
      /**
       * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
       * @return Whether the defMess field is set.
       */
      public boolean hasDefMess() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
       * @return The defMess.
       */
      public foo.TestFull.DefaultOptionalValues getDefMess() {
        if (defMessBuilder_ == null) {
          return defMess_ == null ? foo.TestFull.DefaultOptionalValues.getDefaultInstance() : defMess_;
        } else {
          return defMessBuilder_.getMessage();
        }
      }
      /**
       * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
       */
      public Builder setDefMess(foo.TestFull.DefaultOptionalValues value) {
        if (defMessBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          defMess_ = value;
        } else {
          defMessBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
       */
      public Builder setDefMess(
          foo.TestFull.DefaultOptionalValues.Builder builderForValue) {
        if (defMessBuilder_ == null) {
          defMess_ = builderForValue.build();
        } else {
          defMessBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
       */
      public Builder mergeDefMess(foo.TestFull.DefaultOptionalValues value) {
        if (defMessBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            defMess_ != null &&
            defMess_ != foo.TestFull.DefaultOptionalValues.getDefaultInstance()) {
            getDefMessBuilder().mergeFrom(value);
          } else {
            defMess_ = value;
          }
        } else {
          defMessBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
       */
      public Builder clearDefMess() {
        bitField0_ = (bitField0_ & ~0x00000010);
        defMess_ = null;
        if (defMessBuilder_ != null) {
          defMessBuilder_.dispose();
          defMessBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
       */
      public foo.TestFull.DefaultOptionalValues.Builder getDefMessBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getDefMessFieldBuilder().getBuilder();
      }
      /**
       * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
       */
      public foo.TestFull.DefaultOptionalValuesOrBuilder getDefMessOrBuilder() {
        if (defMessBuilder_ != null) {
          return defMessBuilder_.getMessageOrBuilder();
        } else {
          return defMess_ == null ?
              foo.TestFull.DefaultOptionalValues.getDefaultInstance() : defMess_;
        }
      }
      /**
       * <code>required .foo.DefaultOptionalValues def_mess = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          foo.TestFull.DefaultOptionalValues, foo.TestFull.DefaultOptionalValues.Builder, foo.TestFull.DefaultOptionalValuesOrBuilder> 
          getDefMessFieldBuilder() {
        if (defMessBuilder_ == null) {
          defMessBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              foo.TestFull.DefaultOptionalValues, foo.TestFull.DefaultOptionalValues.Builder, foo.TestFull.DefaultOptionalValuesOrBuilder>(
                  getDefMess(),
                  getParentForChildren(),
                  isClean());
          defMess_ = null;
        }
        return defMessBuilder_;
      }
      @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:foo.TestMessSubMess)
    }

    // @@protoc_insertion_point(class_scope:foo.TestMessSubMess)
    private static final foo.TestFull.TestMessSubMess DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new foo.TestFull.TestMessSubMess();
    }

    public static foo.TestFull.TestMessSubMess getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public foo.TestFull.TestMessSubMess getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_SubMess_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_SubMess_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_SubMess_SubSubMess_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_SubMess_SubSubMess_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestFieldNo15_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestFieldNo15_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestFieldNo16_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestFieldNo16_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestFieldNo2047_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestFieldNo2047_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestFieldNo2048_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestFieldNo2048_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestFieldNo262143_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestFieldNo262143_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestFieldNo262144_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestFieldNo262144_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestFieldNo33554431_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestFieldNo33554431_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestFieldNo33554432_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestFieldNo33554432_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMess_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMess_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessPacked_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessPacked_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessOptional_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessOptional_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessOneof_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessOneof_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredInt32_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredInt32_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredSInt32_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredSInt32_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredSFixed32_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredSFixed32_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredInt64_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredInt64_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredSInt64_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredSInt64_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredSFixed64_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredSFixed64_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredUInt32_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredUInt32_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredFixed32_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredFixed32_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredUInt64_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredUInt64_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredFixed64_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredFixed64_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredFloat_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredFloat_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredDouble_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredDouble_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredBool_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredBool_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredEnum_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredEnum_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredEnumSmall_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredEnumSmall_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredString_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredString_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredBytes_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredBytes_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessRequiredMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessRequiredMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_EmptyMess_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_EmptyMess_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_DefaultRequiredValues_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_DefaultRequiredValues_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_DefaultOptionalValues_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_DefaultOptionalValues_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_LowerCase_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_LowerCase_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_AllocValues_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_AllocValues_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestRequiredFieldsBitmap_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestRequiredFieldsBitmap_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestFieldFlags_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestFieldFlags_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessageCheck_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessageCheck_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessageCheck_SubMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessageCheck_SubMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_foo_TestMessSubMess_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_foo_TestMessSubMess_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\017test-full.proto\022\003foo\"\365\001\n\007SubMess\022\014\n\004te" +
      "st\030\004 \002(\005\022\014\n\004val1\030\006 \001(\005\022\014\n\004val2\030\007 \001(\005\022\013\n\003" +
      "rep\030\010 \003(\005\022%\n\004sub1\030\t \001(\0132\027.foo.SubMess.Su" +
      "bSubMess\022%\n\004sub2\030\n \001(\0132\027.foo.SubMess.Sub" +
      "SubMess\032e\n\nSubSubMess\022\021\n\004val1\030\001 \001(\005:\003100" +
      "\022\013\n\003rep\030\004 \003(\005\022\033\n\006bytes1\030\002 \001(\014:\013a \\000 ch" +
      "ar\022\032\n\004str1\030\003 \001(\t:\014hello world\n\"\035\n\rTestFi" +
      "eldNo15\022\014\n\004test\030\017 \002(\t\"\035\n\rTestFieldNo16\022\014" +
      "\n\004test\030\020 \002(\t\" \n\017TestFieldNo2047\022\r\n\004test\030" +
      "\377\017 \002(\t\" \n\017TestFieldNo2048\022\r\n\004test\030\200\020 \002(\t" +
      "\"#\n\021TestFieldNo262143\022\016\n\004test\030\377\377\017 \002(\t\"#\n" +
      "\021TestFieldNo262144\022\016\n\004test\030\200\200\020 \002(\t\"&\n\023Te" +
      "stFieldNo33554431\022\017\n\004test\030\377\377\377\017 \002(\t\"&\n\023Te" +
      "stFieldNo33554432\022\017\n\004test\030\200\200\200\020 \002(\t\"\273\003\n\010T" +
      "estMess\022\022\n\ntest_int32\030\001 \003(\005\022\023\n\013test_sint" +
      "32\030\002 \003(\021\022\025\n\rtest_sfixed32\030\003 \003(\017\022\022\n\ntest_" +
      "int64\030\004 \003(\003\022\023\n\013test_sint64\030\005 \003(\022\022\025\n\rtest" +
      "_sfixed64\030\006 \003(\020\022\023\n\013test_uint32\030\007 \003(\r\022\024\n\014" +
      "test_fixed32\030\010 \003(\007\022\023\n\013test_uint64\030\t \003(\004\022" +
      "\024\n\014test_fixed64\030\n \003(\006\022\022\n\ntest_float\030\013 \003(" +
      "\002\022\023\n\013test_double\030\014 \003(\001\022\024\n\014test_boolean\030\r" +
      " \003(\010\022+\n\017test_enum_small\030\016 \003(\0162\022.foo.Test" +
      "EnumSmall\022 \n\ttest_enum\030\017 \003(\0162\r.foo.TestE" +
      "num\022\023\n\013test_string\030\020 \003(\t\022\022\n\ntest_bytes\030\021" +
      " \003(\014\022\"\n\014test_message\030\022 \003(\0132\014.foo.SubMess" +
      "\"\260\003\n\016TestMessPacked\022\026\n\ntest_int32\030\001 \003(\005B" +
      "\002\020\001\022\027\n\013test_sint32\030\002 \003(\021B\002\020\001\022\031\n\rtest_sfi" +
      "xed32\030\003 \003(\017B\002\020\001\022\026\n\ntest_int64\030\004 \003(\003B\002\020\001\022" +
      "\027\n\013test_sint64\030\005 \003(\022B\002\020\001\022\031\n\rtest_sfixed6" +
      "4\030\006 \003(\020B\002\020\001\022\027\n\013test_uint32\030\007 \003(\rB\002\020\001\022\030\n\014" +
      "test_fixed32\030\010 \003(\007B\002\020\001\022\027\n\013test_uint64\030\t " +
      "\003(\004B\002\020\001\022\030\n\014test_fixed64\030\n \003(\006B\002\020\001\022\026\n\ntes" +
      "t_float\030\013 \003(\002B\002\020\001\022\027\n\013test_double\030\014 \003(\001B\002" +
      "\020\001\022\030\n\014test_boolean\030\r \003(\010B\002\020\001\022/\n\017test_enu" +
      "m_small\030\016 \003(\0162\022.foo.TestEnumSmallB\002\020\001\022$\n" +
      "\ttest_enum\030\017 \003(\0162\r.foo.TestEnumB\002\020\001\"\303\003\n\020" +
      "TestMessOptional\022\022\n\ntest_int32\030\001 \001(\005\022\023\n\013" +
      "test_sint32\030\002 \001(\021\022\025\n\rtest_sfixed32\030\003 \001(\017" +
      "\022\022\n\ntest_int64\030\004 \001(\003\022\023\n\013test_sint64\030\005 \001(" +
      "\022\022\025\n\rtest_sfixed64\030\006 \001(\020\022\023\n\013test_uint32\030" +
      "\007 \001(\r\022\024\n\014test_fixed32\030\010 \001(\007\022\023\n\013test_uint" +
      "64\030\t \001(\004\022\024\n\014test_fixed64\030\n \001(\006\022\022\n\ntest_f" +
      "loat\030\013 \001(\002\022\023\n\013test_double\030\014 \001(\001\022\024\n\014test_" +
      "boolean\030\r \001(\010\022+\n\017test_enum_small\030\016 \001(\0162\022" +
      ".foo.TestEnumSmall\022 \n\ttest_enum\030\017 \001(\0162\r." +
      "foo.TestEnum\022\023\n\013test_string\030\020 \001(\t\022\022\n\ntes" +
      "t_bytes\030\021 \001(\014\022\"\n\014test_message\030\022 \001(\0132\014.fo" +
      "o.SubMess\"\203\004\n\rTestMessOneof\022\024\n\ntest_int3" +
      "2\030\001 \001(\005H\000\022\025\n\013test_sint32\030\002 \001(\021H\000\022\027\n\rtest" +
      "_sfixed32\030\003 \001(\017H\000\022\024\n\ntest_int64\030\004 \001(\003H\000\022" +
      "\025\n\013test_sint64\030\005 \001(\022H\000\022\027\n\rtest_sfixed64\030" +
      "\006 \001(\020H\000\022\025\n\013test_uint32\030\007 \001(\rH\000\022\026\n\014test_f" +
      "ixed32\030\010 \001(\007H\000\022\025\n\013test_uint64\030\t \001(\004H\000\022\026\n" +
      "\014test_fixed64\030\n \001(\006H\000\022\024\n\ntest_float\030\013 \001(" +
      "\002H\000\022\025\n\013test_double\030\014 \001(\001H\000\022\026\n\014test_boole" +
      "an\030\r \001(\010H\000\022-\n\017test_enum_small\030\016 \001(\0162\022.fo" +
      "o.TestEnumSmallH\000\022\"\n\ttest_enum\030\017 \001(\0162\r.f" +
      "oo.TestEnumH\000\022\025\n\013test_string\030\020 \001(\tH\000\022\024\n\n" +
      "test_bytes\030\021 \001(\014H\000\022$\n\014test_message\030\022 \001(\013" +
      "2\014.foo.SubMessH\000\022\017\n\007opt_int\030\023 \001(\005B\014\n\ntes" +
      "t_oneof\"%\n\025TestMessRequiredInt32\022\014\n\004test" +
      "\030* \002(\005\"&\n\026TestMessRequiredSInt32\022\014\n\004test" +
      "\030+ \002(\021\"(\n\030TestMessRequiredSFixed32\022\014\n\004te" +
      "st\030d \002(\017\"%\n\025TestMessRequiredInt64\022\014\n\004tes" +
      "t\030\001 \002(\003\"&\n\026TestMessRequiredSInt64\022\014\n\004tes" +
      "t\030\013 \002(\022\"(\n\030TestMessRequiredSFixed64\022\014\n\004t" +
      "est\030\014 \002(\020\"&\n\026TestMessRequiredUInt32\022\014\n\004t" +
      "est\030\001 \002(\r\"\'\n\027TestMessRequiredFixed32\022\014\n\004" +
      "test\030\001 \002(\007\"&\n\026TestMessRequiredUInt64\022\014\n\004" +
      "test\030\001 \002(\004\"\'\n\027TestMessRequiredFixed64\022\014\n" +
      "\004test\030\001 \002(\006\"%\n\025TestMessRequiredFloat\022\014\n\004" +
      "test\030\001 \002(\002\"&\n\026TestMessRequiredDouble\022\014\n\004" +
      "test\030\001 \002(\001\"$\n\024TestMessRequiredBool\022\014\n\004te" +
      "st\030\001 \002(\010\"3\n\024TestMessRequiredEnum\022\033\n\004test" +
      "\030\001 \002(\0162\r.foo.TestEnum\"=\n\031TestMessRequire" +
      "dEnumSmall\022 \n\004test\030\001 \002(\0162\022.foo.TestEnumS" +
      "mall\"&\n\026TestMessRequiredString\022\014\n\004test\030\001" +
      " \002(\t\"%\n\025TestMessRequiredBytes\022\014\n\004test\030\001 " +
      "\002(\014\"5\n\027TestMessRequiredMessage\022\032\n\004test\030\001" +
      " \002(\0132\014.foo.SubMess\"\013\n\tEmptyMess\"\342\001\n\025Defa" +
      "ultRequiredValues\022\024\n\007v_int32\030\001 \002(\005:\003-42\022" +
      "\025\n\010v_uint32\030\002 \002(\r:\003666\022\027\n\007v_int64\030\003 \002(\005:" +
      "\006100000\022\030\n\010v_uint64\030\004 \002(\r:\006100001\022\024\n\007v_f" +
      "loat\030\005 \002(\002:\0032.5\022\025\n\010v_double\030\006 \002(\001:\0034.5\022\031" +
      "\n\010v_string\030\007 \002(\t:\007hi mom\n\022!\n\007v_bytes\030\010 \002" +
      "(\014:\020a \\000 character\"\342\001\n\025DefaultOptional" +
      "Values\022\024\n\007v_int32\030\001 \001(\005:\003-42\022\025\n\010v_uint32" +
      "\030\002 \001(\r:\003666\022\027\n\007v_int64\030\003 \001(\005:\006100000\022\030\n\010" +
      "v_uint64\030\004 \001(\r:\006100001\022\024\n\007v_float\030\005 \001(\002:" +
      "\0032.5\022\025\n\010v_double\030\006 \001(\001:\0034.5\022\031\n\010v_string\030" +
      "\007 \001(\t:\007hi mom\n\022!\n\007v_bytes\030\010 \001(\014:\020a \\000 " +
      "character\"\\\n\tLowerCase\022-\n\005value\030\001 \001(\0162\027." +
      "foo.LowerCase.CaseEnum:\005lower\" \n\010CaseEnu" +
      "m\022\t\n\005UPPER\020\001\022\t\n\005lower\020\002\"\177\n\013AllocValues\022\017" +
      "\n\007o_bytes\030\001 \001(\014\022\020\n\010r_string\030\002 \003(\t\022\020\n\010a_s" +
      "tring\030\003 \002(\t\022\017\n\007a_bytes\030\004 \002(\014\022*\n\006a_mess\030\005" +
      " \002(\0132\032.foo.DefaultRequiredValues\"\302\021\n\030Tes" +
      "tRequiredFieldsBitmap\022\016\n\006field1\030\001 \002(\t\022\016\n" +
      "\006field2\030\002 \001(\t\022\016\n\006field3\030\003 \001(\t\022\016\n\006field4\030" +
      "\004 \001(\t\022\016\n\006field5\030\005 \001(\t\022\016\n\006field6\030\006 \001(\t\022\016\n" +
      "\006field7\030\007 \001(\t\022\016\n\006field8\030\010 \001(\t\022\016\n\006field9\030" +
      "\t \001(\t\022\017\n\007field10\030\n \001(\t\022\017\n\007field11\030\013 \001(\t\022" +
      "\017\n\007field12\030\014 \001(\t\022\017\n\007field13\030\r \001(\t\022\017\n\007fie" +
      "ld14\030\016 \001(\t\022\017\n\007field15\030\017 \001(\t\022\017\n\007field16\030\020" +
      " \001(\t\022\017\n\007field17\030\021 \001(\t\022\017\n\007field18\030\022 \001(\t\022\017" +
      "\n\007field19\030\023 \001(\t\022\017\n\007field20\030\024 \001(\t\022\017\n\007fiel" +
      "d21\030\025 \001(\t\022\017\n\007field22\030\026 \001(\t\022\017\n\007field23\030\027 " +
      "\001(\t\022\017\n\007field24\030\030 \001(\t\022\017\n\007field25\030\031 \001(\t\022\017\n" +
      "\007field26\030\032 \001(\t\022\017\n\007field27\030\033 \001(\t\022\017\n\007field" +
      "28\030\034 \001(\t\022\017\n\007field29\030\035 \001(\t\022\017\n\007field30\030\036 \001" +
      "(\t\022\017\n\007field31\030\037 \001(\t\022\017\n\007field32\030  \001(\t\022\017\n\007" +
      "field33\030! \001(\t\022\017\n\007field34\030\" \001(\t\022\017\n\007field3" +
      "5\030# \001(\t\022\017\n\007field36\030$ \001(\t\022\017\n\007field37\030% \001(" +
      "\t\022\017\n\007field38\030& \001(\t\022\017\n\007field39\030\' \001(\t\022\017\n\007f" +
      "ield40\030( \001(\t\022\017\n\007field41\030) \001(\t\022\017\n\007field42" +
      "\030* \001(\t\022\017\n\007field43\030+ \001(\t\022\017\n\007field44\030, \001(\t" +
      "\022\017\n\007field45\030- \001(\t\022\017\n\007field46\030. \001(\t\022\017\n\007fi" +
      "eld47\030/ \001(\t\022\017\n\007field48\0300 \001(\t\022\017\n\007field49\030" +
      "1 \001(\t\022\017\n\007field50\0302 \001(\t\022\017\n\007field51\0303 \001(\t\022" +
      "\017\n\007field52\0304 \001(\t\022\017\n\007field53\0305 \001(\t\022\017\n\007fie" +
      "ld54\0306 \001(\t\022\017\n\007field55\0307 \001(\t\022\017\n\007field56\0308" +
      " \001(\t\022\017\n\007field57\0309 \001(\t\022\017\n\007field58\030: \001(\t\022\017" +
      "\n\007field59\030; \001(\t\022\017\n\007field60\030< \001(\t\022\017\n\007fiel" +
      "d61\030= \001(\t\022\017\n\007field62\030> \001(\t\022\017\n\007field63\030? " +
      "\001(\t\022\017\n\007field64\030@ \001(\t\022\017\n\007field65\030A \001(\t\022\017\n" +
      "\007field66\030B \001(\t\022\017\n\007field67\030C \001(\t\022\017\n\007field" +
      "68\030D \001(\t\022\017\n\007field69\030E \001(\t\022\017\n\007field70\030F \001" +
      "(\t\022\017\n\007field71\030G \001(\t\022\017\n\007field72\030H \001(\t\022\017\n\007" +
      "field73\030I \001(\t\022\017\n\007field74\030J \001(\t\022\017\n\007field7" +
      "5\030K \001(\t\022\017\n\007field76\030L \001(\t\022\017\n\007field77\030M \001(" +
      "\t\022\017\n\007field78\030N \001(\t\022\017\n\007field79\030O \001(\t\022\017\n\007f" +
      "ield80\030P \001(\t\022\017\n\007field81\030Q \001(\t\022\017\n\007field82" +
      "\030R \001(\t\022\017\n\007field83\030S \001(\t\022\017\n\007field84\030T \001(\t" +
      "\022\017\n\007field85\030U \001(\t\022\017\n\007field86\030V \001(\t\022\017\n\007fi" +
      "eld87\030W \001(\t\022\017\n\007field88\030X \001(\t\022\017\n\007field89\030" +
      "Y \001(\t\022\017\n\007field90\030Z \001(\t\022\017\n\007field91\030[ \001(\t\022" +
      "\017\n\007field92\030\\ \001(\t\022\017\n\007field93\030] \001(\t\022\017\n\007fie" +
      "ld94\030^ \001(\t\022\017\n\007field95\030_ \001(\t\022\017\n\007field96\030`" +
      " \001(\t\022\017\n\007field97\030a \001(\t\022\017\n\007field98\030b \001(\t\022\017" +
      "\n\007field99\030c \001(\t\022\020\n\010field100\030d \001(\t\022\020\n\010fie" +
      "ld101\030e \001(\t\022\020\n\010field102\030f \001(\t\022\020\n\010field10" +
      "3\030g \001(\t\022\020\n\010field104\030h \001(\t\022\020\n\010field105\030i " +
      "\001(\t\022\020\n\010field106\030j \001(\t\022\020\n\010field107\030k \001(\t\022" +
      "\020\n\010field108\030l \001(\t\022\020\n\010field109\030m \001(\t\022\020\n\010f" +
      "ield110\030n \001(\t\022\020\n\010field111\030o \001(\t\022\020\n\010field" +
      "112\030p \001(\t\022\020\n\010field113\030q \001(\t\022\020\n\010field114\030" +
      "r \001(\t\022\020\n\010field115\030s \001(\t\022\020\n\010field116\030t \001(" +
      "\t\022\020\n\010field117\030u \001(\t\022\020\n\010field118\030v \001(\t\022\020\n" +
      "\010field119\030w \001(\t\022\020\n\010field120\030x \001(\t\022\020\n\010fie" +
      "ld121\030y \001(\t\022\020\n\010field122\030z \001(\t\022\020\n\010field12" +
      "3\030{ \001(\t\022\020\n\010field124\030| \001(\t\022\020\n\010field125\030} " +
      "\001(\t\022\020\n\010field126\030~ \001(\t\022\020\n\010field127\030\177 \001(\t\022" +
      "\021\n\010field128\030\200\001 \001(\t\022\021\n\010field129\030\201\001 \002(\t\"\226\001" +
      "\n\016TestFieldFlags\022\021\n\tno_flags1\030\001 \001(\005\022\021\n\tn" +
      "o_flags2\030\002 \002(\005\022\021\n\tno_flags3\030\003 \003(\005\022\022\n\006pac" +
      "ked\030\004 \003(\005B\002\020\001\022\037\n\021packed_deprecated\030\005 \003(\005" +
      "B\004\020\001\030\001\022\026\n\ndeprecated\030\006 \003(\005B\002\030\001\"\350\002\n\020TestM" +
      "essageCheck\0226\n\014required_msg\030\001 \002(\0132 .foo." +
      "TestMessageCheck.SubMessage\0226\n\014repeated_" +
      "msg\030\002 \003(\0132 .foo.TestMessageCheck.SubMess" +
      "age\0226\n\014optional_msg\030\003 \001(\0132 .foo.TestMess" +
      "ageCheck.SubMessage\022\027\n\017required_string\030\004" +
      " \002(\t\022\027\n\017repeated_string\030\005 \003(\t\022\027\n\017optiona" +
      "l_string\030\006 \001(\t\022\026\n\016required_bytes\030\007 \002(\014\022\026" +
      "\n\016repeated_bytes\030\010 \003(\014\022\026\n\016optional_bytes" +
      "\030\t \001(\014\032\031\n\nSubMessage\022\013\n\003str\030\001 \002(\t\"\321\001\n\017Te" +
      "stMessSubMess\022\037\n\010rep_mess\030\001 \002(\0132\r.foo.Te" +
      "stMess\022\'\n\010opt_mess\030\002 \002(\0132\025.foo.TestMessO" +
      "ptional\022&\n\noneof_mess\030\003 \002(\0132\022.foo.TestMe" +
      "ssOneof\022\036\n\010req_mess\030\004 \002(\0132\014.foo.SubMess\022" +
      ",\n\010def_mess\030\005 \002(\0132\032.foo.DefaultOptionalV" +
      "alues*C\n\rTestEnumSmall\022\026\n\tNEG_VALUE\020\377\377\377\377" +
      "\377\377\377\377\377\001\022\t\n\005VALUE\020\000\022\017\n\013OTHER_VALUE\020\001*\357\001\n\010T" +
      "estEnum\022\033\n\016VALUENEG123456\020\300\273\370\377\377\377\377\377\377\001\022\026\n\t" +
      "VALUENEG1\020\377\377\377\377\377\377\377\377\377\001\022\n\n\006VALUE0\020\000\022\n\n\006VALU" +
      "E1\020\001\022\014\n\010VALUE127\020\177\022\r\n\010VALUE128\020\200\001\022\017\n\nVAL" +
      "UE16383\020\377\177\022\020\n\nVALUE16384\020\200\200\001\022\022\n\014VALUE209" +
      "7151\020\377\377\177\022\023\n\014VALUE2097152\020\200\200\200\001\022\025\n\016VALUE26" +
      "8435455\020\377\377\377\177\022\026\n\016VALUE268435456\020\200\200\200\200\001*\206\001\n" +
      "\021TestEnumDupValues\022\013\n\007VALUE_A\020*\022\013\n\007VALUE" +
      "_B\020*\022\013\n\007VALUE_C\020*\022\014\n\007VALUE_D\020\232\005\022\014\n\007VALUE" +
      "_E\020\232\005\022\014\n\007VALUE_F\020\350\007\022\r\n\010VALUE_AA\020\350\007\022\r\n\010VA" +
      "LUE_BB\020\351\007\032\002\020\001"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_foo_SubMess_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_foo_SubMess_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_SubMess_descriptor,
        new java.lang.String[] { "Test", "Val1", "Val2", "Rep", "Sub1", "Sub2", });
    internal_static_foo_SubMess_SubSubMess_descriptor =
      internal_static_foo_SubMess_descriptor.getNestedTypes().get(0);
    internal_static_foo_SubMess_SubSubMess_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_SubMess_SubSubMess_descriptor,
        new java.lang.String[] { "Val1", "Rep", "Bytes1", "Str1", });
    internal_static_foo_TestFieldNo15_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_foo_TestFieldNo15_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestFieldNo15_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestFieldNo16_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_foo_TestFieldNo16_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestFieldNo16_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestFieldNo2047_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_foo_TestFieldNo2047_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestFieldNo2047_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestFieldNo2048_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_foo_TestFieldNo2048_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestFieldNo2048_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestFieldNo262143_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_foo_TestFieldNo262143_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestFieldNo262143_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestFieldNo262144_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_foo_TestFieldNo262144_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestFieldNo262144_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestFieldNo33554431_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_foo_TestFieldNo33554431_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestFieldNo33554431_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestFieldNo33554432_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_foo_TestFieldNo33554432_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestFieldNo33554432_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMess_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_foo_TestMess_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMess_descriptor,
        new java.lang.String[] { "TestInt32", "TestSint32", "TestSfixed32", "TestInt64", "TestSint64", "TestSfixed64", "TestUint32", "TestFixed32", "TestUint64", "TestFixed64", "TestFloat", "TestDouble", "TestBoolean", "TestEnumSmall", "TestEnum", "TestString", "TestBytes", "TestMessage", });
    internal_static_foo_TestMessPacked_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_foo_TestMessPacked_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessPacked_descriptor,
        new java.lang.String[] { "TestInt32", "TestSint32", "TestSfixed32", "TestInt64", "TestSint64", "TestSfixed64", "TestUint32", "TestFixed32", "TestUint64", "TestFixed64", "TestFloat", "TestDouble", "TestBoolean", "TestEnumSmall", "TestEnum", });
    internal_static_foo_TestMessOptional_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_foo_TestMessOptional_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessOptional_descriptor,
        new java.lang.String[] { "TestInt32", "TestSint32", "TestSfixed32", "TestInt64", "TestSint64", "TestSfixed64", "TestUint32", "TestFixed32", "TestUint64", "TestFixed64", "TestFloat", "TestDouble", "TestBoolean", "TestEnumSmall", "TestEnum", "TestString", "TestBytes", "TestMessage", });
    internal_static_foo_TestMessOneof_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_foo_TestMessOneof_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessOneof_descriptor,
        new java.lang.String[] { "TestInt32", "TestSint32", "TestSfixed32", "TestInt64", "TestSint64", "TestSfixed64", "TestUint32", "TestFixed32", "TestUint64", "TestFixed64", "TestFloat", "TestDouble", "TestBoolean", "TestEnumSmall", "TestEnum", "TestString", "TestBytes", "TestMessage", "OptInt", "TestOneof", });
    internal_static_foo_TestMessRequiredInt32_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_foo_TestMessRequiredInt32_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredInt32_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredSInt32_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_foo_TestMessRequiredSInt32_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredSInt32_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredSFixed32_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_foo_TestMessRequiredSFixed32_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredSFixed32_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredInt64_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_foo_TestMessRequiredInt64_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredInt64_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredSInt64_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_foo_TestMessRequiredSInt64_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredSInt64_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredSFixed64_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_foo_TestMessRequiredSFixed64_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredSFixed64_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredUInt32_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_foo_TestMessRequiredUInt32_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredUInt32_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredFixed32_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_foo_TestMessRequiredFixed32_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredFixed32_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredUInt64_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_foo_TestMessRequiredUInt64_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredUInt64_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredFixed64_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_foo_TestMessRequiredFixed64_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredFixed64_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredFloat_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_foo_TestMessRequiredFloat_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredFloat_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredDouble_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_foo_TestMessRequiredDouble_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredDouble_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredBool_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_foo_TestMessRequiredBool_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredBool_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredEnum_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_foo_TestMessRequiredEnum_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredEnum_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredEnumSmall_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_foo_TestMessRequiredEnumSmall_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredEnumSmall_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredString_descriptor =
      getDescriptor().getMessageTypes().get(28);
    internal_static_foo_TestMessRequiredString_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredString_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredBytes_descriptor =
      getDescriptor().getMessageTypes().get(29);
    internal_static_foo_TestMessRequiredBytes_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredBytes_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_TestMessRequiredMessage_descriptor =
      getDescriptor().getMessageTypes().get(30);
    internal_static_foo_TestMessRequiredMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessRequiredMessage_descriptor,
        new java.lang.String[] { "Test", });
    internal_static_foo_EmptyMess_descriptor =
      getDescriptor().getMessageTypes().get(31);
    internal_static_foo_EmptyMess_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_EmptyMess_descriptor,
        new java.lang.String[] { });
    internal_static_foo_DefaultRequiredValues_descriptor =
      getDescriptor().getMessageTypes().get(32);
    internal_static_foo_DefaultRequiredValues_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_DefaultRequiredValues_descriptor,
        new java.lang.String[] { "VInt32", "VUint32", "VInt64", "VUint64", "VFloat", "VDouble", "VString", "VBytes", });
    internal_static_foo_DefaultOptionalValues_descriptor =
      getDescriptor().getMessageTypes().get(33);
    internal_static_foo_DefaultOptionalValues_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_DefaultOptionalValues_descriptor,
        new java.lang.String[] { "VInt32", "VUint32", "VInt64", "VUint64", "VFloat", "VDouble", "VString", "VBytes", });
    internal_static_foo_LowerCase_descriptor =
      getDescriptor().getMessageTypes().get(34);
    internal_static_foo_LowerCase_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_LowerCase_descriptor,
        new java.lang.String[] { "Value", });
    internal_static_foo_AllocValues_descriptor =
      getDescriptor().getMessageTypes().get(35);
    internal_static_foo_AllocValues_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_AllocValues_descriptor,
        new java.lang.String[] { "OBytes", "RString", "AString", "ABytes", "AMess", });
    internal_static_foo_TestRequiredFieldsBitmap_descriptor =
      getDescriptor().getMessageTypes().get(36);
    internal_static_foo_TestRequiredFieldsBitmap_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestRequiredFieldsBitmap_descriptor,
        new java.lang.String[] { "Field1", "Field2", "Field3", "Field4", "Field5", "Field6", "Field7", "Field8", "Field9", "Field10", "Field11", "Field12", "Field13", "Field14", "Field15", "Field16", "Field17", "Field18", "Field19", "Field20", "Field21", "Field22", "Field23", "Field24", "Field25", "Field26", "Field27", "Field28", "Field29", "Field30", "Field31", "Field32", "Field33", "Field34", "Field35", "Field36", "Field37", "Field38", "Field39", "Field40", "Field41", "Field42", "Field43", "Field44", "Field45", "Field46", "Field47", "Field48", "Field49", "Field50", "Field51", "Field52", "Field53", "Field54", "Field55", "Field56", "Field57", "Field58", "Field59", "Field60", "Field61", "Field62", "Field63", "Field64", "Field65", "Field66", "Field67", "Field68", "Field69", "Field70", "Field71", "Field72", "Field73", "Field74", "Field75", "Field76", "Field77", "Field78", "Field79", "Field80", "Field81", "Field82", "Field83", "Field84", "Field85", "Field86", "Field87", "Field88", "Field89", "Field90", "Field91", "Field92", "Field93", "Field94", "Field95", "Field96", "Field97", "Field98", "Field99", "Field100", "Field101", "Field102", "Field103", "Field104", "Field105", "Field106", "Field107", "Field108", "Field109", "Field110", "Field111", "Field112", "Field113", "Field114", "Field115", "Field116", "Field117", "Field118", "Field119", "Field120", "Field121", "Field122", "Field123", "Field124", "Field125", "Field126", "Field127", "Field128", "Field129", });
    internal_static_foo_TestFieldFlags_descriptor =
      getDescriptor().getMessageTypes().get(37);
    internal_static_foo_TestFieldFlags_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestFieldFlags_descriptor,
        new java.lang.String[] { "NoFlags1", "NoFlags2", "NoFlags3", "Packed", "PackedDeprecated", "Deprecated", });
    internal_static_foo_TestMessageCheck_descriptor =
      getDescriptor().getMessageTypes().get(38);
    internal_static_foo_TestMessageCheck_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessageCheck_descriptor,
        new java.lang.String[] { "RequiredMsg", "RepeatedMsg", "OptionalMsg", "RequiredString", "RepeatedString", "OptionalString", "RequiredBytes", "RepeatedBytes", "OptionalBytes", });
    internal_static_foo_TestMessageCheck_SubMessage_descriptor =
      internal_static_foo_TestMessageCheck_descriptor.getNestedTypes().get(0);
    internal_static_foo_TestMessageCheck_SubMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessageCheck_SubMessage_descriptor,
        new java.lang.String[] { "Str", });
    internal_static_foo_TestMessSubMess_descriptor =
      getDescriptor().getMessageTypes().get(39);
    internal_static_foo_TestMessSubMess_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_foo_TestMessSubMess_descriptor,
        new java.lang.String[] { "RepMess", "OptMess", "OneofMess", "ReqMess", "DefMess", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}