text:
package polybuf.core.test;

public final class VersionedV2 {
  private VersionedV2() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registry.add(polybuf.core.test.VersionedV2.optionalExtension);
    registry.add(polybuf.core.test.VersionedV2.repeatedExtension);
  }
  public interface FieldsOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string missing_optional = 3;
    boolean hasMissingOptional();
    String getMissingOptional();

    // repeated string missing_repeated = 4;
    java.util.List<String> getMissingRepeatedList();
    int getMissingRepeatedCount();
    String getMissingRepeated(int index);
  }
  public static final class Fields extends
      com.google.protobuf.GeneratedMessage
      implements FieldsOrBuilder {
    // Use Fields.newBuilder() to construct.
    private Fields(Builder builder) {
      super(builder);
    }
    private Fields(boolean noInit) {}

    private static final Fields defaultInstance;
    public static Fields getDefaultInstance() {
      return defaultInstance;
    }

    public Fields getDefaultInstanceForType() {
      return defaultInstance;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Fields_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Fields_fieldAccessorTable;
    }

    private int bitField0_;
    // optional string missing_optional = 3;
    public static final int MISSING_OPTIONAL_FIELD_NUMBER = 3;
    private java.lang.Object missingOptional_;
    public boolean hasMissingOptional() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getMissingOptional() {
      java.lang.Object ref = missingOptional_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          missingOptional_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getMissingOptionalBytes() {
      java.lang.Object ref = missingOptional_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        missingOptional_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // repeated string missing_repeated = 4;
    public static final int MISSING_REPEATED_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList missingRepeated_;
    public java.util.List<String>
        getMissingRepeatedList() {
      return missingRepeated_;
    }
    public int getMissingRepeatedCount() {
      return missingRepeated_.size();
    }
    public String getMissingRepeated(int index) {
      return missingRepeated_.get(index);
    }

    private void initFields() {
      missingOptional_ = "";
      missingRepeated_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(3, getMissingOptionalBytes());
      }
      for (int i = 0; i < missingRepeated_.size(); i++) {
        output.writeBytes(4, missingRepeated_.getByteString(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getMissingOptionalBytes());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < missingRepeated_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(missingRepeated_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getMissingRepeatedList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static polybuf.core.test.VersionedV2.Fields parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fields parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fields parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fields parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fields parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fields parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fields parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Fields parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Fields parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fields parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(polybuf.core.test.VersionedV2.Fields prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements polybuf.core.test.VersionedV2.FieldsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Fields_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Fields_fieldAccessorTable;
      }

      // Construct using polybuf.core.test.VersionedV2.Fields.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        missingOptional_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        missingRepeated_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return polybuf.core.test.VersionedV2.Fields.getDescriptor();
      }

      public polybuf.core.test.VersionedV2.Fields getDefaultInstanceForType() {
        return polybuf.core.test.VersionedV2.Fields.getDefaultInstance();
      }

      public polybuf.core.test.VersionedV2.Fields build() {
        polybuf.core.test.VersionedV2.Fields result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      private polybuf.core.test.VersionedV2.Fields buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        polybuf.core.test.VersionedV2.Fields result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }

      public polybuf.core.test.VersionedV2.Fields buildPartial() {
        polybuf.core.test.VersionedV2.Fields result = new polybuf.core.test.VersionedV2.Fields(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.missingOptional_ = missingOptional_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          missingRepeated_ = new com.google.protobuf.UnmodifiableLazyStringList(
              missingRepeated_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.missingRepeated_ = missingRepeated_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof polybuf.core.test.VersionedV2.Fields) {
          return mergeFrom((polybuf.core.test.VersionedV2.Fields)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(polybuf.core.test.VersionedV2.Fields other) {
        if (other == polybuf.core.test.VersionedV2.Fields.getDefaultInstance()) return this;
        if (other.hasMissingOptional()) {
          setMissingOptional(other.getMissingOptional());
        }
        if (!other.missingRepeated_.isEmpty()) {
          if (missingRepeated_.isEmpty()) {
            missingRepeated_ = other.missingRepeated_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureMissingRepeatedIsMutable();
            missingRepeated_.addAll(other.missingRepeated_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 26: {
              bitField0_ |= 0x00000001;
              missingOptional_ = input.readBytes();
              break;
            }
            case 34: {
              ensureMissingRepeatedIsMutable();
              missingRepeated_.add(input.readBytes());
              break;
            }
          }
        }
      }

      private int bitField0_;

      // optional string missing_optional = 3;
      private java.lang.Object missingOptional_ = "";
      public boolean hasMissingOptional() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getMissingOptional() {
        java.lang.Object ref = missingOptional_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          missingOptional_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setMissingOptional(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        missingOptional_ = value;
        onChanged();
        return this;
      }
      public Builder clearMissingOptional() {
        bitField0_ = (bitField0_ & ~0x00000001);
        missingOptional_ = getDefaultInstance().getMissingOptional();
        onChanged();
        return this;
      }
      void setMissingOptional(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        missingOptional_ = value;
        onChanged();
      }

      // repeated string missing_repeated = 4;
      private com.google.protobuf.LazyStringList missingRepeated_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureMissingRepeatedIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          missingRepeated_ = new com.google.protobuf.LazyStringArrayList(missingRepeated_);
          bitField0_ |= 0x00000002;
         }
      }
      public java.util.List<String>
          getMissingRepeatedList() {
        return java.util.Collections.unmodifiableList(missingRepeated_);
      }
      public int getMissingRepeatedCount() {
        return missingRepeated_.size();
      }
      public String getMissingRepeated(int index) {
        return missingRepeated_.get(index);
      }
      public Builder setMissingRepeated(
          int index, String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureMissingRepeatedIsMutable();
        missingRepeated_.set(index, value);
        onChanged();
        return this;
      }
      public Builder addMissingRepeated(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureMissingRepeatedIsMutable();
        missingRepeated_.add(value);
        onChanged();
        return this;
      }
      public Builder addAllMissingRepeated(
          java.lang.Iterable<String> values) {
        ensureMissingRepeatedIsMutable();
        super.addAll(values, missingRepeated_);
        onChanged();
        return this;
      }
      public Builder clearMissingRepeated() {
        missingRepeated_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      void addMissingRepeated(com.google.protobuf.ByteString value) {
        ensureMissingRepeatedIsMutable();
        missingRepeated_.add(value);
        onChanged();
      }

      // @@protoc_insertion_point(builder_scope:versioned.Fields)
    }

    static {
      defaultInstance = new Fields(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:versioned.Fields)
  }

  public interface OptionalityOrBuilder extends
      com.google.protobuf.GeneratedMessage.
          ExtendableMessageOrBuilder<Optionality> {

    // repeated string optional_repeated = 3;
    java.util.List<String> getOptionalRepeatedList();
    int getOptionalRepeatedCount();
    String getOptionalRepeated(int index);
  }
  public static final class Optionality extends
      com.google.protobuf.GeneratedMessage.ExtendableMessage<
        Optionality> implements OptionalityOrBuilder {
    // Use Optionality.newBuilder() to construct.
    private Optionality(Builder builder) {
      super(builder);
    }
    private Optionality(boolean noInit) {}

    private static final Optionality defaultInstance;
    public static Optionality getDefaultInstance() {
      return defaultInstance;
    }

    public Optionality getDefaultInstanceForType() {
      return defaultInstance;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Optionality_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Optionality_fieldAccessorTable;
    }

    // repeated string optional_repeated = 3;
    public static final int OPTIONAL_REPEATED_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList optionalRepeated_;
    public java.util.List<String>
        getOptionalRepeatedList() {
      return optionalRepeated_;
    }
    public int getOptionalRepeatedCount() {
      return optionalRepeated_.size();
    }
    public String getOptionalRepeated(int index) {
      return optionalRepeated_.get(index);
    }

    private void initFields() {
      optionalRepeated_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      com.google.protobuf.GeneratedMessage
        .ExtendableMessage<polybuf.core.test.VersionedV2.Optionality>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      extensionWriter.writeUntil(3, output);
      for (int i = 0; i < optionalRepeated_.size(); i++) {
        output.writeBytes(3, optionalRepeated_.getByteString(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < optionalRepeated_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(optionalRepeated_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getOptionalRepeatedList().size();
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static polybuf.core.test.VersionedV2.Optionality parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Optionality parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Optionality parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Optionality parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Optionality parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Optionality parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Optionality parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Optionality parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Optionality parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Optionality parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(polybuf.core.test.VersionedV2.Optionality prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
          polybuf.core.test.VersionedV2.Optionality, Builder> implements polybuf.core.test.VersionedV2.OptionalityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Optionality_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Optionality_fieldAccessorTable;
      }

      // Construct using polybuf.core.test.VersionedV2.Optionality.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        optionalRepeated_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return polybuf.core.test.VersionedV2.Optionality.getDescriptor();
      }

      public polybuf.core.test.VersionedV2.Optionality getDefaultInstanceForType() {
        return polybuf.core.test.VersionedV2.Optionality.getDefaultInstance();
      }

      public polybuf.core.test.VersionedV2.Optionality build() {
        polybuf.core.test.VersionedV2.Optionality result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      private polybuf.core.test.VersionedV2.Optionality buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        polybuf.core.test.VersionedV2.Optionality result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }

      public polybuf.core.test.VersionedV2.Optionality buildPartial() {
        polybuf.core.test.VersionedV2.Optionality result = new polybuf.core.test.VersionedV2.Optionality(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          optionalRepeated_ = new com.google.protobuf.UnmodifiableLazyStringList(
              optionalRepeated_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.optionalRepeated_ = optionalRepeated_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof polybuf.core.test.VersionedV2.Optionality) {
          return mergeFrom((polybuf.core.test.VersionedV2.Optionality)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(polybuf.core.test.VersionedV2.Optionality other) {
        if (other == polybuf.core.test.VersionedV2.Optionality.getDefaultInstance()) return this;
        if (!other.optionalRepeated_.isEmpty()) {
          if (optionalRepeated_.isEmpty()) {
            optionalRepeated_ = other.optionalRepeated_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureOptionalRepeatedIsMutable();
            optionalRepeated_.addAll(other.optionalRepeated_);
          }
          onChanged();
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!extensionsAreInitialized()) {

          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 26: {
              ensureOptionalRepeatedIsMutable();
              optionalRepeated_.add(input.readBytes());
              break;
            }
          }
        }
      }

      private int bitField0_;

      // repeated string optional_repeated = 3;
      private com.google.protobuf.LazyStringList optionalRepeated_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureOptionalRepeatedIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          optionalRepeated_ = new com.google.protobuf.LazyStringArrayList(optionalRepeated_);
          bitField0_ |= 0x00000001;
         }
      }
      public java.util.List<String>
          getOptionalRepeatedList() {
        return java.util.Collections.unmodifiableList(optionalRepeated_);
      }
      public int getOptionalRepeatedCount() {
        return optionalRepeated_.size();
      }
      public String getOptionalRepeated(int index) {
        return optionalRepeated_.get(index);
      }
      public Builder setOptionalRepeated(
          int index, String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureOptionalRepeatedIsMutable();
        optionalRepeated_.set(index, value);
        onChanged();
        return this;
      }
      public Builder addOptionalRepeated(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureOptionalRepeatedIsMutable();
        optionalRepeated_.add(value);
        onChanged();
        return this;
      }
      public Builder addAllOptionalRepeated(
          java.lang.Iterable<String> values) {
        ensureOptionalRepeatedIsMutable();
        super.addAll(values, optionalRepeated_);
        onChanged();
        return this;
      }
      public Builder clearOptionalRepeated() {
        optionalRepeated_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      void addOptionalRepeated(com.google.protobuf.ByteString value) {
        ensureOptionalRepeatedIsMutable();
        optionalRepeated_.add(value);
        onChanged();
      }

      // @@protoc_insertion_point(builder_scope:versioned.Optionality)
    }

    static {
      defaultInstance = new Optionality(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:versioned.Optionality)
  }

  public interface IntsOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required uint32 int32_uint32 = 1;
    boolean hasInt32Uint32();
    int getInt32Uint32();

    // required int64 int32_int64 = 2;
    boolean hasInt32Int64();
    long getInt32Int64();

    // required uint64 int32_uint64 = 3;
    boolean hasInt32Uint64();
    long getInt32Uint64();

    // required bool int32_bool = 4;
    boolean hasInt32Bool();
    boolean getInt32Bool();

    // required int64 uint32_int64 = 5;
    boolean hasUint32Int64();
    long getUint32Int64();

    // required uint64 uint32_uint64 = 6;
    boolean hasUint32Uint64();
    long getUint32Uint64();

    // required bool uint32_bool = 7;
    boolean hasUint32Bool();
    boolean getUint32Bool();

    // required uint64 int64_uint64 = 8;
    boolean hasInt64Uint64();
    long getInt64Uint64();

    // required bool int64_bool = 9;
    boolean hasInt64Bool();
    boolean getInt64Bool();

    // required bool uint64_bool = 10;
    boolean hasUint64Bool();
    boolean getUint64Bool();
  }
  public static final class Ints extends
      com.google.protobuf.GeneratedMessage
      implements IntsOrBuilder {
    // Use Ints.newBuilder() to construct.
    private Ints(Builder builder) {
      super(builder);
    }
    private Ints(boolean noInit) {}

    private static final Ints defaultInstance;
    public static Ints getDefaultInstance() {
      return defaultInstance;
    }

    public Ints getDefaultInstanceForType() {
      return defaultInstance;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Ints_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Ints_fieldAccessorTable;
    }

    private int bitField0_;
    // required uint32 int32_uint32 = 1;
    public static final int INT32_UINT32_FIELD_NUMBER = 1;
    private int int32Uint32_;
    public boolean hasInt32Uint32() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public int getInt32Uint32() {
      return int32Uint32_;
    }

    // required int64 int32_int64 = 2;
    public static final int INT32_INT64_FIELD_NUMBER = 2;
    private long int32Int64_;
    public boolean hasInt32Int64() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public long getInt32Int64() {
      return int32Int64_;
    }

    // required uint64 int32_uint64 = 3;
    public static final int INT32_UINT64_FIELD_NUMBER = 3;
    private long int32Uint64_;
    public boolean hasInt32Uint64() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public long getInt32Uint64() {
      return int32Uint64_;
    }

    // required bool int32_bool = 4;
    public static final int INT32_BOOL_FIELD_NUMBER = 4;
    private boolean int32Bool_;
    public boolean hasInt32Bool() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public boolean getInt32Bool() {
      return int32Bool_;
    }

    // required int64 uint32_int64 = 5;
    public static final int UINT32_INT64_FIELD_NUMBER = 5;
    private long uint32Int64_;
    public boolean hasUint32Int64() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public long getUint32Int64() {
      return uint32Int64_;
    }

    // required uint64 uint32_uint64 = 6;
    public static final int UINT32_UINT64_FIELD_NUMBER = 6;
    private long uint32Uint64_;
    public boolean hasUint32Uint64() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    public long getUint32Uint64() {
      return uint32Uint64_;
    }

    // required bool uint32_bool = 7;
    public static final int UINT32_BOOL_FIELD_NUMBER = 7;
    private boolean uint32Bool_;
    public boolean hasUint32Bool() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    public boolean getUint32Bool() {
      return uint32Bool_;
    }

    // required uint64 int64_uint64 = 8;
    public static final int INT64_UINT64_FIELD_NUMBER = 8;
    private long int64Uint64_;
    public boolean hasInt64Uint64() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    public long getInt64Uint64() {
      return int64Uint64_;
    }

    // required bool int64_bool = 9;
    public static final int INT64_BOOL_FIELD_NUMBER = 9;
    private boolean int64Bool_;
    public boolean hasInt64Bool() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    public boolean getInt64Bool() {
      return int64Bool_;
    }

    // required bool uint64_bool = 10;
    public static final int UINT64_BOOL_FIELD_NUMBER = 10;
    private boolean uint64Bool_;
    public boolean hasUint64Bool() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    public boolean getUint64Bool() {
      return uint64Bool_;
    }

    private void initFields() {
      int32Uint32_ = 0;
      int32Int64_ = 0L;
      int32Uint64_ = 0L;
      int32Bool_ = false;
      uint32Int64_ = 0L;
      uint32Uint64_ = 0L;
      uint32Bool_ = false;
      int64Uint64_ = 0L;
      int64Bool_ = false;
      uint64Bool_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasInt32Uint32()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasInt32Int64()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasInt32Uint64()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasInt32Bool()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUint32Int64()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUint32Uint64()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUint32Bool()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasInt64Uint64()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasInt64Bool()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUint64Bool()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(1, int32Uint32_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, int32Int64_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt64(3, int32Uint64_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(4, int32Bool_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt64(5, uint32Int64_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeUInt64(6, uint32Uint64_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBool(7, uint32Bool_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeUInt64(8, int64Uint64_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeBool(9, int64Bool_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeBool(10, uint64Bool_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, int32Uint32_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, int32Int64_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, int32Uint64_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, int32Bool_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, uint32Int64_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(6, uint32Uint64_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, uint32Bool_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(8, int64Uint64_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(9, int64Bool_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, uint64Bool_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static polybuf.core.test.VersionedV2.Ints parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Ints parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Ints parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Ints parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Ints parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Ints parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Ints parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Ints parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Ints parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Ints parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(polybuf.core.test.VersionedV2.Ints prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements polybuf.core.test.VersionedV2.IntsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Ints_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Ints_fieldAccessorTable;
      }

      // Construct using polybuf.core.test.VersionedV2.Ints.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        int32Uint32_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        int32Int64_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        int32Uint64_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000004);
        int32Bool_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        uint32Int64_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000010);
        uint32Uint64_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000020);
        uint32Bool_ = false;
        bitField0_ = (bitField0_ & ~0x00000040);
        int64Uint64_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000080);
        int64Bool_ = false;
        bitField0_ = (bitField0_ & ~0x00000100);
        uint64Bool_ = false;
        bitField0_ = (bitField0_ & ~0x00000200);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return polybuf.core.test.VersionedV2.Ints.getDescriptor();
      }

      public polybuf.core.test.VersionedV2.Ints getDefaultInstanceForType() {
        return polybuf.core.test.VersionedV2.Ints.getDefaultInstance();
      }

      public polybuf.core.test.VersionedV2.Ints build() {
        polybuf.core.test.VersionedV2.Ints result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      private polybuf.core.test.VersionedV2.Ints buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        polybuf.core.test.VersionedV2.Ints result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }

      public polybuf.core.test.VersionedV2.Ints buildPartial() {
        polybuf.core.test.VersionedV2.Ints result = new polybuf.core.test.VersionedV2.Ints(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.int32Uint32_ = int32Uint32_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.int32Int64_ = int32Int64_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.int32Uint64_ = int32Uint64_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.int32Bool_ = int32Bool_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.uint32Int64_ = uint32Int64_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.uint32Uint64_ = uint32Uint64_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.uint32Bool_ = uint32Bool_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.int64Uint64_ = int64Uint64_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.int64Bool_ = int64Bool_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        result.uint64Bool_ = uint64Bool_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof polybuf.core.test.VersionedV2.Ints) {
          return mergeFrom((polybuf.core.test.VersionedV2.Ints)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(polybuf.core.test.VersionedV2.Ints other) {
        if (other == polybuf.core.test.VersionedV2.Ints.getDefaultInstance()) return this;
        if (other.hasInt32Uint32()) {
          setInt32Uint32(other.getInt32Uint32());
        }
        if (other.hasInt32Int64()) {
          setInt32Int64(other.getInt32Int64());
        }
        if (other.hasInt32Uint64()) {
          setInt32Uint64(other.getInt32Uint64());
        }
        if (other.hasInt32Bool()) {
          setInt32Bool(other.getInt32Bool());
        }
        if (other.hasUint32Int64()) {
          setUint32Int64(other.getUint32Int64());
        }
        if (other.hasUint32Uint64()) {
          setUint32Uint64(other.getUint32Uint64());
        }
        if (other.hasUint32Bool()) {
          setUint32Bool(other.getUint32Bool());
        }
        if (other.hasInt64Uint64()) {
          setInt64Uint64(other.getInt64Uint64());
        }
        if (other.hasInt64Bool()) {
          setInt64Bool(other.getInt64Bool());
        }
        if (other.hasUint64Bool()) {
          setUint64Bool(other.getUint64Bool());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasInt32Uint32()) {

          return false;
        }
        if (!hasInt32Int64()) {

          return false;
        }
        if (!hasInt32Uint64()) {

          return false;
        }
        if (!hasInt32Bool()) {

          return false;
        }
        if (!hasUint32Int64()) {

          return false;
        }
        if (!hasUint32Uint64()) {

          return false;
        }
        if (!hasUint32Bool()) {

          return false;
        }
        if (!hasInt64Uint64()) {

          return false;
        }
        if (!hasInt64Bool()) {

          return false;
        }
        if (!hasUint64Bool()) {

          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              int32Uint32_ = input.readUInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              int32Int64_ = input.readInt64();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              int32Uint64_ = input.readUInt64();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              int32Bool_ = input.readBool();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              uint32Int64_ = input.readInt64();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              uint32Uint64_ = input.readUInt64();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              uint32Bool_ = input.readBool();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000080;
              int64Uint64_ = input.readUInt64();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000100;
              int64Bool_ = input.readBool();
              break;
            }
            case 80: {
              bitField0_ |= 0x00000200;
              uint64Bool_ = input.readBool();
              break;
            }
          }
        }
      }

      private int bitField0_;

      // required uint32 int32_uint32 = 1;
      private int int32Uint32_ ;
      public boolean hasInt32Uint32() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public int getInt32Uint32() {
        return int32Uint32_;
      }
      public Builder setInt32Uint32(int value) {
        bitField0_ |= 0x00000001;
        int32Uint32_ = value;
        onChanged();
        return this;
      }
      public Builder clearInt32Uint32() {
        bitField0_ = (bitField0_ & ~0x00000001);
        int32Uint32_ = 0;
        onChanged();
        return this;
      }

      // required int64 int32_int64 = 2;
      private long int32Int64_ ;
      public boolean hasInt32Int64() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public long getInt32Int64() {
        return int32Int64_;
      }
      public Builder setInt32Int64(long value) {
        bitField0_ |= 0x00000002;
        int32Int64_ = value;
        onChanged();
        return this;
      }
      public Builder clearInt32Int64() {
        bitField0_ = (bitField0_ & ~0x00000002);
        int32Int64_ = 0L;
        onChanged();
        return this;
      }

      // required uint64 int32_uint64 = 3;
      private long int32Uint64_ ;
      public boolean hasInt32Uint64() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public long getInt32Uint64() {
        return int32Uint64_;
      }
      public Builder setInt32Uint64(long value) {
        bitField0_ |= 0x00000004;
        int32Uint64_ = value;
        onChanged();
        return this;
      }
      public Builder clearInt32Uint64() {
        bitField0_ = (bitField0_ & ~0x00000004);
        int32Uint64_ = 0L;
        onChanged();
        return this;
      }

      // required bool int32_bool = 4;
      private boolean int32Bool_ ;
      public boolean hasInt32Bool() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public boolean getInt32Bool() {
        return int32Bool_;
      }
      public Builder setInt32Bool(boolean value) {
        bitField0_ |= 0x00000008;
        int32Bool_ = value;
        onChanged();
        return this;
      }
      public Builder clearInt32Bool() {
        bitField0_ = (bitField0_ & ~0x00000008);
        int32Bool_ = false;
        onChanged();
        return this;
      }

      // required int64 uint32_int64 = 5;
      private long uint32Int64_ ;
      public boolean hasUint32Int64() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public long getUint32Int64() {
        return uint32Int64_;
      }
      public Builder setUint32Int64(long value) {
        bitField0_ |= 0x00000010;
        uint32Int64_ = value;
        onChanged();
        return this;
      }
      public Builder clearUint32Int64() {
        bitField0_ = (bitField0_ & ~0x00000010);
        uint32Int64_ = 0L;
        onChanged();
        return this;
      }

      // required uint64 uint32_uint64 = 6;
      private long uint32Uint64_ ;
      public boolean hasUint32Uint64() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public long getUint32Uint64() {
        return uint32Uint64_;
      }
      public Builder setUint32Uint64(long value) {
        bitField0_ |= 0x00000020;
        uint32Uint64_ = value;
        onChanged();
        return this;
      }
      public Builder clearUint32Uint64() {
        bitField0_ = (bitField0_ & ~0x00000020);
        uint32Uint64_ = 0L;
        onChanged();
        return this;
      }

      // required bool uint32_bool = 7;
      private boolean uint32Bool_ ;
      public boolean hasUint32Bool() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public boolean getUint32Bool() {
        return uint32Bool_;
      }
      public Builder setUint32Bool(boolean value) {
        bitField0_ |= 0x00000040;
        uint32Bool_ = value;
        onChanged();
        return this;
      }
      public Builder clearUint32Bool() {
        bitField0_ = (bitField0_ & ~0x00000040);
        uint32Bool_ = false;
        onChanged();
        return this;
      }

      // required uint64 int64_uint64 = 8;
      private long int64Uint64_ ;
      public boolean hasInt64Uint64() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      public long getInt64Uint64() {
        return int64Uint64_;
      }
      public Builder setInt64Uint64(long value) {
        bitField0_ |= 0x00000080;
        int64Uint64_ = value;
        onChanged();
        return this;
      }
      public Builder clearInt64Uint64() {
        bitField0_ = (bitField0_ & ~0x00000080);
        int64Uint64_ = 0L;
        onChanged();
        return this;
      }

      // required bool int64_bool = 9;
      private boolean int64Bool_ ;
      public boolean hasInt64Bool() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      public boolean getInt64Bool() {
        return int64Bool_;
      }
      public Builder setInt64Bool(boolean value) {
        bitField0_ |= 0x00000100;
        int64Bool_ = value;
        onChanged();
        return this;
      }
      public Builder clearInt64Bool() {
        bitField0_ = (bitField0_ & ~0x00000100);
        int64Bool_ = false;
        onChanged();
        return this;
      }

      // required bool uint64_bool = 10;
      private boolean uint64Bool_ ;
      public boolean hasUint64Bool() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      public boolean getUint64Bool() {
        return uint64Bool_;
      }
      public Builder setUint64Bool(boolean value) {
        bitField0_ |= 0x00000200;
        uint64Bool_ = value;
        onChanged();
        return this;
      }
      public Builder clearUint64Bool() {
        bitField0_ = (bitField0_ & ~0x00000200);
        uint64Bool_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:versioned.Ints)
    }

    static {
      defaultInstance = new Ints(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:versioned.Ints)
  }

  public interface SintsOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required sint64 sint32_sint64 = 1;
    boolean hasSint32Sint64();
    long getSint32Sint64();
  }
  public static final class Sints extends
      com.google.protobuf.GeneratedMessage
      implements SintsOrBuilder {
    // Use Sints.newBuilder() to construct.
    private Sints(Builder builder) {
      super(builder);
    }
    private Sints(boolean noInit) {}

    private static final Sints defaultInstance;
    public static Sints getDefaultInstance() {
      return defaultInstance;
    }

    public Sints getDefaultInstanceForType() {
      return defaultInstance;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Sints_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Sints_fieldAccessorTable;
    }

    private int bitField0_;
    // required sint64 sint32_sint64 = 1;
    public static final int SINT32_SINT64_FIELD_NUMBER = 1;
    private long sint32Sint64_;
    public boolean hasSint32Sint64() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public long getSint32Sint64() {
      return sint32Sint64_;
    }

    private void initFields() {
      sint32Sint64_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeSInt64(1, sint32Sint64_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt64Size(1, sint32Sint64_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static polybuf.core.test.VersionedV2.Sints parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Sints parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Sints parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Sints parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Sints parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Sints parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Sints parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Sints parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Sints parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Sints parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(polybuf.core.test.VersionedV2.Sints prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements polybuf.core.test.VersionedV2.SintsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Sints_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Sints_fieldAccessorTable;
      }

      // Construct using polybuf.core.test.VersionedV2.Sints.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        sint32Sint64_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return polybuf.core.test.VersionedV2.Sints.getDescriptor();
      }

      public polybuf.core.test.VersionedV2.Sints getDefaultInstanceForType() {
        return polybuf.core.test.VersionedV2.Sints.getDefaultInstance();
      }

      public polybuf.core.test.VersionedV2.Sints build() {
        polybuf.core.test.VersionedV2.Sints result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      private polybuf.core.test.VersionedV2.Sints buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        polybuf.core.test.VersionedV2.Sints result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }

      public polybuf.core.test.VersionedV2.Sints buildPartial() {
        polybuf.core.test.VersionedV2.Sints result = new polybuf.core.test.VersionedV2.Sints(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.sint32Sint64_ = sint32Sint64_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof polybuf.core.test.VersionedV2.Sints) {
          return mergeFrom((polybuf.core.test.VersionedV2.Sints)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(polybuf.core.test.VersionedV2.Sints other) {
        if (other == polybuf.core.test.VersionedV2.Sints.getDefaultInstance()) return this;
        if (other.hasSint32Sint64()) {
          setSint32Sint64(other.getSint32Sint64());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSint32Sint64()) {

          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              sint32Sint64_ = input.readSInt64();
              break;
            }
          }
        }
      }

      private int bitField0_;

      // required sint64 sint32_sint64 = 1;
      private long sint32Sint64_ ;
      public boolean hasSint32Sint64() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public long getSint32Sint64() {
        return sint32Sint64_;
      }
      public Builder setSint32Sint64(long value) {
        bitField0_ |= 0x00000001;
        sint32Sint64_ = value;
        onChanged();
        return this;
      }
      public Builder clearSint32Sint64() {
        bitField0_ = (bitField0_ & ~0x00000001);
        sint32Sint64_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:versioned.Sints)
    }

    static {
      defaultInstance = new Sints(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:versioned.Sints)
  }

  public interface StringsOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required bytes string_bytes = 1;
    boolean hasStringBytes();
    com.google.protobuf.ByteString getStringBytes();
  }
  public static final class Strings extends
      com.google.protobuf.GeneratedMessage
      implements StringsOrBuilder {
    // Use Strings.newBuilder() to construct.
    private Strings(Builder builder) {
      super(builder);
    }
    private Strings(boolean noInit) {}

    private static final Strings defaultInstance;
    public static Strings getDefaultInstance() {
      return defaultInstance;
    }

    public Strings getDefaultInstanceForType() {
      return defaultInstance;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Strings_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Strings_fieldAccessorTable;
    }

    private int bitField0_;
    // required bytes string_bytes = 1;
    public static final int STRING_BYTES_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString stringBytes_;
    public boolean hasStringBytes() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public com.google.protobuf.ByteString getStringBytes() {
      return stringBytes_;
    }

    private void initFields() {
      stringBytes_ = com.google.protobuf.ByteString.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, stringBytes_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, stringBytes_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static polybuf.core.test.VersionedV2.Strings parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Strings parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Strings parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Strings parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Strings parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Strings parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Strings parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Strings parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Strings parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Strings parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(polybuf.core.test.VersionedV2.Strings prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements polybuf.core.test.VersionedV2.StringsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Strings_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Strings_fieldAccessorTable;
      }

      // Construct using polybuf.core.test.VersionedV2.Strings.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        stringBytes_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return polybuf.core.test.VersionedV2.Strings.getDescriptor();
      }

      public polybuf.core.test.VersionedV2.Strings getDefaultInstanceForType() {
        return polybuf.core.test.VersionedV2.Strings.getDefaultInstance();
      }

      public polybuf.core.test.VersionedV2.Strings build() {
        polybuf.core.test.VersionedV2.Strings result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      private polybuf.core.test.VersionedV2.Strings buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        polybuf.core.test.VersionedV2.Strings result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }

      public polybuf.core.test.VersionedV2.Strings buildPartial() {
        polybuf.core.test.VersionedV2.Strings result = new polybuf.core.test.VersionedV2.Strings(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.stringBytes_ = stringBytes_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof polybuf.core.test.VersionedV2.Strings) {
          return mergeFrom((polybuf.core.test.VersionedV2.Strings)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(polybuf.core.test.VersionedV2.Strings other) {
        if (other == polybuf.core.test.VersionedV2.Strings.getDefaultInstance()) return this;
        if (other.hasStringBytes()) {
          setStringBytes(other.getStringBytes());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasStringBytes()) {

          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              stringBytes_ = input.readBytes();
              break;
            }
          }
        }
      }

      private int bitField0_;

      // required bytes string_bytes = 1;
      private com.google.protobuf.ByteString stringBytes_ = com.google.protobuf.ByteString.EMPTY;
      public boolean hasStringBytes() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public com.google.protobuf.ByteString getStringBytes() {
        return stringBytes_;
      }
      public Builder setStringBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        stringBytes_ = value;
        onChanged();
        return this;
      }
      public Builder clearStringBytes() {
        bitField0_ = (bitField0_ & ~0x00000001);
        stringBytes_ = getDefaultInstance().getStringBytes();
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:versioned.Strings)
    }

    static {
      defaultInstance = new Strings(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:versioned.Strings)
  }

  public interface MessagesOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required bytes required = 1;
    boolean hasRequired();
    com.google.protobuf.ByteString getRequired();

    // optional bytes optional = 2;
    boolean hasOptional();
    com.google.protobuf.ByteString getOptional();

    // repeated bytes repeated = 4;
    java.util.List<com.google.protobuf.ByteString> getRepeatedList();
    int getRepeatedCount();
    com.google.protobuf.ByteString getRepeated(int index);
  }
  public static final class Messages extends
      com.google.protobuf.GeneratedMessage
      implements MessagesOrBuilder {
    // Use Messages.newBuilder() to construct.
    private Messages(Builder builder) {
      super(builder);
    }
    private Messages(boolean noInit) {}

    private static final Messages defaultInstance;
    public static Messages getDefaultInstance() {
      return defaultInstance;
    }

    public Messages getDefaultInstanceForType() {
      return defaultInstance;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Messages_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Messages_fieldAccessorTable;
    }

    public interface FieldOrBuilder
        extends com.google.protobuf.MessageOrBuilder {

      // required int32 id = 1;
      boolean hasId();
      int getId();

      // optional string text = 2;
      boolean hasText();
      String getText();
    }
    public static final class Field extends
        com.google.protobuf.GeneratedMessage
        implements FieldOrBuilder {
      // Use Field.newBuilder() to construct.
      private Field(Builder builder) {
        super(builder);
      }
      private Field(boolean noInit) {}

      private static final Field defaultInstance;
      public static Field getDefaultInstance() {
        return defaultInstance;
      }

      public Field getDefaultInstanceForType() {
        return defaultInstance;
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Messages_Field_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Messages_Field_fieldAccessorTable;
      }

      private int bitField0_;
      // required int32 id = 1;
      public static final int ID_FIELD_NUMBER = 1;
      private int id_;
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public int getId() {
        return id_;
      }

      // optional string text = 2;
      public static final int TEXT_FIELD_NUMBER = 2;
      private java.lang.Object text_;
      public boolean hasText() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getText() {
        java.lang.Object ref = text_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            text_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getTextBytes() {
        java.lang.Object ref = text_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          text_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private void initFields() {
        id_ = 0;
        text_ = "";
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;

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

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeInt32(1, id_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getTextBytes());
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, id_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getTextBytes());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static polybuf.core.test.VersionedV2.Messages.Field parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static polybuf.core.test.VersionedV2.Messages.Field parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static polybuf.core.test.VersionedV2.Messages.Field parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static polybuf.core.test.VersionedV2.Messages.Field parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static polybuf.core.test.VersionedV2.Messages.Field parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static polybuf.core.test.VersionedV2.Messages.Field parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static polybuf.core.test.VersionedV2.Messages.Field parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static polybuf.core.test.VersionedV2.Messages.Field parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static polybuf.core.test.VersionedV2.Messages.Field parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static polybuf.core.test.VersionedV2.Messages.Field parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(polybuf.core.test.VersionedV2.Messages.Field prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements polybuf.core.test.VersionedV2.Messages.FieldOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return polybuf.core.test.VersionedV2.internal_static_versioned_Messages_Field_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return polybuf.core.test.VersionedV2.internal_static_versioned_Messages_Field_fieldAccessorTable;
        }

        // Construct using polybuf.core.test.VersionedV2.Messages.Field.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          id_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          text_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return polybuf.core.test.VersionedV2.Messages.Field.getDescriptor();
        }

        public polybuf.core.test.VersionedV2.Messages.Field getDefaultInstanceForType() {
          return polybuf.core.test.VersionedV2.Messages.Field.getDefaultInstance();
        }

        public polybuf.core.test.VersionedV2.Messages.Field build() {
          polybuf.core.test.VersionedV2.Messages.Field result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        private polybuf.core.test.VersionedV2.Messages.Field buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          polybuf.core.test.VersionedV2.Messages.Field result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }

        public polybuf.core.test.VersionedV2.Messages.Field buildPartial() {
          polybuf.core.test.VersionedV2.Messages.Field result = new polybuf.core.test.VersionedV2.Messages.Field(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.id_ = id_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.text_ = text_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof polybuf.core.test.VersionedV2.Messages.Field) {
            return mergeFrom((polybuf.core.test.VersionedV2.Messages.Field)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(polybuf.core.test.VersionedV2.Messages.Field other) {
          if (other == polybuf.core.test.VersionedV2.Messages.Field.getDefaultInstance()) return this;
          if (other.hasId()) {
            setId(other.getId());
          }
          if (other.hasText()) {
            setText(other.getText());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }

        public final boolean isInitialized() {
          if (!hasId()) {

            return false;
          }
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                id_ = input.readInt32();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                text_ = input.readBytes();
                break;
              }
            }
          }
        }

        private int bitField0_;

        // required int32 id = 1;
        private int id_ ;
        public boolean hasId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public int getId() {
          return id_;
        }
        public Builder setId(int value) {
          bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = 0;
          onChanged();
          return this;
        }

        // optional string text = 2;
        private java.lang.Object text_ = "";
        public boolean hasText() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getText() {
          java.lang.Object ref = text_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            text_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setText(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          text_ = value;
          onChanged();
          return this;
        }
        public Builder clearText() {
          bitField0_ = (bitField0_ & ~0x00000002);
          text_ = getDefaultInstance().getText();
          onChanged();
          return this;
        }
        void setText(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          text_ = value;
          onChanged();
        }

        // @@protoc_insertion_point(builder_scope:versioned.Messages.Field)
      }

      static {
        defaultInstance = new Field(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:versioned.Messages.Field)
    }

    private int bitField0_;
    // required bytes required = 1;
    public static final int REQUIRED_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString required_;
    public boolean hasRequired() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public com.google.protobuf.ByteString getRequired() {
      return required_;
    }

    // optional bytes optional = 2;
    public static final int OPTIONAL_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString optional_;
    public boolean hasOptional() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public com.google.protobuf.ByteString getOptional() {
      return optional_;
    }

    // repeated bytes repeated = 4;
    public static final int REPEATED_FIELD_NUMBER = 4;
    private java.util.List<com.google.protobuf.ByteString> repeated_;
    public java.util.List<com.google.protobuf.ByteString>
        getRepeatedList() {
      return repeated_;
    }
    public int getRepeatedCount() {
      return repeated_.size();
    }
    public com.google.protobuf.ByteString getRepeated(int index) {
      return repeated_.get(index);
    }

    private void initFields() {
      required_ = com.google.protobuf.ByteString.EMPTY;
      optional_ = com.google.protobuf.ByteString.EMPTY;
      repeated_ = java.util.Collections.emptyList();;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, required_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, optional_);
      }
      for (int i = 0; i < repeated_.size(); i++) {
        output.writeBytes(4, repeated_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, required_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, optional_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeated_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(repeated_.get(i));
        }
        size += dataSize;
        size += 1 * getRepeatedList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static polybuf.core.test.VersionedV2.Messages parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Messages parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Messages parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Messages parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Messages parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Messages parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Messages parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Messages parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Messages parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Messages parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(polybuf.core.test.VersionedV2.Messages prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements polybuf.core.test.VersionedV2.MessagesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Messages_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Messages_fieldAccessorTable;
      }

      // Construct using polybuf.core.test.VersionedV2.Messages.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        required_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        optional_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        repeated_ = java.util.Collections.emptyList();;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return polybuf.core.test.VersionedV2.Messages.getDescriptor();
      }

      public polybuf.core.test.VersionedV2.Messages getDefaultInstanceForType() {
        return polybuf.core.test.VersionedV2.Messages.getDefaultInstance();
      }

      public polybuf.core.test.VersionedV2.Messages build() {
        polybuf.core.test.VersionedV2.Messages result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      private polybuf.core.test.VersionedV2.Messages buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        polybuf.core.test.VersionedV2.Messages result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }

      public polybuf.core.test.VersionedV2.Messages buildPartial() {
        polybuf.core.test.VersionedV2.Messages result = new polybuf.core.test.VersionedV2.Messages(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.required_ = required_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.optional_ = optional_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          repeated_ = java.util.Collections.unmodifiableList(repeated_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.repeated_ = repeated_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof polybuf.core.test.VersionedV2.Messages) {
          return mergeFrom((polybuf.core.test.VersionedV2.Messages)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(polybuf.core.test.VersionedV2.Messages other) {
        if (other == polybuf.core.test.VersionedV2.Messages.getDefaultInstance()) return this;
        if (other.hasRequired()) {
          setRequired(other.getRequired());
        }
        if (other.hasOptional()) {
          setOptional(other.getOptional());
        }
        if (!other.repeated_.isEmpty()) {
          if (repeated_.isEmpty()) {
            repeated_ = other.repeated_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureRepeatedIsMutable();
            repeated_.addAll(other.repeated_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasRequired()) {

          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              required_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              optional_ = input.readBytes();
              break;
            }
            case 34: {
              ensureRepeatedIsMutable();
              repeated_.add(input.readBytes());
              break;
            }
          }
        }
      }

      private int bitField0_;

      // required bytes required = 1;
      private com.google.protobuf.ByteString required_ = com.google.protobuf.ByteString.EMPTY;
      public boolean hasRequired() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public com.google.protobuf.ByteString getRequired() {
        return required_;
      }
      public Builder setRequired(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        required_ = value;
        onChanged();
        return this;
      }
      public Builder clearRequired() {
        bitField0_ = (bitField0_ & ~0x00000001);
        required_ = getDefaultInstance().getRequired();
        onChanged();
        return this;
      }

      // optional bytes optional = 2;
      private com.google.protobuf.ByteString optional_ = com.google.protobuf.ByteString.EMPTY;
      public boolean hasOptional() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public com.google.protobuf.ByteString getOptional() {
        return optional_;
      }
      public Builder setOptional(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        optional_ = value;
        onChanged();
        return this;
      }
      public Builder clearOptional() {
        bitField0_ = (bitField0_ & ~0x00000002);
        optional_ = getDefaultInstance().getOptional();
        onChanged();
        return this;
      }

      // repeated bytes repeated = 4;
      private java.util.List<com.google.protobuf.ByteString> repeated_ = java.util.Collections.emptyList();;
      private void ensureRepeatedIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          repeated_ = new java.util.ArrayList<com.google.protobuf.ByteString>(repeated_);
          bitField0_ |= 0x00000004;
         }
      }
      public java.util.List<com.google.protobuf.ByteString>
          getRepeatedList() {
        return java.util.Collections.unmodifiableList(repeated_);
      }
      public int getRepeatedCount() {
        return repeated_.size();
      }
      public com.google.protobuf.ByteString getRepeated(int index) {
        return repeated_.get(index);
      }
      public Builder setRepeated(
          int index, com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRepeatedIsMutable();
        repeated_.set(index, value);
        onChanged();
        return this;
      }
      public Builder addRepeated(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRepeatedIsMutable();
        repeated_.add(value);
        onChanged();
        return this;
      }
      public Builder addAllRepeated(
          java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
        ensureRepeatedIsMutable();
        super.addAll(values, repeated_);
        onChanged();
        return this;
      }
      public Builder clearRepeated() {
        repeated_ = java.util.Collections.emptyList();;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:versioned.Messages)
    }

    static {
      defaultInstance = new Messages(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:versioned.Messages)
  }

  public interface Fixed32sOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required sfixed32 fixed32_sfixed32 = 1;
    boolean hasFixed32Sfixed32();
    int getFixed32Sfixed32();
  }
  public static final class Fixed32s extends
      com.google.protobuf.GeneratedMessage
      implements Fixed32sOrBuilder {
    // Use Fixed32s.newBuilder() to construct.
    private Fixed32s(Builder builder) {
      super(builder);
    }
    private Fixed32s(boolean noInit) {}

    private static final Fixed32s defaultInstance;
    public static Fixed32s getDefaultInstance() {
      return defaultInstance;
    }

    public Fixed32s getDefaultInstanceForType() {
      return defaultInstance;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Fixed32s_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Fixed32s_fieldAccessorTable;
    }

    private int bitField0_;
    // required sfixed32 fixed32_sfixed32 = 1;
    public static final int FIXED32_SFIXED32_FIELD_NUMBER = 1;
    private int fixed32Sfixed32_;
    public boolean hasFixed32Sfixed32() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public int getFixed32Sfixed32() {
      return fixed32Sfixed32_;
    }

    private void initFields() {
      fixed32Sfixed32_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeSFixed32(1, fixed32Sfixed32_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSFixed32Size(1, fixed32Sfixed32_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static polybuf.core.test.VersionedV2.Fixed32s parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed32s parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed32s parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed32s parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed32s parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed32s parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed32s parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Fixed32s parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Fixed32s parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed32s parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(polybuf.core.test.VersionedV2.Fixed32s prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements polybuf.core.test.VersionedV2.Fixed32sOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Fixed32s_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Fixed32s_fieldAccessorTable;
      }

      // Construct using polybuf.core.test.VersionedV2.Fixed32s.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        fixed32Sfixed32_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return polybuf.core.test.VersionedV2.Fixed32s.getDescriptor();
      }

      public polybuf.core.test.VersionedV2.Fixed32s getDefaultInstanceForType() {
        return polybuf.core.test.VersionedV2.Fixed32s.getDefaultInstance();
      }

      public polybuf.core.test.VersionedV2.Fixed32s build() {
        polybuf.core.test.VersionedV2.Fixed32s result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      private polybuf.core.test.VersionedV2.Fixed32s buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        polybuf.core.test.VersionedV2.Fixed32s result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }

      public polybuf.core.test.VersionedV2.Fixed32s buildPartial() {
        polybuf.core.test.VersionedV2.Fixed32s result = new polybuf.core.test.VersionedV2.Fixed32s(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.fixed32Sfixed32_ = fixed32Sfixed32_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof polybuf.core.test.VersionedV2.Fixed32s) {
          return mergeFrom((polybuf.core.test.VersionedV2.Fixed32s)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(polybuf.core.test.VersionedV2.Fixed32s other) {
        if (other == polybuf.core.test.VersionedV2.Fixed32s.getDefaultInstance()) return this;
        if (other.hasFixed32Sfixed32()) {
          setFixed32Sfixed32(other.getFixed32Sfixed32());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFixed32Sfixed32()) {

          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 13: {
              bitField0_ |= 0x00000001;
              fixed32Sfixed32_ = input.readSFixed32();
              break;
            }
          }
        }
      }

      private int bitField0_;

      // required sfixed32 fixed32_sfixed32 = 1;
      private int fixed32Sfixed32_ ;
      public boolean hasFixed32Sfixed32() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public int getFixed32Sfixed32() {
        return fixed32Sfixed32_;
      }
      public Builder setFixed32Sfixed32(int value) {
        bitField0_ |= 0x00000001;
        fixed32Sfixed32_ = value;
        onChanged();
        return this;
      }
      public Builder clearFixed32Sfixed32() {
        bitField0_ = (bitField0_ & ~0x00000001);
        fixed32Sfixed32_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:versioned.Fixed32s)
    }

    static {
      defaultInstance = new Fixed32s(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:versioned.Fixed32s)
  }

  public interface Fixed64sOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required sfixed64 fixed64_sfixed64 = 1;
    boolean hasFixed64Sfixed64();
    long getFixed64Sfixed64();
  }
  public static final class Fixed64s extends
      com.google.protobuf.GeneratedMessage
      implements Fixed64sOrBuilder {
    // Use Fixed64s.newBuilder() to construct.
    private Fixed64s(Builder builder) {
      super(builder);
    }
    private Fixed64s(boolean noInit) {}

    private static final Fixed64s defaultInstance;
    public static Fixed64s getDefaultInstance() {
      return defaultInstance;
    }

    public Fixed64s getDefaultInstanceForType() {
      return defaultInstance;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Fixed64s_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Fixed64s_fieldAccessorTable;
    }

    private int bitField0_;
    // required sfixed64 fixed64_sfixed64 = 1;
    public static final int FIXED64_SFIXED64_FIELD_NUMBER = 1;
    private long fixed64Sfixed64_;
    public boolean hasFixed64Sfixed64() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public long getFixed64Sfixed64() {
      return fixed64Sfixed64_;
    }

    private void initFields() {
      fixed64Sfixed64_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeSFixed64(1, fixed64Sfixed64_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSFixed64Size(1, fixed64Sfixed64_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static polybuf.core.test.VersionedV2.Fixed64s parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed64s parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed64s parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed64s parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed64s parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed64s parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed64s parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Fixed64s parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Fixed64s parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Fixed64s parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(polybuf.core.test.VersionedV2.Fixed64s prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements polybuf.core.test.VersionedV2.Fixed64sOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Fixed64s_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Fixed64s_fieldAccessorTable;
      }

      // Construct using polybuf.core.test.VersionedV2.Fixed64s.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        fixed64Sfixed64_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return polybuf.core.test.VersionedV2.Fixed64s.getDescriptor();
      }

      public polybuf.core.test.VersionedV2.Fixed64s getDefaultInstanceForType() {
        return polybuf.core.test.VersionedV2.Fixed64s.getDefaultInstance();
      }

      public polybuf.core.test.VersionedV2.Fixed64s build() {
        polybuf.core.test.VersionedV2.Fixed64s result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      private polybuf.core.test.VersionedV2.Fixed64s buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        polybuf.core.test.VersionedV2.Fixed64s result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }

      public polybuf.core.test.VersionedV2.Fixed64s buildPartial() {
        polybuf.core.test.VersionedV2.Fixed64s result = new polybuf.core.test.VersionedV2.Fixed64s(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.fixed64Sfixed64_ = fixed64Sfixed64_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof polybuf.core.test.VersionedV2.Fixed64s) {
          return mergeFrom((polybuf.core.test.VersionedV2.Fixed64s)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(polybuf.core.test.VersionedV2.Fixed64s other) {
        if (other == polybuf.core.test.VersionedV2.Fixed64s.getDefaultInstance()) return this;
        if (other.hasFixed64Sfixed64()) {
          setFixed64Sfixed64(other.getFixed64Sfixed64());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFixed64Sfixed64()) {

          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 9: {
              bitField0_ |= 0x00000001;
              fixed64Sfixed64_ = input.readSFixed64();
              break;
            }
          }
        }
      }

      private int bitField0_;

      // required sfixed64 fixed64_sfixed64 = 1;
      private long fixed64Sfixed64_ ;
      public boolean hasFixed64Sfixed64() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public long getFixed64Sfixed64() {
        return fixed64Sfixed64_;
      }
      public Builder setFixed64Sfixed64(long value) {
        bitField0_ |= 0x00000001;
        fixed64Sfixed64_ = value;
        onChanged();
        return this;
      }
      public Builder clearFixed64Sfixed64() {
        bitField0_ = (bitField0_ & ~0x00000001);
        fixed64Sfixed64_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:versioned.Fixed64s)
    }

    static {
      defaultInstance = new Fixed64s(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:versioned.Fixed64s)
  }

  public interface DefaultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string defaulted = 1 [default = "v2"];
    boolean hasDefaulted();
    String getDefaulted();
  }
  public static final class Default extends
      com.google.protobuf.GeneratedMessage
      implements DefaultOrBuilder {
    // Use Default.newBuilder() to construct.
    private Default(Builder builder) {
      super(builder);
    }
    private Default(boolean noInit) {}

    private static final Default defaultInstance;
    public static Default getDefaultInstance() {
      return defaultInstance;
    }

    public Default getDefaultInstanceForType() {
      return defaultInstance;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Default_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return polybuf.core.test.VersionedV2.internal_static_versioned_Default_fieldAccessorTable;
    }

    private int bitField0_;
    // optional string defaulted = 1 [default = "v2"];
    public static final int DEFAULTED_FIELD_NUMBER = 1;
    private java.lang.Object defaulted_;
    public boolean hasDefaulted() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getDefaulted() {
      java.lang.Object ref = defaulted_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          defaulted_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getDefaultedBytes() {
      java.lang.Object ref = defaulted_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        defaulted_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      defaulted_ = "v2";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getDefaultedBytes());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getDefaultedBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static polybuf.core.test.VersionedV2.Default parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Default parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Default parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Default parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Default parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Default parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Default parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Default parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static polybuf.core.test.VersionedV2.Default parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static polybuf.core.test.VersionedV2.Default parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(polybuf.core.test.VersionedV2.Default prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements polybuf.core.test.VersionedV2.DefaultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Default_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return polybuf.core.test.VersionedV2.internal_static_versioned_Default_fieldAccessorTable;
      }

      // Construct using polybuf.core.test.VersionedV2.Default.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        defaulted_ = "v2";
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return polybuf.core.test.VersionedV2.Default.getDescriptor();
      }

      public polybuf.core.test.VersionedV2.Default getDefaultInstanceForType() {
        return polybuf.core.test.VersionedV2.Default.getDefaultInstance();
      }

      public polybuf.core.test.VersionedV2.Default build() {
        polybuf.core.test.VersionedV2.Default result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      private polybuf.core.test.VersionedV2.Default buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        polybuf.core.test.VersionedV2.Default result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }

      public polybuf.core.test.VersionedV2.Default buildPartial() {
        polybuf.core.test.VersionedV2.Default result = new polybuf.core.test.VersionedV2.Default(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.defaulted_ = defaulted_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof polybuf.core.test.VersionedV2.Default) {
          return mergeFrom((polybuf.core.test.VersionedV2.Default)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(polybuf.core.test.VersionedV2.Default other) {
        if (other == polybuf.core.test.VersionedV2.Default.getDefaultInstance()) return this;
        if (other.hasDefaulted()) {
          setDefaulted(other.getDefaulted());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              defaulted_ = input.readBytes();
              break;
            }
          }
        }
      }

      private int bitField0_;

      // optional string defaulted = 1 [default = "v2"];
      private java.lang.Object defaulted_ = "v2";
      public boolean hasDefaulted() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getDefaulted() {
        java.lang.Object ref = defaulted_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          defaulted_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setDefaulted(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        defaulted_ = value;
        onChanged();
        return this;
      }
      public Builder clearDefaulted() {
        bitField0_ = (bitField0_ & ~0x00000001);
        defaulted_ = getDefaultInstance().getDefaulted();
        onChanged();
        return this;
      }
      void setDefaulted(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        defaulted_ = value;
        onChanged();
      }

      // @@protoc_insertion_point(builder_scope:versioned.Default)
    }

    static {
      defaultInstance = new Default(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:versioned.Default)
  }

  public static final int OPTIONAL_EXTENSION_FIELD_NUMBER = 1;
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      polybuf.core.test.VersionedV2.Optionality,
      java.lang.String> optionalExtension = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        java.lang.String.class,
        null);
  public static final int REPEATED_EXTENSION_FIELD_NUMBER = 2;
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      polybuf.core.test.VersionedV2.Optionality,
      java.util.List<java.lang.String>> repeatedExtension = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        java.lang.String.class,
        null);
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_versioned_Fields_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_versioned_Fields_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_versioned_Optionality_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_versioned_Optionality_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_versioned_Ints_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_versioned_Ints_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_versioned_Sints_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_versioned_Sints_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_versioned_Strings_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_versioned_Strings_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_versioned_Messages_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_versioned_Messages_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_versioned_Messages_Field_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_versioned_Messages_Field_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_versioned_Fixed32s_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_versioned_Fixed32s_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_versioned_Fixed64s_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_versioned_Fixed64s_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_versioned_Default_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_versioned_Default_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\022versioned_v2.proto\022\tversioned\032\rpolybuf" +
      ".proto\"<\n\006Fields\022\030\n\020missing_optional\030\003 \001" +
      "(\t\022\030\n\020missing_repeated\030\004 \003(\t\".\n\013Optional" +
      "ity\022\031\n\021optional_repeated\030\003 \003(\t*\004\010\001\020\003\"\334\001\n" +
      "\004Ints\022\024\n\014int32_uint32\030\001 \002(\r\022\023\n\013int32_int" +
      "64\030\002 \002(\003\022\024\n\014int32_uint64\030\003 \002(\004\022\022\n\nint32_" +
      "bool\030\004 \002(\010\022\024\n\014uint32_int64\030\005 \002(\003\022\025\n\ruint" +
      "32_uint64\030\006 \002(\004\022\023\n\013uint32_bool\030\007 \002(\010\022\024\n\014" +
      "int64_uint64\030\010 \002(\004\022\022\n\nint64_bool\030\t \002(\010\022\023" +
      "\n\013uint64_bool\030\n \002(\010\"\036\n\005Sints\022\025\n\rsint32_s",
      "int64\030\001 \002(\022\"\037\n\007Strings\022\024\n\014string_bytes\030\001" +
      " \002(\014\"c\n\010Messages\022\020\n\010required\030\001 \002(\014\022\020\n\010op" +
      "tional\030\002 \001(\014\022\020\n\010repeated\030\004 \003(\014\032!\n\005Field\022" +
      "\n\n\002id\030\001 \002(\005\022\014\n\004text\030\002 \001(\t\"$\n\010Fixed32s\022\030\n" +
      "\020fixed32_sfixed32\030\001 \002(\017\"$\n\010Fixed64s\022\030\n\020f" +
      "ixed64_sfixed64\030\001 \002(\020\" \n\007Default\022\025\n\tdefa" +
      "ulted\030\001 \001(\t:\002v2:2\n\022optional_extension\022\026." +
      "versioned.Optionality\030\001 \001(\t:2\n\022repeated_" +
      "extension\022\026.versioned.Optionality\030\002 \003(\tB" +
      "H\n\021polybuf.core.test\222\223!1\n/http://www.exa",
      "mple.org/polybuf-test/versioned/2"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_versioned_Fields_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_versioned_Fields_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_versioned_Fields_descriptor,
              new java.lang.String[] { "MissingOptional", "MissingRepeated", },
              polybuf.core.test.VersionedV2.Fields.class,
              polybuf.core.test.VersionedV2.Fields.Builder.class);
          internal_static_versioned_Optionality_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_versioned_Optionality_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_versioned_Optionality_descriptor,
              new java.lang.String[] { "OptionalRepeated", },
              polybuf.core.test.VersionedV2.Optionality.class,
              polybuf.core.test.VersionedV2.Optionality.Builder.class);
          internal_static_versioned_Ints_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_versioned_Ints_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_versioned_Ints_descriptor,
              new java.lang.String[] { "Int32Uint32", "Int32Int64", "Int32Uint64", "Int32Bool", "Uint32Int64", "Uint32Uint64", "Uint32Bool", "Int64Uint64", "Int64Bool", "Uint64Bool", },
              polybuf.core.test.VersionedV2.Ints.class,
              polybuf.core.test.VersionedV2.Ints.Builder.class);
          internal_static_versioned_Sints_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_versioned_Sints_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_versioned_Sints_descriptor,
              new java.lang.String[] { "Sint32Sint64", },
              polybuf.core.test.VersionedV2.Sints.class,
              polybuf.core.test.VersionedV2.Sints.Builder.class);
          internal_static_versioned_Strings_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_versioned_Strings_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_versioned_Strings_descriptor,
              new java.lang.String[] { "StringBytes", },
              polybuf.core.test.VersionedV2.Strings.class,
              polybuf.core.test.VersionedV2.Strings.Builder.class);
          internal_static_versioned_Messages_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_versioned_Messages_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_versioned_Messages_descriptor,
              new java.lang.String[] { "Required", "Optional", "Repeated", },
              polybuf.core.test.VersionedV2.Messages.class,
              polybuf.core.test.VersionedV2.Messages.Builder.class);
          internal_static_versioned_Messages_Field_descriptor =
            internal_static_versioned_Messages_descriptor.getNestedTypes().get(0);
          internal_static_versioned_Messages_Field_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_versioned_Messages_Field_descriptor,
              new java.lang.String[] { "Id", "Text", },
              polybuf.core.test.VersionedV2.Messages.Field.class,
              polybuf.core.test.VersionedV2.Messages.Field.Builder.class);
          internal_static_versioned_Fixed32s_descriptor =
            getDescriptor().getMessageTypes().get(6);
          internal_static_versioned_Fixed32s_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_versioned_Fixed32s_descriptor,
              new java.lang.String[] { "Fixed32Sfixed32", },
              polybuf.core.test.VersionedV2.Fixed32s.class,
              polybuf.core.test.VersionedV2.Fixed32s.Builder.class);
          internal_static_versioned_Fixed64s_descriptor =
            getDescriptor().getMessageTypes().get(7);
          internal_static_versioned_Fixed64s_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_versioned_Fixed64s_descriptor,
              new java.lang.String[] { "Fixed64Sfixed64", },
              polybuf.core.test.VersionedV2.Fixed64s.class,
              polybuf.core.test.VersionedV2.Fixed64s.Builder.class);
          internal_static_versioned_Default_descriptor =
            getDescriptor().getMessageTypes().get(8);
          internal_static_versioned_Default_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_versioned_Default_descriptor,
              new java.lang.String[] { "Defaulted", },
              polybuf.core.test.VersionedV2.Default.class,
              polybuf.core.test.VersionedV2.Default.Builder.class);
          optionalExtension.internalInit(descriptor.getExtensions().get(0));
          repeatedExtension.internalInit(descriptor.getExtensions().get(1));
          com.google.protobuf.ExtensionRegistry registry =
            com.google.protobuf.ExtensionRegistry.newInstance();
          registerAllExtensions(registry);
          polybuf.core.proto.Polybuf.registerAllExtensions(registry);
          return registry;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          polybuf.core.proto.Polybuf.getDescriptor(),
        }, assigner);
  }

  // @@protoc_insertion_point(outer_class_scope)
}