Index: applications/editors/josm/plugins/pbf/.classpath
===================================================================
--- applications/editors/josm/plugins/pbf/.classpath	(revision 33771)
+++ applications/editors/josm/plugins/pbf/.classpath	(revision 33772)
@@ -4,5 +4,5 @@
 	<classpathentry excluding="crosby/binary/test/" kind="src" path="src"/>
 	<classpathentry kind="src" path="test/unit"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/JOSM"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
Index: applications/editors/josm/plugins/pbf/gen/com/google/protobuf/DescriptorProtos.java
===================================================================
--- applications/editors/josm/plugins/pbf/gen/com/google/protobuf/DescriptorProtos.java	(revision 33771)
+++ applications/editors/josm/plugins/pbf/gen/com/google/protobuf/DescriptorProtos.java	(revision 33772)
@@ -7,5 +7,11 @@
   private DescriptorProtos() {}
   public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+
+  public static void registerAllExtensions(
       com.google.protobuf.ExtensionRegistry registry) {
+    registerAllExtensions(
+        (com.google.protobuf.ExtensionRegistryLite) registry);
   }
   public interface FileDescriptorSetOrBuilder extends
@@ -16,5 +22,5 @@
      * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
      */
-    java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto>
+    java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> 
         getFileList();
     /**
@@ -29,5 +35,5 @@
      * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
      */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder>
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> 
         getFileOrBuilderList();
     /**
@@ -38,36 +44,27 @@
   }
   /**
-   * Protobuf type {@code google.protobuf.FileDescriptorSet}
-   *
    * <pre>
    * The protocol compiler can output a FileDescriptorSet containing the .proto
    * files it parses.
    * </pre>
+   *
+   * Protobuf type {@code google.protobuf.FileDescriptorSet}
    */
-  public static final class FileDescriptorSet extends
-      com.google.protobuf.GeneratedMessage implements
+  public  static final class FileDescriptorSet extends
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:google.protobuf.FileDescriptorSet)
       FileDescriptorSetOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use FileDescriptorSet.newBuilder() to construct.
-    private FileDescriptorSet(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+    private FileDescriptorSet(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private FileDescriptorSet(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final FileDescriptorSet defaultInstance;
-    public static FileDescriptorSet getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public FileDescriptorSet getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private FileDescriptorSet() {
+      file_ = java.util.Collections.emptyList();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -76,5 +73,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -89,6 +86,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -97,8 +94,9 @@
             case 10: {
               if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-                file_ = new java.util.ArrayList<>();
+                file_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FileDescriptorProto>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              file_.add(input.readMessage(com.google.protobuf.DescriptorProtos.FileDescriptorProto.PARSER, extensionRegistry));
+              file_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.FileDescriptorProto.PARSER, extensionRegistry));
               break;
             }
@@ -109,5 +107,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
@@ -123,6 +121,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable
@@ -131,20 +128,4 @@
     }
 
-    public static com.google.protobuf.Parser<FileDescriptorSet> PARSER =
-        new com.google.protobuf.AbstractParser<FileDescriptorSet>() {
-      @Override
-	public FileDescriptorSet parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new FileDescriptorSet(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<FileDescriptorSet> getParserForType() {
-      return PARSER;
-    }
-
     public static final int FILE_FIELD_NUMBER = 1;
     private java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> file_;
@@ -152,6 +133,5 @@
      * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> getFileList() {
+    public java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> getFileList() {
       return file_;
     }
@@ -159,6 +139,5 @@
      * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
      */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder>
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> 
         getFileOrBuilderList() {
       return file_;
@@ -167,6 +146,5 @@
      * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
      */
-    @Override
-	public int getFileCount() {
+    public int getFileCount() {
       return file_.size();
     }
@@ -174,6 +152,5 @@
      * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FileDescriptorProto getFile(int index) {
+    public com.google.protobuf.DescriptorProtos.FileDescriptorProto getFile(int index) {
       return file_.get(index);
     }
@@ -181,16 +158,11 @@
      * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder getFileOrBuilder(
+    public com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder getFileOrBuilder(
         int index) {
       return file_.get(index);
     }
 
-    private void initFields() {
-      file_ = java.util.Collections.emptyList();
-    }
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -207,18 +179,14 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       for (int i = 0; i < file_.size(); i++) {
         output.writeMessage(1, file_.get(i));
       }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
@@ -228,16 +196,53 @@
           .computeMessageSize(1, file_.get(i));
       }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.FileDescriptorSet)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.FileDescriptorSet other = (com.google.protobuf.DescriptorProtos.FileDescriptorSet) obj;
+
+      boolean result = true;
+      result = result && getFileList()
+          .equals(other.getFileList());
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (getFileCount() > 0) {
+        hash = (37 * hash) + FILE_FIELD_NUMBER;
+        hash = (53 * hash) + getFileList().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
         com.google.protobuf.ByteString data)
@@ -263,5 +268,6 @@
     public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
@@ -269,9 +275,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseDelimitedFrom(
@@ -279,10 +287,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
@@ -290,32 +300,36 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FileDescriptorSet prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
     /**
-     * Protobuf type {@code google.protobuf.FileDescriptorSet}
-     *
      * <pre>
      * The protocol compiler can output a FileDescriptorSet containing the .proto
      * files it parses.
      * </pre>
+     *
+     * Protobuf type {@code google.protobuf.FileDescriptorSet}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.FileDescriptorSet)
         com.google.protobuf.DescriptorProtos.FileDescriptorSetOrBuilder {
@@ -325,6 +339,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable
@@ -339,19 +352,15 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getFileFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         if (fileBuilder_ == null) {
@@ -364,22 +373,14 @@
       }
 
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileDescriptorSet getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.FileDescriptorSet getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.FileDescriptorSet.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileDescriptorSet build() {
+      public com.google.protobuf.DescriptorProtos.FileDescriptorSet build() {
         com.google.protobuf.DescriptorProtos.FileDescriptorSet result = buildPartial();
         if (!result.isInitialized()) {
@@ -389,6 +390,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileDescriptorSet buildPartial() {
+      public com.google.protobuf.DescriptorProtos.FileDescriptorSet buildPartial() {
         com.google.protobuf.DescriptorProtos.FileDescriptorSet result = new com.google.protobuf.DescriptorProtos.FileDescriptorSet(this);
         int from_bitField0_ = bitField0_;
@@ -406,6 +406,31 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.FileDescriptorSet) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.FileDescriptorSet)other);
@@ -436,6 +461,6 @@
               file_ = other.file_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              fileBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              fileBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getFileFieldBuilder() : null;
             } else {
@@ -444,13 +469,12 @@
           }
         }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         for (int i = 0; i < getFileCount(); i++) {
           if (!getFile(i).isInitialized()) {
-
             return false;
           }
@@ -459,6 +483,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -469,5 +492,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.FileDescriptorSet) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -483,10 +506,10 @@
       private void ensureFileIsMutable() {
         if (!((bitField0_ & 0x00000001) == 0x00000001)) {
-          file_ = new java.util.ArrayList<>(file_);
+          file_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FileDescriptorProto>(file_);
           bitField0_ |= 0x00000001;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> fileBuilder_;
 
@@ -494,6 +517,5 @@
        * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> getFileList() {
+      public java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> getFileList() {
         if (fileBuilder_ == null) {
           return java.util.Collections.unmodifiableList(file_);
@@ -505,6 +527,5 @@
        * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
        */
-      @Override
-	public int getFileCount() {
+      public int getFileCount() {
         if (fileBuilder_ == null) {
           return file_.size();
@@ -516,6 +537,5 @@
        * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileDescriptorProto getFile(int index) {
+      public com.google.protobuf.DescriptorProtos.FileDescriptorProto getFile(int index) {
         if (fileBuilder_ == null) {
           return file_.get(index);
@@ -667,6 +687,5 @@
        * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder getFileOrBuilder(
+      public com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder getFileOrBuilder(
           int index) {
         if (fileBuilder_ == null) {
@@ -678,6 +697,5 @@
        * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
        */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder>
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> 
            getFileOrBuilderList() {
         if (fileBuilder_ != null) {
@@ -705,13 +723,14 @@
        * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
        */
-      public java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder>
+      public java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder> 
            getFileBuilderList() {
         return getFileFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> 
           getFileFieldBuilder() {
         if (fileBuilder_ == null) {
-          fileBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          fileBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder>(
                   file_,
                   ((bitField0_ & 0x00000001) == 0x00000001),
@@ -722,14 +741,51 @@
         return fileBuilder_;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.FileDescriptorSet)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorSet)
+    private static final com.google.protobuf.DescriptorProtos.FileDescriptorSet DEFAULT_INSTANCE;
     static {
-      defaultInstance = new FileDescriptorSet(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorSet)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.FileDescriptorSet();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<FileDescriptorSet>
+        PARSER = new com.google.protobuf.AbstractParser<FileDescriptorSet>() {
+      public FileDescriptorSet parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new FileDescriptorSet(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<FileDescriptorSet> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<FileDescriptorSet> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.FileDescriptorSet getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
@@ -739,25 +795,25 @@
 
     /**
-     * <code>optional string name = 1;</code>
-     *
      * <pre>
      * file name, relative to root of source tree
      * </pre>
+     *
+     * <code>optional string name = 1;</code>
      */
     boolean hasName();
     /**
-     * <code>optional string name = 1;</code>
-     *
      * <pre>
      * file name, relative to root of source tree
      * </pre>
+     *
+     * <code>optional string name = 1;</code>
      */
     java.lang.String getName();
     /**
-     * <code>optional string name = 1;</code>
-     *
      * <pre>
      * file name, relative to root of source tree
      * </pre>
+     *
+     * <code>optional string name = 1;</code>
      */
     com.google.protobuf.ByteString
@@ -765,25 +821,25 @@
 
     /**
-     * <code>optional string package = 2;</code>
-     *
      * <pre>
      * e.g. "foo", "foo.bar", etc.
      * </pre>
+     *
+     * <code>optional string package = 2;</code>
      */
     boolean hasPackage();
     /**
-     * <code>optional string package = 2;</code>
-     *
      * <pre>
      * e.g. "foo", "foo.bar", etc.
      * </pre>
+     *
+     * <code>optional string package = 2;</code>
      */
     java.lang.String getPackage();
     /**
-     * <code>optional string package = 2;</code>
-     *
      * <pre>
      * e.g. "foo", "foo.bar", etc.
      * </pre>
+     *
+     * <code>optional string package = 2;</code>
      */
     com.google.protobuf.ByteString
@@ -791,34 +847,34 @@
 
     /**
-     * <code>repeated string dependency = 3;</code>
-     *
      * <pre>
      * Names of files imported by this file.
      * </pre>
-     */
-    com.google.protobuf.ProtocolStringList
+     *
+     * <code>repeated string dependency = 3;</code>
+     */
+    java.util.List<java.lang.String>
         getDependencyList();
     /**
-     * <code>repeated string dependency = 3;</code>
-     *
      * <pre>
      * Names of files imported by this file.
      * </pre>
+     *
+     * <code>repeated string dependency = 3;</code>
      */
     int getDependencyCount();
     /**
-     * <code>repeated string dependency = 3;</code>
-     *
      * <pre>
      * Names of files imported by this file.
      * </pre>
+     *
+     * <code>repeated string dependency = 3;</code>
      */
     java.lang.String getDependency(int index);
     /**
-     * <code>repeated string dependency = 3;</code>
-     *
      * <pre>
      * Names of files imported by this file.
      * </pre>
+     *
+     * <code>repeated string dependency = 3;</code>
      */
     com.google.protobuf.ByteString
@@ -826,96 +882,96 @@
 
     /**
-     * <code>repeated int32 public_dependency = 10;</code>
-     *
      * <pre>
      * Indexes of the public imported files in the dependency list above.
      * </pre>
+     *
+     * <code>repeated int32 public_dependency = 10;</code>
      */
     java.util.List<java.lang.Integer> getPublicDependencyList();
     /**
-     * <code>repeated int32 public_dependency = 10;</code>
-     *
      * <pre>
      * Indexes of the public imported files in the dependency list above.
      * </pre>
+     *
+     * <code>repeated int32 public_dependency = 10;</code>
      */
     int getPublicDependencyCount();
     /**
-     * <code>repeated int32 public_dependency = 10;</code>
-     *
      * <pre>
      * Indexes of the public imported files in the dependency list above.
      * </pre>
+     *
+     * <code>repeated int32 public_dependency = 10;</code>
      */
     int getPublicDependency(int index);
 
     /**
-     * <code>repeated int32 weak_dependency = 11;</code>
-     *
      * <pre>
      * Indexes of the weak imported files in the dependency list.
      * For Google-internal migration only. Do not use.
      * </pre>
+     *
+     * <code>repeated int32 weak_dependency = 11;</code>
      */
     java.util.List<java.lang.Integer> getWeakDependencyList();
     /**
-     * <code>repeated int32 weak_dependency = 11;</code>
-     *
      * <pre>
      * Indexes of the weak imported files in the dependency list.
      * For Google-internal migration only. Do not use.
      * </pre>
+     *
+     * <code>repeated int32 weak_dependency = 11;</code>
      */
     int getWeakDependencyCount();
     /**
-     * <code>repeated int32 weak_dependency = 11;</code>
-     *
      * <pre>
      * Indexes of the weak imported files in the dependency list.
      * For Google-internal migration only. Do not use.
      * </pre>
+     *
+     * <code>repeated int32 weak_dependency = 11;</code>
      */
     int getWeakDependency(int index);
 
     /**
-     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-     *
      * <pre>
      * All top-level definitions in this file.
      * </pre>
-     */
-    java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto>
+     *
+     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> 
         getMessageTypeList();
     /**
-     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-     *
      * <pre>
      * All top-level definitions in this file.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
      */
     com.google.protobuf.DescriptorProtos.DescriptorProto getMessageType(int index);
     /**
-     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-     *
      * <pre>
      * All top-level definitions in this file.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
      */
     int getMessageTypeCount();
     /**
-     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-     *
      * <pre>
      * All top-level definitions in this file.
      * </pre>
-     */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>
+     *
+     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
         getMessageTypeOrBuilderList();
     /**
-     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-     *
      * <pre>
      * All top-level definitions in this file.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
      */
     com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getMessageTypeOrBuilder(
@@ -925,5 +981,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
      */
-    java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>
+    java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> 
         getEnumTypeList();
     /**
@@ -938,5 +994,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
      */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
         getEnumTypeOrBuilderList();
     /**
@@ -949,5 +1005,5 @@
      * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
      */
-    java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto>
+    java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> 
         getServiceList();
     /**
@@ -962,5 +1018,5 @@
      * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
      */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder>
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> 
         getServiceOrBuilderList();
     /**
@@ -973,5 +1029,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
      */
-    java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>
+    java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> 
         getExtensionList();
     /**
@@ -986,5 +1042,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
      */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
         getExtensionOrBuilderList();
     /**
@@ -1008,69 +1064,98 @@
 
     /**
-     * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-     *
      * <pre>
      * This field contains optional information about the original source code.
-     * You may safely remove this entire field whithout harming runtime
+     * You may safely remove this entire field without harming runtime
      * functionality of the descriptors -- the information is needed only by
      * development tools.
      * </pre>
+     *
+     * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
      */
     boolean hasSourceCodeInfo();
     /**
-     * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-     *
      * <pre>
      * This field contains optional information about the original source code.
-     * You may safely remove this entire field whithout harming runtime
+     * You may safely remove this entire field without harming runtime
      * functionality of the descriptors -- the information is needed only by
      * development tools.
      * </pre>
+     *
+     * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
      */
     com.google.protobuf.DescriptorProtos.SourceCodeInfo getSourceCodeInfo();
     /**
-     * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-     *
      * <pre>
      * This field contains optional information about the original source code.
-     * You may safely remove this entire field whithout harming runtime
+     * You may safely remove this entire field without harming runtime
      * functionality of the descriptors -- the information is needed only by
      * development tools.
      * </pre>
+     *
+     * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
      */
     com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder getSourceCodeInfoOrBuilder();
+
+    /**
+     * <pre>
+     * The syntax of the proto file.
+     * The supported values are "proto2" and "proto3".
+     * </pre>
+     *
+     * <code>optional string syntax = 12;</code>
+     */
+    boolean hasSyntax();
+    /**
+     * <pre>
+     * The syntax of the proto file.
+     * The supported values are "proto2" and "proto3".
+     * </pre>
+     *
+     * <code>optional string syntax = 12;</code>
+     */
+    java.lang.String getSyntax();
+    /**
+     * <pre>
+     * The syntax of the proto file.
+     * The supported values are "proto2" and "proto3".
+     * </pre>
+     *
+     * <code>optional string syntax = 12;</code>
+     */
+    com.google.protobuf.ByteString
+        getSyntaxBytes();
   }
   /**
-   * Protobuf type {@code google.protobuf.FileDescriptorProto}
-   *
    * <pre>
    * Describes a complete .proto file.
    * </pre>
+   *
+   * Protobuf type {@code google.protobuf.FileDescriptorProto}
    */
-  public static final class FileDescriptorProto extends
-      com.google.protobuf.GeneratedMessage implements
+  public  static final class FileDescriptorProto extends
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:google.protobuf.FileDescriptorProto)
       FileDescriptorProtoOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use FileDescriptorProto.newBuilder() to construct.
-    private FileDescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+    private FileDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private FileDescriptorProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final FileDescriptorProto defaultInstance;
-    public static FileDescriptorProto getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public FileDescriptorProto getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private FileDescriptorProto() {
+      name_ = "";
+      package_ = "";
+      dependency_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      publicDependency_ = java.util.Collections.emptyList();
+      weakDependency_ = java.util.Collections.emptyList();
+      messageType_ = java.util.Collections.emptyList();
+      enumType_ = java.util.Collections.emptyList();
+      service_ = java.util.Collections.emptyList();
+      extension_ = java.util.Collections.emptyList();
+      syntax_ = "";
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -1079,5 +1164,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -1092,6 +1177,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -1121,32 +1206,36 @@
             case 34: {
               if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
-                messageType_ = new java.util.ArrayList<>();
+                messageType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>();
                 mutable_bitField0_ |= 0x00000020;
               }
-              messageType_.add(input.readMessage(com.google.protobuf.DescriptorProtos.DescriptorProto.PARSER, extensionRegistry));
+              messageType_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.DescriptorProto.PARSER, extensionRegistry));
               break;
             }
             case 42: {
               if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
-                enumType_ = new java.util.ArrayList<>();
+                enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>();
                 mutable_bitField0_ |= 0x00000040;
               }
-              enumType_.add(input.readMessage(com.google.protobuf.DescriptorProtos.EnumDescriptorProto.PARSER, extensionRegistry));
+              enumType_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.EnumDescriptorProto.PARSER, extensionRegistry));
               break;
             }
             case 50: {
               if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
-                service_ = new java.util.ArrayList<>();
+                service_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto>();
                 mutable_bitField0_ |= 0x00000080;
               }
-              service_.add(input.readMessage(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.PARSER, extensionRegistry));
+              service_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.PARSER, extensionRegistry));
               break;
             }
             case 58: {
               if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
-                extension_ = new java.util.ArrayList<>();
+                extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
                 mutable_bitField0_ |= 0x00000100;
               }
-              extension_.add(input.readMessage(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.PARSER, extensionRegistry));
+              extension_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.PARSER, extensionRegistry));
               break;
             }
@@ -1179,5 +1268,5 @@
             case 80: {
               if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
-                publicDependency_ = new java.util.ArrayList<>();
+                publicDependency_ = new java.util.ArrayList<java.lang.Integer>();
                 mutable_bitField0_ |= 0x00000008;
               }
@@ -1189,5 +1278,5 @@
               int limit = input.pushLimit(length);
               if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
-                publicDependency_ = new java.util.ArrayList<>();
+                publicDependency_ = new java.util.ArrayList<java.lang.Integer>();
                 mutable_bitField0_ |= 0x00000008;
               }
@@ -1200,5 +1289,5 @@
             case 88: {
               if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-                weakDependency_ = new java.util.ArrayList<>();
+                weakDependency_ = new java.util.ArrayList<java.lang.Integer>();
                 mutable_bitField0_ |= 0x00000010;
               }
@@ -1210,5 +1299,5 @@
               int limit = input.pushLimit(length);
               if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
-                weakDependency_ = new java.util.ArrayList<>();
+                weakDependency_ = new java.util.ArrayList<java.lang.Integer>();
                 mutable_bitField0_ |= 0x00000010;
               }
@@ -1219,4 +1308,10 @@
               break;
             }
+            case 98: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000010;
+              syntax_ = bs;
+              break;
+            }
           }
         }
@@ -1225,5 +1320,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
@@ -1257,6 +1352,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable
@@ -1265,48 +1359,30 @@
     }
 
-    public static com.google.protobuf.Parser<FileDescriptorProto> PARSER =
-        new com.google.protobuf.AbstractParser<FileDescriptorProto>() {
-      @Override
-	public FileDescriptorProto parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new FileDescriptorProto(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<FileDescriptorProto> getParserForType() {
-      return PARSER;
-    }
-
     private int bitField0_;
     public static final int NAME_FIELD_NUMBER = 1;
-    private java.lang.Object name_;
-    /**
-     * <code>optional string name = 1;</code>
-     *
+    private volatile java.lang.Object name_;
+    /**
      * <pre>
      * file name, relative to root of source tree
      * </pre>
-     */
-    @Override
-	public boolean hasName() {
+     *
+     * <code>optional string name = 1;</code>
+     */
+    public boolean hasName() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
     /**
-     * <code>optional string name = 1;</code>
-     *
      * <pre>
      * file name, relative to root of source tree
      * </pre>
-     */
-    @Override
-	public java.lang.String getName() {
+     *
+     * <code>optional string name = 1;</code>
+     */
+    public java.lang.String getName() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -1318,16 +1394,15 @@
     }
     /**
-     * <code>optional string name = 1;</code>
-     *
      * <pre>
      * file name, relative to root of source tree
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
+     *
+     * <code>optional string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
         getNameBytes() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -1340,30 +1415,28 @@
 
     public static final int PACKAGE_FIELD_NUMBER = 2;
-    private java.lang.Object package_;
-    /**
-     * <code>optional string package = 2;</code>
-     *
+    private volatile java.lang.Object package_;
+    /**
      * <pre>
      * e.g. "foo", "foo.bar", etc.
      * </pre>
-     */
-    @Override
-	public boolean hasPackage() {
+     *
+     * <code>optional string package = 2;</code>
+     */
+    public boolean hasPackage() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
     /**
-     * <code>optional string package = 2;</code>
-     *
      * <pre>
      * e.g. "foo", "foo.bar", etc.
      * </pre>
-     */
-    @Override
-	public java.lang.String getPackage() {
+     *
+     * <code>optional string package = 2;</code>
+     */
+    public java.lang.String getPackage() {
       java.lang.Object ref = package_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -1375,16 +1448,15 @@
     }
     /**
-     * <code>optional string package = 2;</code>
-     *
      * <pre>
      * e.g. "foo", "foo.bar", etc.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
+     *
+     * <code>optional string package = 2;</code>
+     */
+    public com.google.protobuf.ByteString
         getPackageBytes() {
       java.lang.Object ref = package_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -1399,46 +1471,42 @@
     private com.google.protobuf.LazyStringList dependency_;
     /**
-     * <code>repeated string dependency = 3;</code>
-     *
      * <pre>
      * Names of files imported by this file.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ProtocolStringList
+     *
+     * <code>repeated string dependency = 3;</code>
+     */
+    public com.google.protobuf.ProtocolStringList
         getDependencyList() {
       return dependency_;
     }
     /**
-     * <code>repeated string dependency = 3;</code>
-     *
      * <pre>
      * Names of files imported by this file.
      * </pre>
-     */
-    @Override
-	public int getDependencyCount() {
+     *
+     * <code>repeated string dependency = 3;</code>
+     */
+    public int getDependencyCount() {
       return dependency_.size();
     }
     /**
-     * <code>repeated string dependency = 3;</code>
-     *
      * <pre>
      * Names of files imported by this file.
      * </pre>
-     */
-    @Override
-	public java.lang.String getDependency(int index) {
+     *
+     * <code>repeated string dependency = 3;</code>
+     */
+    public java.lang.String getDependency(int index) {
       return dependency_.get(index);
     }
     /**
-     * <code>repeated string dependency = 3;</code>
-     *
      * <pre>
      * Names of files imported by this file.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
+     *
+     * <code>repeated string dependency = 3;</code>
+     */
+    public com.google.protobuf.ByteString
         getDependencyBytes(int index) {
       return dependency_.getByteString(index);
@@ -1448,35 +1516,32 @@
     private java.util.List<java.lang.Integer> publicDependency_;
     /**
-     * <code>repeated int32 public_dependency = 10;</code>
-     *
      * <pre>
      * Indexes of the public imported files in the dependency list above.
      * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Integer>
+     *
+     * <code>repeated int32 public_dependency = 10;</code>
+     */
+    public java.util.List<java.lang.Integer>
         getPublicDependencyList() {
       return publicDependency_;
     }
     /**
-     * <code>repeated int32 public_dependency = 10;</code>
-     *
      * <pre>
      * Indexes of the public imported files in the dependency list above.
      * </pre>
-     */
-    @Override
-	public int getPublicDependencyCount() {
+     *
+     * <code>repeated int32 public_dependency = 10;</code>
+     */
+    public int getPublicDependencyCount() {
       return publicDependency_.size();
     }
     /**
-     * <code>repeated int32 public_dependency = 10;</code>
-     *
      * <pre>
      * Indexes of the public imported files in the dependency list above.
      * </pre>
-     */
-    @Override
-	public int getPublicDependency(int index) {
+     *
+     * <code>repeated int32 public_dependency = 10;</code>
+     */
+    public int getPublicDependency(int index) {
       return publicDependency_.get(index);
     }
@@ -1485,38 +1550,35 @@
     private java.util.List<java.lang.Integer> weakDependency_;
     /**
-     * <code>repeated int32 weak_dependency = 11;</code>
-     *
      * <pre>
      * Indexes of the weak imported files in the dependency list.
      * For Google-internal migration only. Do not use.
      * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Integer>
+     *
+     * <code>repeated int32 weak_dependency = 11;</code>
+     */
+    public java.util.List<java.lang.Integer>
         getWeakDependencyList() {
       return weakDependency_;
     }
     /**
-     * <code>repeated int32 weak_dependency = 11;</code>
-     *
      * <pre>
      * Indexes of the weak imported files in the dependency list.
      * For Google-internal migration only. Do not use.
      * </pre>
-     */
-    @Override
-	public int getWeakDependencyCount() {
+     *
+     * <code>repeated int32 weak_dependency = 11;</code>
+     */
+    public int getWeakDependencyCount() {
       return weakDependency_.size();
     }
     /**
-     * <code>repeated int32 weak_dependency = 11;</code>
-     *
      * <pre>
      * Indexes of the weak imported files in the dependency list.
      * For Google-internal migration only. Do not use.
      * </pre>
-     */
-    @Override
-	public int getWeakDependency(int index) {
+     *
+     * <code>repeated int32 weak_dependency = 11;</code>
+     */
+    public int getWeakDependency(int index) {
       return weakDependency_.get(index);
     }
@@ -1525,57 +1587,52 @@
     private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> messageType_;
     /**
-     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-     *
      * <pre>
      * All top-level definitions in this file.
      * </pre>
-     */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getMessageTypeList() {
+     *
+     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getMessageTypeList() {
       return messageType_;
     }
     /**
-     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-     *
      * <pre>
      * All top-level definitions in this file.
      * </pre>
-     */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>
+     *
+     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
         getMessageTypeOrBuilderList() {
       return messageType_;
     }
     /**
-     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-     *
      * <pre>
      * All top-level definitions in this file.
      * </pre>
-     */
-    @Override
-	public int getMessageTypeCount() {
+     *
+     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
+     */
+    public int getMessageTypeCount() {
       return messageType_.size();
     }
     /**
-     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-     *
      * <pre>
      * All top-level definitions in this file.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProto getMessageType(int index) {
+     *
+     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.DescriptorProto getMessageType(int index) {
       return messageType_.get(index);
     }
     /**
-     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-     *
      * <pre>
      * All top-level definitions in this file.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getMessageTypeOrBuilder(
+     *
+     * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getMessageTypeOrBuilder(
         int index) {
       return messageType_.get(index);
@@ -1587,6 +1644,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() {
+    public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() {
       return enumType_;
     }
@@ -1594,6 +1650,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
      */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
         getEnumTypeOrBuilderList() {
       return enumType_;
@@ -1602,6 +1657,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
      */
-    @Override
-	public int getEnumTypeCount() {
+    public int getEnumTypeCount() {
       return enumType_.size();
     }
@@ -1609,6 +1663,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
+    public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
       return enumType_.get(index);
     }
@@ -1616,6 +1669,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
+    public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
         int index) {
       return enumType_.get(index);
@@ -1627,6 +1679,5 @@
      * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> getServiceList() {
+    public java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> getServiceList() {
       return service_;
     }
@@ -1634,6 +1685,5 @@
      * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
      */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder>
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> 
         getServiceOrBuilderList() {
       return service_;
@@ -1642,6 +1692,5 @@
      * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
      */
-    @Override
-	public int getServiceCount() {
+    public int getServiceCount() {
       return service_.size();
     }
@@ -1649,6 +1698,5 @@
      * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getService(int index) {
+    public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getService(int index) {
       return service_.get(index);
     }
@@ -1656,6 +1704,5 @@
      * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder getServiceOrBuilder(
+    public com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder getServiceOrBuilder(
         int index) {
       return service_.get(index);
@@ -1667,6 +1714,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() {
+    public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() {
       return extension_;
     }
@@ -1674,6 +1720,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
      */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
         getExtensionOrBuilderList() {
       return extension_;
@@ -1682,6 +1727,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
      */
-    @Override
-	public int getExtensionCount() {
+    public int getExtensionCount() {
       return extension_.size();
     }
@@ -1689,6 +1733,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
+    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
       return extension_.get(index);
     }
@@ -1696,6 +1739,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
+    public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
         int index) {
       return extension_.get(index);
@@ -1707,6 +1749,5 @@
      * <code>optional .google.protobuf.FileOptions options = 8;</code>
      */
-    @Override
-	public boolean hasOptions() {
+    public boolean hasOptions() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
@@ -1714,14 +1755,12 @@
      * <code>optional .google.protobuf.FileOptions options = 8;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FileOptions getOptions() {
-      return options_;
+    public com.google.protobuf.DescriptorProtos.FileOptions getOptions() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance() : options_;
     }
     /**
      * <code>optional .google.protobuf.FileOptions options = 8;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder getOptionsOrBuilder() {
-      return options_;
+    public com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder getOptionsOrBuilder() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance() : options_;
     }
 
@@ -1729,62 +1768,102 @@
     private com.google.protobuf.DescriptorProtos.SourceCodeInfo sourceCodeInfo_;
     /**
-     * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-     *
      * <pre>
      * This field contains optional information about the original source code.
-     * You may safely remove this entire field whithout harming runtime
+     * You may safely remove this entire field without harming runtime
      * functionality of the descriptors -- the information is needed only by
      * development tools.
      * </pre>
-     */
-    @Override
-	public boolean hasSourceCodeInfo() {
+     *
+     * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
+     */
+    public boolean hasSourceCodeInfo() {
       return ((bitField0_ & 0x00000008) == 0x00000008);
     }
     /**
-     * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-     *
      * <pre>
      * This field contains optional information about the original source code.
-     * You may safely remove this entire field whithout harming runtime
+     * You may safely remove this entire field without harming runtime
      * functionality of the descriptors -- the information is needed only by
      * development tools.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.SourceCodeInfo getSourceCodeInfo() {
-      return sourceCodeInfo_;
-    }
-    /**
+     *
      * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-     *
+     */
+    public com.google.protobuf.DescriptorProtos.SourceCodeInfo getSourceCodeInfo() {
+      return sourceCodeInfo_ == null ? com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance() : sourceCodeInfo_;
+    }
+    /**
      * <pre>
      * This field contains optional information about the original source code.
-     * You may safely remove this entire field whithout harming runtime
+     * You may safely remove this entire field without harming runtime
      * functionality of the descriptors -- the information is needed only by
      * development tools.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder getSourceCodeInfoOrBuilder() {
-      return sourceCodeInfo_;
-    }
-
-    private void initFields() {
-      name_ = "";
-      package_ = "";
-      dependency_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      publicDependency_ = java.util.Collections.emptyList();
-      weakDependency_ = java.util.Collections.emptyList();
-      messageType_ = java.util.Collections.emptyList();
-      enumType_ = java.util.Collections.emptyList();
-      service_ = java.util.Collections.emptyList();
-      extension_ = java.util.Collections.emptyList();
-      options_ = com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance();
-      sourceCodeInfo_ = com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance();
-    }
+     *
+     * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder getSourceCodeInfoOrBuilder() {
+      return sourceCodeInfo_ == null ? com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance() : sourceCodeInfo_;
+    }
+
+    public static final int SYNTAX_FIELD_NUMBER = 12;
+    private volatile java.lang.Object syntax_;
+    /**
+     * <pre>
+     * The syntax of the proto file.
+     * The supported values are "proto2" and "proto3".
+     * </pre>
+     *
+     * <code>optional string syntax = 12;</code>
+     */
+    public boolean hasSyntax() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <pre>
+     * The syntax of the proto file.
+     * The supported values are "proto2" and "proto3".
+     * </pre>
+     *
+     * <code>optional string syntax = 12;</code>
+     */
+    public java.lang.String getSyntax() {
+      java.lang.Object ref = syntax_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          syntax_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     * The syntax of the proto file.
+     * The supported values are "proto2" and "proto3".
+     * </pre>
+     *
+     * <code>optional string syntax = 12;</code>
+     */
+    public com.google.protobuf.ByteString
+        getSyntaxBytes() {
+      java.lang.Object ref = syntax_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        syntax_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -1825,16 +1904,14 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(1, getNameBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getPackageBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, package_);
       }
       for (int i = 0; i < dependency_.size(); i++) {
-        output.writeBytes(3, dependency_.getByteString(i));
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, dependency_.getRaw(i));
       }
       for (int i = 0; i < messageType_.size(); i++) {
@@ -1851,8 +1928,8 @@
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeMessage(8, options_);
+        output.writeMessage(8, getOptions());
       }
       if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        output.writeMessage(9, sourceCodeInfo_);
+        output.writeMessage(9, getSourceCodeInfo());
       }
       for (int i = 0; i < publicDependency_.size(); i++) {
@@ -1862,27 +1939,25 @@
         output.writeInt32(11, weakDependency_.get(i));
       }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, syntax_);
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(1, getNameBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getPackageBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, package_);
       }
       {
         int dataSize = 0;
         for (int i = 0; i < dependency_.size(); i++) {
-          dataSize += com.google.protobuf.CodedOutputStream
-            .computeBytesSizeNoTag(dependency_.getByteString(i));
+          dataSize += computeStringSizeNoTag(dependency_.getRaw(i));
         }
         size += dataSize;
@@ -1907,9 +1982,9 @@
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, options_);
+          .computeMessageSize(8, getOptions());
       }
       if (((bitField0_ & 0x00000008) == 0x00000008)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(9, sourceCodeInfo_);
+          .computeMessageSize(9, getSourceCodeInfo());
       }
       {
@@ -1931,16 +2006,137 @@
         size += 1 * getWeakDependencyList().size();
       }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, syntax_);
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.FileDescriptorProto)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.FileDescriptorProto other = (com.google.protobuf.DescriptorProtos.FileDescriptorProto) obj;
+
+      boolean result = true;
+      result = result && (hasName() == other.hasName());
+      if (hasName()) {
+        result = result && getName()
+            .equals(other.getName());
+      }
+      result = result && (hasPackage() == other.hasPackage());
+      if (hasPackage()) {
+        result = result && getPackage()
+            .equals(other.getPackage());
+      }
+      result = result && getDependencyList()
+          .equals(other.getDependencyList());
+      result = result && getPublicDependencyList()
+          .equals(other.getPublicDependencyList());
+      result = result && getWeakDependencyList()
+          .equals(other.getWeakDependencyList());
+      result = result && getMessageTypeList()
+          .equals(other.getMessageTypeList());
+      result = result && getEnumTypeList()
+          .equals(other.getEnumTypeList());
+      result = result && getServiceList()
+          .equals(other.getServiceList());
+      result = result && getExtensionList()
+          .equals(other.getExtensionList());
+      result = result && (hasOptions() == other.hasOptions());
+      if (hasOptions()) {
+        result = result && getOptions()
+            .equals(other.getOptions());
+      }
+      result = result && (hasSourceCodeInfo() == other.hasSourceCodeInfo());
+      if (hasSourceCodeInfo()) {
+        result = result && getSourceCodeInfo()
+            .equals(other.getSourceCodeInfo());
+      }
+      result = result && (hasSyntax() == other.hasSyntax());
+      if (hasSyntax()) {
+        result = result && getSyntax()
+            .equals(other.getSyntax());
+      }
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasName()) {
+        hash = (37 * hash) + NAME_FIELD_NUMBER;
+        hash = (53 * hash) + getName().hashCode();
+      }
+      if (hasPackage()) {
+        hash = (37 * hash) + PACKAGE_FIELD_NUMBER;
+        hash = (53 * hash) + getPackage().hashCode();
+      }
+      if (getDependencyCount() > 0) {
+        hash = (37 * hash) + DEPENDENCY_FIELD_NUMBER;
+        hash = (53 * hash) + getDependencyList().hashCode();
+      }
+      if (getPublicDependencyCount() > 0) {
+        hash = (37 * hash) + PUBLIC_DEPENDENCY_FIELD_NUMBER;
+        hash = (53 * hash) + getPublicDependencyList().hashCode();
+      }
+      if (getWeakDependencyCount() > 0) {
+        hash = (37 * hash) + WEAK_DEPENDENCY_FIELD_NUMBER;
+        hash = (53 * hash) + getWeakDependencyList().hashCode();
+      }
+      if (getMessageTypeCount() > 0) {
+        hash = (37 * hash) + MESSAGE_TYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getMessageTypeList().hashCode();
+      }
+      if (getEnumTypeCount() > 0) {
+        hash = (37 * hash) + ENUM_TYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getEnumTypeList().hashCode();
+      }
+      if (getServiceCount() > 0) {
+        hash = (37 * hash) + SERVICE_FIELD_NUMBER;
+        hash = (53 * hash) + getServiceList().hashCode();
+      }
+      if (getExtensionCount() > 0) {
+        hash = (37 * hash) + EXTENSION_FIELD_NUMBER;
+        hash = (53 * hash) + getExtensionList().hashCode();
+      }
+      if (hasOptions()) {
+        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
+        hash = (53 * hash) + getOptions().hashCode();
+      }
+      if (hasSourceCodeInfo()) {
+        hash = (37 * hash) + SOURCE_CODE_INFO_FIELD_NUMBER;
+        hash = (53 * hash) + getSourceCodeInfo().hashCode();
+      }
+      if (hasSyntax()) {
+        hash = (37 * hash) + SYNTAX_FIELD_NUMBER;
+        hash = (53 * hash) + getSyntax().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
         com.google.protobuf.ByteString data)
@@ -1966,5 +2162,6 @@
     public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
@@ -1972,9 +2169,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseDelimitedFrom(
@@ -1982,10 +2181,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
@@ -1993,31 +2194,35 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FileDescriptorProto prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
     /**
-     * Protobuf type {@code google.protobuf.FileDescriptorProto}
-     *
      * <pre>
      * Describes a complete .proto file.
      * </pre>
+     *
+     * Protobuf type {@code google.protobuf.FileDescriptorProto}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.FileDescriptorProto)
         com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder {
@@ -2027,6 +2232,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable
@@ -2041,10 +2245,11 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getMessageTypeFieldBuilder();
           getEnumTypeFieldBuilder();
@@ -2055,10 +2260,5 @@
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         name_ = "";
@@ -2097,5 +2297,5 @@
         }
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance();
+          options_ = null;
         } else {
           optionsBuilder_.clear();
@@ -2103,30 +2303,24 @@
         bitField0_ = (bitField0_ & ~0x00000200);
         if (sourceCodeInfoBuilder_ == null) {
-          sourceCodeInfo_ = com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance();
+          sourceCodeInfo_ = null;
         } else {
           sourceCodeInfoBuilder_.clear();
         }
         bitField0_ = (bitField0_ & ~0x00000400);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+        syntax_ = "";
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileDescriptorProto getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.FileDescriptorProto getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileDescriptorProto build() {
+      public com.google.protobuf.DescriptorProtos.FileDescriptorProto build() {
         com.google.protobuf.DescriptorProtos.FileDescriptorProto result = buildPartial();
         if (!result.isInitialized()) {
@@ -2136,6 +2330,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileDescriptorProto buildPartial() {
+      public com.google.protobuf.DescriptorProtos.FileDescriptorProto buildPartial() {
         com.google.protobuf.DescriptorProtos.FileDescriptorProto result = new com.google.protobuf.DescriptorProtos.FileDescriptorProto(this);
         int from_bitField0_ = bitField0_;
@@ -2216,4 +2409,8 @@
           result.sourceCodeInfo_ = sourceCodeInfoBuilder_.build();
         }
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.syntax_ = syntax_;
         result.bitField0_ = to_bitField0_;
         onBuilt();
@@ -2221,6 +2418,31 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.FileDescriptorProto) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.FileDescriptorProto)other);
@@ -2291,6 +2513,6 @@
               messageType_ = other.messageType_;
               bitField0_ = (bitField0_ & ~0x00000020);
-              messageTypeBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              messageTypeBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getMessageTypeFieldBuilder() : null;
             } else {
@@ -2317,6 +2539,6 @@
               enumType_ = other.enumType_;
               bitField0_ = (bitField0_ & ~0x00000040);
-              enumTypeBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              enumTypeBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getEnumTypeFieldBuilder() : null;
             } else {
@@ -2343,6 +2565,6 @@
               service_ = other.service_;
               bitField0_ = (bitField0_ & ~0x00000080);
-              serviceBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              serviceBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getServiceFieldBuilder() : null;
             } else {
@@ -2369,6 +2591,6 @@
               extension_ = other.extension_;
               bitField0_ = (bitField0_ & ~0x00000100);
-              extensionBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              extensionBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getExtensionFieldBuilder() : null;
             } else {
@@ -2383,13 +2605,17 @@
           mergeSourceCodeInfo(other.getSourceCodeInfo());
         }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        if (other.hasSyntax()) {
+          bitField0_ |= 0x00000800;
+          syntax_ = other.syntax_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         for (int i = 0; i < getMessageTypeCount(); i++) {
           if (!getMessageType(i).isInitialized()) {
-
             return false;
           }
@@ -2397,5 +2623,4 @@
         for (int i = 0; i < getEnumTypeCount(); i++) {
           if (!getEnumType(i).isInitialized()) {
-
             return false;
           }
@@ -2403,5 +2628,4 @@
         for (int i = 0; i < getServiceCount(); i++) {
           if (!getService(i).isInitialized()) {
-
             return false;
           }
@@ -2409,5 +2633,4 @@
         for (int i = 0; i < getExtensionCount(); i++) {
           if (!getExtension(i).isInitialized()) {
-
             return false;
           }
@@ -2415,5 +2638,4 @@
         if (hasOptions()) {
           if (!getOptions().isInitialized()) {
-
             return false;
           }
@@ -2422,6 +2644,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -2432,5 +2653,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.FileDescriptorProto) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -2444,23 +2665,21 @@
       private java.lang.Object name_ = "";
       /**
+       * <pre>
+       * file name, relative to root of source tree
+       * </pre>
+       *
        * <code>optional string name = 1;</code>
-       *
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
        * <pre>
        * file name, relative to root of source tree
        * </pre>
-       */
-      @Override
-	public boolean hasName() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
+       *
        * <code>optional string name = 1;</code>
-       *
-       * <pre>
-       * file name, relative to root of source tree
-       * </pre>
-       */
-      @Override
-	public java.lang.String getName() {
+       */
+      public java.lang.String getName() {
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
@@ -2477,16 +2696,15 @@
       }
       /**
+       * <pre>
+       * file name, relative to root of source tree
+       * </pre>
+       *
        * <code>optional string name = 1;</code>
-       *
-       * <pre>
-       * file name, relative to root of source tree
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
+       */
+      public com.google.protobuf.ByteString
           getNameBytes() {
         java.lang.Object ref = name_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -2498,9 +2716,9 @@
       }
       /**
+       * <pre>
+       * file name, relative to root of source tree
+       * </pre>
+       *
        * <code>optional string name = 1;</code>
-       *
-       * <pre>
-       * file name, relative to root of source tree
-       * </pre>
        */
       public Builder setName(
@@ -2515,9 +2733,9 @@
       }
       /**
+       * <pre>
+       * file name, relative to root of source tree
+       * </pre>
+       *
        * <code>optional string name = 1;</code>
-       *
-       * <pre>
-       * file name, relative to root of source tree
-       * </pre>
        */
       public Builder clearName() {
@@ -2528,9 +2746,9 @@
       }
       /**
+       * <pre>
+       * file name, relative to root of source tree
+       * </pre>
+       *
        * <code>optional string name = 1;</code>
-       *
-       * <pre>
-       * file name, relative to root of source tree
-       * </pre>
        */
       public Builder setNameBytes(
@@ -2547,23 +2765,21 @@
       private java.lang.Object package_ = "";
       /**
+       * <pre>
+       * e.g. "foo", "foo.bar", etc.
+       * </pre>
+       *
        * <code>optional string package = 2;</code>
-       *
+       */
+      public boolean hasPackage() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
        * <pre>
        * e.g. "foo", "foo.bar", etc.
        * </pre>
-       */
-      @Override
-	public boolean hasPackage() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
+       *
        * <code>optional string package = 2;</code>
-       *
-       * <pre>
-       * e.g. "foo", "foo.bar", etc.
-       * </pre>
-       */
-      @Override
-	public java.lang.String getPackage() {
+       */
+      public java.lang.String getPackage() {
         java.lang.Object ref = package_;
         if (!(ref instanceof java.lang.String)) {
@@ -2580,16 +2796,15 @@
       }
       /**
+       * <pre>
+       * e.g. "foo", "foo.bar", etc.
+       * </pre>
+       *
        * <code>optional string package = 2;</code>
-       *
-       * <pre>
-       * e.g. "foo", "foo.bar", etc.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
+       */
+      public com.google.protobuf.ByteString
           getPackageBytes() {
         java.lang.Object ref = package_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -2601,9 +2816,9 @@
       }
       /**
+       * <pre>
+       * e.g. "foo", "foo.bar", etc.
+       * </pre>
+       *
        * <code>optional string package = 2;</code>
-       *
-       * <pre>
-       * e.g. "foo", "foo.bar", etc.
-       * </pre>
        */
       public Builder setPackage(
@@ -2618,9 +2833,9 @@
       }
       /**
+       * <pre>
+       * e.g. "foo", "foo.bar", etc.
+       * </pre>
+       *
        * <code>optional string package = 2;</code>
-       *
-       * <pre>
-       * e.g. "foo", "foo.bar", etc.
-       * </pre>
        */
       public Builder clearPackage() {
@@ -2631,9 +2846,9 @@
       }
       /**
+       * <pre>
+       * e.g. "foo", "foo.bar", etc.
+       * </pre>
+       *
        * <code>optional string package = 2;</code>
-       *
-       * <pre>
-       * e.g. "foo", "foo.bar", etc.
-       * </pre>
        */
       public Builder setPackageBytes(
@@ -2656,55 +2871,51 @@
       }
       /**
+       * <pre>
+       * Names of files imported by this file.
+       * </pre>
+       *
        * <code>repeated string dependency = 3;</code>
-       *
-       * <pre>
-       * Names of files imported by this file.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.ProtocolStringList
+       */
+      public com.google.protobuf.ProtocolStringList
           getDependencyList() {
         return dependency_.getUnmodifiableView();
       }
       /**
+       * <pre>
+       * Names of files imported by this file.
+       * </pre>
+       *
        * <code>repeated string dependency = 3;</code>
-       *
+       */
+      public int getDependencyCount() {
+        return dependency_.size();
+      }
+      /**
        * <pre>
        * Names of files imported by this file.
        * </pre>
-       */
-      @Override
-	public int getDependencyCount() {
-        return dependency_.size();
-      }
-      /**
+       *
        * <code>repeated string dependency = 3;</code>
-       *
+       */
+      public java.lang.String getDependency(int index) {
+        return dependency_.get(index);
+      }
+      /**
        * <pre>
        * Names of files imported by this file.
        * </pre>
-       */
-      @Override
-	public java.lang.String getDependency(int index) {
-        return dependency_.get(index);
-      }
-      /**
+       *
        * <code>repeated string dependency = 3;</code>
-       *
-       * <pre>
-       * Names of files imported by this file.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
+       */
+      public com.google.protobuf.ByteString
           getDependencyBytes(int index) {
         return dependency_.getByteString(index);
       }
       /**
+       * <pre>
+       * Names of files imported by this file.
+       * </pre>
+       *
        * <code>repeated string dependency = 3;</code>
-       *
-       * <pre>
-       * Names of files imported by this file.
-       * </pre>
        */
       public Builder setDependency(
@@ -2719,9 +2930,9 @@
       }
       /**
+       * <pre>
+       * Names of files imported by this file.
+       * </pre>
+       *
        * <code>repeated string dependency = 3;</code>
-       *
-       * <pre>
-       * Names of files imported by this file.
-       * </pre>
        */
       public Builder addDependency(
@@ -2736,9 +2947,9 @@
       }
       /**
+       * <pre>
+       * Names of files imported by this file.
+       * </pre>
+       *
        * <code>repeated string dependency = 3;</code>
-       *
-       * <pre>
-       * Names of files imported by this file.
-       * </pre>
        */
       public Builder addAllDependency(
@@ -2751,9 +2962,9 @@
       }
       /**
+       * <pre>
+       * Names of files imported by this file.
+       * </pre>
+       *
        * <code>repeated string dependency = 3;</code>
-       *
-       * <pre>
-       * Names of files imported by this file.
-       * </pre>
        */
       public Builder clearDependency() {
@@ -2764,9 +2975,9 @@
       }
       /**
+       * <pre>
+       * Names of files imported by this file.
+       * </pre>
+       *
        * <code>repeated string dependency = 3;</code>
-       *
-       * <pre>
-       * Names of files imported by this file.
-       * </pre>
        */
       public Builder addDependencyBytes(
@@ -2784,48 +2995,45 @@
       private void ensurePublicDependencyIsMutable() {
         if (!((bitField0_ & 0x00000008) == 0x00000008)) {
-          publicDependency_ = new java.util.ArrayList<>(publicDependency_);
+          publicDependency_ = new java.util.ArrayList<java.lang.Integer>(publicDependency_);
           bitField0_ |= 0x00000008;
          }
       }
       /**
+       * <pre>
+       * Indexes of the public imported files in the dependency list above.
+       * </pre>
+       *
        * <code>repeated int32 public_dependency = 10;</code>
-       *
-       * <pre>
-       * Indexes of the public imported files in the dependency list above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Integer>
+       */
+      public java.util.List<java.lang.Integer>
           getPublicDependencyList() {
         return java.util.Collections.unmodifiableList(publicDependency_);
       }
       /**
+       * <pre>
+       * Indexes of the public imported files in the dependency list above.
+       * </pre>
+       *
        * <code>repeated int32 public_dependency = 10;</code>
-       *
+       */
+      public int getPublicDependencyCount() {
+        return publicDependency_.size();
+      }
+      /**
        * <pre>
        * Indexes of the public imported files in the dependency list above.
        * </pre>
-       */
-      @Override
-	public int getPublicDependencyCount() {
-        return publicDependency_.size();
-      }
-      /**
+       *
        * <code>repeated int32 public_dependency = 10;</code>
-       *
+       */
+      public int getPublicDependency(int index) {
+        return publicDependency_.get(index);
+      }
+      /**
        * <pre>
        * Indexes of the public imported files in the dependency list above.
        * </pre>
-       */
-      @Override
-	public int getPublicDependency(int index) {
-        return publicDependency_.get(index);
-      }
-      /**
+       *
        * <code>repeated int32 public_dependency = 10;</code>
-       *
-       * <pre>
-       * Indexes of the public imported files in the dependency list above.
-       * </pre>
        */
       public Builder setPublicDependency(
@@ -2837,9 +3045,9 @@
       }
       /**
+       * <pre>
+       * Indexes of the public imported files in the dependency list above.
+       * </pre>
+       *
        * <code>repeated int32 public_dependency = 10;</code>
-       *
-       * <pre>
-       * Indexes of the public imported files in the dependency list above.
-       * </pre>
        */
       public Builder addPublicDependency(int value) {
@@ -2850,9 +3058,9 @@
       }
       /**
+       * <pre>
+       * Indexes of the public imported files in the dependency list above.
+       * </pre>
+       *
        * <code>repeated int32 public_dependency = 10;</code>
-       *
-       * <pre>
-       * Indexes of the public imported files in the dependency list above.
-       * </pre>
        */
       public Builder addAllPublicDependency(
@@ -2865,9 +3073,9 @@
       }
       /**
+       * <pre>
+       * Indexes of the public imported files in the dependency list above.
+       * </pre>
+       *
        * <code>repeated int32 public_dependency = 10;</code>
-       *
-       * <pre>
-       * Indexes of the public imported files in the dependency list above.
-       * </pre>
        */
       public Builder clearPublicDependency() {
@@ -2881,52 +3089,49 @@
       private void ensureWeakDependencyIsMutable() {
         if (!((bitField0_ & 0x00000010) == 0x00000010)) {
-          weakDependency_ = new java.util.ArrayList<>(weakDependency_);
+          weakDependency_ = new java.util.ArrayList<java.lang.Integer>(weakDependency_);
           bitField0_ |= 0x00000010;
          }
       }
       /**
-       * <code>repeated int32 weak_dependency = 11;</code>
-       *
        * <pre>
        * Indexes of the weak imported files in the dependency list.
        * For Google-internal migration only. Do not use.
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Integer>
+       *
+       * <code>repeated int32 weak_dependency = 11;</code>
+       */
+      public java.util.List<java.lang.Integer>
           getWeakDependencyList() {
         return java.util.Collections.unmodifiableList(weakDependency_);
       }
       /**
-       * <code>repeated int32 weak_dependency = 11;</code>
-       *
        * <pre>
        * Indexes of the weak imported files in the dependency list.
        * For Google-internal migration only. Do not use.
        * </pre>
-       */
-      @Override
-	public int getWeakDependencyCount() {
+       *
+       * <code>repeated int32 weak_dependency = 11;</code>
+       */
+      public int getWeakDependencyCount() {
         return weakDependency_.size();
       }
       /**
-       * <code>repeated int32 weak_dependency = 11;</code>
-       *
        * <pre>
        * Indexes of the weak imported files in the dependency list.
        * For Google-internal migration only. Do not use.
        * </pre>
-       */
-      @Override
-	public int getWeakDependency(int index) {
+       *
+       * <code>repeated int32 weak_dependency = 11;</code>
+       */
+      public int getWeakDependency(int index) {
         return weakDependency_.get(index);
       }
       /**
-       * <code>repeated int32 weak_dependency = 11;</code>
-       *
        * <pre>
        * Indexes of the weak imported files in the dependency list.
        * For Google-internal migration only. Do not use.
        * </pre>
+       *
+       * <code>repeated int32 weak_dependency = 11;</code>
        */
       public Builder setWeakDependency(
@@ -2938,10 +3143,10 @@
       }
       /**
-       * <code>repeated int32 weak_dependency = 11;</code>
-       *
        * <pre>
        * Indexes of the weak imported files in the dependency list.
        * For Google-internal migration only. Do not use.
        * </pre>
+       *
+       * <code>repeated int32 weak_dependency = 11;</code>
        */
       public Builder addWeakDependency(int value) {
@@ -2952,10 +3157,10 @@
       }
       /**
-       * <code>repeated int32 weak_dependency = 11;</code>
-       *
        * <pre>
        * Indexes of the weak imported files in the dependency list.
        * For Google-internal migration only. Do not use.
        * </pre>
+       *
+       * <code>repeated int32 weak_dependency = 11;</code>
        */
       public Builder addAllWeakDependency(
@@ -2968,10 +3173,10 @@
       }
       /**
-       * <code>repeated int32 weak_dependency = 11;</code>
-       *
        * <pre>
        * Indexes of the weak imported files in the dependency list.
        * For Google-internal migration only. Do not use.
        * </pre>
+       *
+       * <code>repeated int32 weak_dependency = 11;</code>
        */
       public Builder clearWeakDependency() {
@@ -2986,21 +3191,20 @@
       private void ensureMessageTypeIsMutable() {
         if (!((bitField0_ & 0x00000020) == 0x00000020)) {
-          messageType_ = new java.util.ArrayList<>(messageType_);
+          messageType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>(messageType_);
           bitField0_ |= 0x00000020;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> messageTypeBuilder_;
 
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
-       */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getMessageTypeList() {
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getMessageTypeList() {
         if (messageTypeBuilder_ == null) {
           return java.util.Collections.unmodifiableList(messageType_);
@@ -3010,12 +3214,11 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
-       */
-      @Override
-	public int getMessageTypeCount() {
+       */
+      public int getMessageTypeCount() {
         if (messageTypeBuilder_ == null) {
           return messageType_.size();
@@ -3025,12 +3228,11 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProto getMessageType(int index) {
+       */
+      public com.google.protobuf.DescriptorProtos.DescriptorProto getMessageType(int index) {
         if (messageTypeBuilder_ == null) {
           return messageType_.get(index);
@@ -3040,9 +3242,9 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
        */
       public Builder setMessageType(
@@ -3061,9 +3263,9 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
        */
       public Builder setMessageType(
@@ -3079,9 +3281,9 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
        */
       public Builder addMessageType(com.google.protobuf.DescriptorProtos.DescriptorProto value) {
@@ -3099,9 +3301,9 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
        */
       public Builder addMessageType(
@@ -3120,9 +3322,9 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
        */
       public Builder addMessageType(
@@ -3138,9 +3340,9 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
        */
       public Builder addMessageType(
@@ -3156,9 +3358,9 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
        */
       public Builder addAllMessageType(
@@ -3175,9 +3377,9 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
        */
       public Builder clearMessageType() {
@@ -3192,9 +3394,9 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
        */
       public Builder removeMessageType(int index) {
@@ -3209,9 +3411,9 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder getMessageTypeBuilder(
@@ -3220,12 +3422,11 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getMessageTypeOrBuilder(
+       */
+      public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getMessageTypeOrBuilder(
           int index) {
         if (messageTypeBuilder_ == null) {
@@ -3235,12 +3436,11 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
-       */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
            getMessageTypeOrBuilderList() {
         if (messageTypeBuilder_ != null) {
@@ -3251,9 +3451,9 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder addMessageTypeBuilder() {
@@ -3262,9 +3462,9 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder addMessageTypeBuilder(
@@ -3274,19 +3474,20 @@
       }
       /**
+       * <pre>
+       * All top-level definitions in this file.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
-       *
-       * <pre>
-       * All top-level definitions in this file.
-       * </pre>
-       */
-      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.Builder>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.Builder> 
            getMessageTypeBuilderList() {
         return getMessageTypeFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
           getMessageTypeFieldBuilder() {
         if (messageTypeBuilder_ == null) {
-          messageTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          messageTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>(
                   messageType_,
                   ((bitField0_ & 0x00000020) == 0x00000020),
@@ -3302,10 +3503,10 @@
       private void ensureEnumTypeIsMutable() {
         if (!((bitField0_ & 0x00000040) == 0x00000040)) {
-          enumType_ = new java.util.ArrayList<>(enumType_);
+          enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>(enumType_);
           bitField0_ |= 0x00000040;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> enumTypeBuilder_;
 
@@ -3313,6 +3514,5 @@
        * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() {
+      public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() {
         if (enumTypeBuilder_ == null) {
           return java.util.Collections.unmodifiableList(enumType_);
@@ -3324,6 +3524,5 @@
        * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
        */
-      @Override
-	public int getEnumTypeCount() {
+      public int getEnumTypeCount() {
         if (enumTypeBuilder_ == null) {
           return enumType_.size();
@@ -3335,6 +3534,5 @@
        * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
+      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
         if (enumTypeBuilder_ == null) {
           return enumType_.get(index);
@@ -3486,6 +3684,5 @@
        * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
+      public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
           int index) {
         if (enumTypeBuilder_ == null) {
@@ -3497,6 +3694,5 @@
        * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
        */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
            getEnumTypeOrBuilderList() {
         if (enumTypeBuilder_ != null) {
@@ -3524,13 +3720,14 @@
        * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
        */
-      public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder>
+      public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder> 
            getEnumTypeBuilderList() {
         return getEnumTypeFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
           getEnumTypeFieldBuilder() {
         if (enumTypeBuilder_ == null) {
-          enumTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          enumTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>(
                   enumType_,
                   ((bitField0_ & 0x00000040) == 0x00000040),
@@ -3546,10 +3743,10 @@
       private void ensureServiceIsMutable() {
         if (!((bitField0_ & 0x00000080) == 0x00000080)) {
-          service_ = new java.util.ArrayList<>(service_);
+          service_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto>(service_);
           bitField0_ |= 0x00000080;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.ServiceDescriptorProto, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> serviceBuilder_;
 
@@ -3557,6 +3754,5 @@
        * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> getServiceList() {
+      public java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> getServiceList() {
         if (serviceBuilder_ == null) {
           return java.util.Collections.unmodifiableList(service_);
@@ -3568,6 +3764,5 @@
        * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
        */
-      @Override
-	public int getServiceCount() {
+      public int getServiceCount() {
         if (serviceBuilder_ == null) {
           return service_.size();
@@ -3579,6 +3774,5 @@
        * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getService(int index) {
+      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getService(int index) {
         if (serviceBuilder_ == null) {
           return service_.get(index);
@@ -3730,6 +3924,5 @@
        * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder getServiceOrBuilder(
+      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder getServiceOrBuilder(
           int index) {
         if (serviceBuilder_ == null) {
@@ -3741,6 +3934,5 @@
        * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
        */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder>
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> 
            getServiceOrBuilderList() {
         if (serviceBuilder_ != null) {
@@ -3768,13 +3960,14 @@
        * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
        */
-      public java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder>
+      public java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder> 
            getServiceBuilderList() {
         return getServiceFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.ServiceDescriptorProto, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.ServiceDescriptorProto, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> 
           getServiceFieldBuilder() {
         if (serviceBuilder_ == null) {
-          serviceBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          serviceBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.ServiceDescriptorProto, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder>(
                   service_,
                   ((bitField0_ & 0x00000080) == 0x00000080),
@@ -3790,10 +3983,10 @@
       private void ensureExtensionIsMutable() {
         if (!((bitField0_ & 0x00000100) == 0x00000100)) {
-          extension_ = new java.util.ArrayList<>(extension_);
+          extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>(extension_);
           bitField0_ |= 0x00000100;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> extensionBuilder_;
 
@@ -3801,6 +3994,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() {
+      public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() {
         if (extensionBuilder_ == null) {
           return java.util.Collections.unmodifiableList(extension_);
@@ -3812,6 +4004,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
        */
-      @Override
-	public int getExtensionCount() {
+      public int getExtensionCount() {
         if (extensionBuilder_ == null) {
           return extension_.size();
@@ -3823,6 +4014,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
+      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
         if (extensionBuilder_ == null) {
           return extension_.get(index);
@@ -3974,6 +4164,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
+      public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
           int index) {
         if (extensionBuilder_ == null) {
@@ -3985,6 +4174,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
        */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
            getExtensionOrBuilderList() {
         if (extensionBuilder_ != null) {
@@ -4012,13 +4200,14 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
        */
-      public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder>
+      public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder> 
            getExtensionBuilderList() {
         return getExtensionFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
           getExtensionFieldBuilder() {
         if (extensionBuilder_ == null) {
-          extensionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          extensionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>(
                   extension_,
                   ((bitField0_ & 0x00000100) == 0x00000100),
@@ -4030,12 +4219,11 @@
       }
 
-      private com.google.protobuf.DescriptorProtos.FileOptions options_ = com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance();
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.DescriptorProtos.FileOptions options_ = null;
+      private com.google.protobuf.SingleFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.FileOptions, com.google.protobuf.DescriptorProtos.FileOptions.Builder, com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder> optionsBuilder_;
       /**
        * <code>optional .google.protobuf.FileOptions options = 8;</code>
        */
-      @Override
-	public boolean hasOptions() {
+      public boolean hasOptions() {
         return ((bitField0_ & 0x00000200) == 0x00000200);
       }
@@ -4043,8 +4231,7 @@
        * <code>optional .google.protobuf.FileOptions options = 8;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileOptions getOptions() {
+      public com.google.protobuf.DescriptorProtos.FileOptions getOptions() {
         if (optionsBuilder_ == null) {
-          return options_;
+          return options_ == null ? com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance() : options_;
         } else {
           return optionsBuilder_.getMessage();
@@ -4087,4 +4274,5 @@
         if (optionsBuilder_ == null) {
           if (((bitField0_ & 0x00000200) == 0x00000200) &&
+              options_ != null &&
               options_ != com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance()) {
             options_ =
@@ -4105,5 +4293,5 @@
       public Builder clearOptions() {
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance();
+          options_ = null;
           onChanged();
         } else {
@@ -4124,10 +4312,10 @@
        * <code>optional .google.protobuf.FileOptions options = 8;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder getOptionsOrBuilder() {
+      public com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder getOptionsOrBuilder() {
         if (optionsBuilder_ != null) {
           return optionsBuilder_.getMessageOrBuilder();
         } else {
-          return options_;
+          return options_ == null ?
+              com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance() : options_;
         }
       }
@@ -4135,9 +4323,10 @@
        * <code>optional .google.protobuf.FileOptions options = 8;</code>
        */
-      private com.google.protobuf.SingleFieldBuilder<
-          com.google.protobuf.DescriptorProtos.FileOptions, com.google.protobuf.DescriptorProtos.FileOptions.Builder, com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder>
+      private com.google.protobuf.SingleFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.FileOptions, com.google.protobuf.DescriptorProtos.FileOptions.Builder, com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder> 
           getOptionsFieldBuilder() {
         if (optionsBuilder_ == null) {
-          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<>(
+          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.FileOptions, com.google.protobuf.DescriptorProtos.FileOptions.Builder, com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder>(
                   getOptions(),
                   getParentForChildren(),
@@ -4148,35 +4337,33 @@
       }
 
-      private com.google.protobuf.DescriptorProtos.SourceCodeInfo sourceCodeInfo_ = com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance();
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.DescriptorProtos.SourceCodeInfo sourceCodeInfo_ = null;
+      private com.google.protobuf.SingleFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.SourceCodeInfo, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder> sourceCodeInfoBuilder_;
       /**
-       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-       *
        * <pre>
        * This field contains optional information about the original source code.
-       * You may safely remove this entire field whithout harming runtime
+       * You may safely remove this entire field without harming runtime
        * functionality of the descriptors -- the information is needed only by
        * development tools.
        * </pre>
-       */
-      @Override
-	public boolean hasSourceCodeInfo() {
+       *
+       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
+       */
+      public boolean hasSourceCodeInfo() {
         return ((bitField0_ & 0x00000400) == 0x00000400);
       }
       /**
-       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-       *
        * <pre>
        * This field contains optional information about the original source code.
-       * You may safely remove this entire field whithout harming runtime
+       * You may safely remove this entire field without harming runtime
        * functionality of the descriptors -- the information is needed only by
        * development tools.
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.SourceCodeInfo getSourceCodeInfo() {
+       *
+       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.SourceCodeInfo getSourceCodeInfo() {
         if (sourceCodeInfoBuilder_ == null) {
-          return sourceCodeInfo_;
+          return sourceCodeInfo_ == null ? com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance() : sourceCodeInfo_;
         } else {
           return sourceCodeInfoBuilder_.getMessage();
@@ -4184,12 +4371,12 @@
       }
       /**
-       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-       *
        * <pre>
        * This field contains optional information about the original source code.
-       * You may safely remove this entire field whithout harming runtime
+       * You may safely remove this entire field without harming runtime
        * functionality of the descriptors -- the information is needed only by
        * development tools.
        * </pre>
+       *
+       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
        */
       public Builder setSourceCodeInfo(com.google.protobuf.DescriptorProtos.SourceCodeInfo value) {
@@ -4207,12 +4394,12 @@
       }
       /**
-       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-       *
        * <pre>
        * This field contains optional information about the original source code.
-       * You may safely remove this entire field whithout harming runtime
+       * You may safely remove this entire field without harming runtime
        * functionality of the descriptors -- the information is needed only by
        * development tools.
        * </pre>
+       *
+       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
        */
       public Builder setSourceCodeInfo(
@@ -4228,16 +4415,17 @@
       }
       /**
-       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-       *
        * <pre>
        * This field contains optional information about the original source code.
-       * You may safely remove this entire field whithout harming runtime
+       * You may safely remove this entire field without harming runtime
        * functionality of the descriptors -- the information is needed only by
        * development tools.
        * </pre>
+       *
+       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
        */
       public Builder mergeSourceCodeInfo(com.google.protobuf.DescriptorProtos.SourceCodeInfo value) {
         if (sourceCodeInfoBuilder_ == null) {
           if (((bitField0_ & 0x00000400) == 0x00000400) &&
+              sourceCodeInfo_ != null &&
               sourceCodeInfo_ != com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance()) {
             sourceCodeInfo_ =
@@ -4254,16 +4442,16 @@
       }
       /**
-       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-       *
        * <pre>
        * This field contains optional information about the original source code.
-       * You may safely remove this entire field whithout harming runtime
+       * You may safely remove this entire field without harming runtime
        * functionality of the descriptors -- the information is needed only by
        * development tools.
        * </pre>
+       *
+       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
        */
       public Builder clearSourceCodeInfo() {
         if (sourceCodeInfoBuilder_ == null) {
-          sourceCodeInfo_ = com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance();
+          sourceCodeInfo_ = null;
           onChanged();
         } else {
@@ -4274,12 +4462,12 @@
       }
       /**
-       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-       *
        * <pre>
        * This field contains optional information about the original source code.
-       * You may safely remove this entire field whithout harming runtime
+       * You may safely remove this entire field without harming runtime
        * functionality of the descriptors -- the information is needed only by
        * development tools.
        * </pre>
+       *
+       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
        */
       public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder getSourceCodeInfoBuilder() {
@@ -4289,36 +4477,37 @@
       }
       /**
-       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-       *
        * <pre>
        * This field contains optional information about the original source code.
-       * You may safely remove this entire field whithout harming runtime
+       * You may safely remove this entire field without harming runtime
        * functionality of the descriptors -- the information is needed only by
        * development tools.
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder getSourceCodeInfoOrBuilder() {
+       *
+       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder getSourceCodeInfoOrBuilder() {
         if (sourceCodeInfoBuilder_ != null) {
           return sourceCodeInfoBuilder_.getMessageOrBuilder();
         } else {
-          return sourceCodeInfo_;
-        }
-      }
-      /**
-       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
-       *
+          return sourceCodeInfo_ == null ?
+              com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance() : sourceCodeInfo_;
+        }
+      }
+      /**
        * <pre>
        * This field contains optional information about the original source code.
-       * You may safely remove this entire field whithout harming runtime
+       * You may safely remove this entire field without harming runtime
        * functionality of the descriptors -- the information is needed only by
        * development tools.
        * </pre>
-       */
-      private com.google.protobuf.SingleFieldBuilder<
-          com.google.protobuf.DescriptorProtos.SourceCodeInfo, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder>
+       *
+       * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.SourceCodeInfo, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder> 
           getSourceCodeInfoFieldBuilder() {
         if (sourceCodeInfoBuilder_ == null) {
-          sourceCodeInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<>(
+          sourceCodeInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.SourceCodeInfo, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder>(
                   getSourceCodeInfo(),
                   getParentForChildren(),
@@ -4329,13 +4518,156 @@
       }
 
+      private java.lang.Object syntax_ = "";
+      /**
+       * <pre>
+       * The syntax of the proto file.
+       * The supported values are "proto2" and "proto3".
+       * </pre>
+       *
+       * <code>optional string syntax = 12;</code>
+       */
+      public boolean hasSyntax() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <pre>
+       * The syntax of the proto file.
+       * The supported values are "proto2" and "proto3".
+       * </pre>
+       *
+       * <code>optional string syntax = 12;</code>
+       */
+      public java.lang.String getSyntax() {
+        java.lang.Object ref = syntax_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            syntax_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       * The syntax of the proto file.
+       * The supported values are "proto2" and "proto3".
+       * </pre>
+       *
+       * <code>optional string syntax = 12;</code>
+       */
+      public com.google.protobuf.ByteString
+          getSyntaxBytes() {
+        java.lang.Object ref = syntax_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          syntax_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       * The syntax of the proto file.
+       * The supported values are "proto2" and "proto3".
+       * </pre>
+       *
+       * <code>optional string syntax = 12;</code>
+       */
+      public Builder setSyntax(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000800;
+        syntax_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * The syntax of the proto file.
+       * The supported values are "proto2" and "proto3".
+       * </pre>
+       *
+       * <code>optional string syntax = 12;</code>
+       */
+      public Builder clearSyntax() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        syntax_ = getDefaultInstance().getSyntax();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * The syntax of the proto file.
+       * The supported values are "proto2" and "proto3".
+       * </pre>
+       *
+       * <code>optional string syntax = 12;</code>
+       */
+      public Builder setSyntaxBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000800;
+        syntax_ = value;
+        onChanged();
+        return this;
+      }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
       // @@protoc_insertion_point(builder_scope:google.protobuf.FileDescriptorProto)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorProto)
+    private static final com.google.protobuf.DescriptorProtos.FileDescriptorProto DEFAULT_INSTANCE;
     static {
-      defaultInstance = new FileDescriptorProto(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorProto)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.FileDescriptorProto();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<FileDescriptorProto>
+        PARSER = new com.google.protobuf.AbstractParser<FileDescriptorProto>() {
+      public FileDescriptorProto parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new FileDescriptorProto(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<FileDescriptorProto> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<FileDescriptorProto> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.FileDescriptorProto getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
@@ -4361,5 +4693,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
      */
-    java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>
+    java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> 
         getFieldList();
     /**
@@ -4374,5 +4706,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
      */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
         getFieldOrBuilderList();
     /**
@@ -4385,5 +4717,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
      */
-    java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>
+    java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> 
         getExtensionList();
     /**
@@ -4398,5 +4730,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
      */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
         getExtensionOrBuilderList();
     /**
@@ -4409,5 +4741,5 @@
      * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
      */
-    java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto>
+    java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> 
         getNestedTypeList();
     /**
@@ -4422,5 +4754,5 @@
      * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
      */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
         getNestedTypeOrBuilderList();
     /**
@@ -4433,5 +4765,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
      */
-    java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>
+    java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> 
         getEnumTypeList();
     /**
@@ -4446,5 +4778,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
      */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
         getEnumTypeOrBuilderList();
     /**
@@ -4457,5 +4789,5 @@
      * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
      */
-    java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange>
+    java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> 
         getExtensionRangeList();
     /**
@@ -4470,5 +4802,5 @@
      * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
      */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder>
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> 
         getExtensionRangeOrBuilderList();
     /**
@@ -4481,5 +4813,5 @@
      * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
      */
-    java.util.List<com.google.protobuf.DescriptorProtos.OneofDescriptorProto>
+    java.util.List<com.google.protobuf.DescriptorProtos.OneofDescriptorProto> 
         getOneofDeclList();
     /**
@@ -4494,5 +4826,5 @@
      * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
      */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder>
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> 
         getOneofDeclOrBuilderList();
     /**
@@ -4514,37 +4846,99 @@
      */
     com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder getOptionsOrBuilder();
+
+    /**
+     * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange> 
+        getReservedRangeList();
+    /**
+     * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+     */
+    com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange getReservedRange(int index);
+    /**
+     * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+     */
+    int getReservedRangeCount();
+    /**
+     * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder> 
+        getReservedRangeOrBuilderList();
+    /**
+     * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+     */
+    com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder getReservedRangeOrBuilder(
+        int index);
+
+    /**
+     * <pre>
+     * Reserved field names, which may not be used by fields in the same message.
+     * A given name may only be reserved once.
+     * </pre>
+     *
+     * <code>repeated string reserved_name = 10;</code>
+     */
+    java.util.List<java.lang.String>
+        getReservedNameList();
+    /**
+     * <pre>
+     * Reserved field names, which may not be used by fields in the same message.
+     * A given name may only be reserved once.
+     * </pre>
+     *
+     * <code>repeated string reserved_name = 10;</code>
+     */
+    int getReservedNameCount();
+    /**
+     * <pre>
+     * Reserved field names, which may not be used by fields in the same message.
+     * A given name may only be reserved once.
+     * </pre>
+     *
+     * <code>repeated string reserved_name = 10;</code>
+     */
+    java.lang.String getReservedName(int index);
+    /**
+     * <pre>
+     * Reserved field names, which may not be used by fields in the same message.
+     * A given name may only be reserved once.
+     * </pre>
+     *
+     * <code>repeated string reserved_name = 10;</code>
+     */
+    com.google.protobuf.ByteString
+        getReservedNameBytes(int index);
   }
   /**
-   * Protobuf type {@code google.protobuf.DescriptorProto}
-   *
    * <pre>
    * Describes a message type.
    * </pre>
+   *
+   * Protobuf type {@code google.protobuf.DescriptorProto}
    */
-  public static final class DescriptorProto extends
-      com.google.protobuf.GeneratedMessage implements
+  public  static final class DescriptorProto extends
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:google.protobuf.DescriptorProto)
       DescriptorProtoOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use DescriptorProto.newBuilder() to construct.
-    private DescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+    private DescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private DescriptorProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final DescriptorProto defaultInstance;
-    public static DescriptorProto getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public DescriptorProto getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private DescriptorProto() {
+      name_ = "";
+      field_ = java.util.Collections.emptyList();
+      extension_ = java.util.Collections.emptyList();
+      nestedType_ = java.util.Collections.emptyList();
+      enumType_ = java.util.Collections.emptyList();
+      extensionRange_ = java.util.Collections.emptyList();
+      oneofDecl_ = java.util.Collections.emptyList();
+      reservedRange_ = java.util.Collections.emptyList();
+      reservedName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -4553,5 +4947,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -4566,6 +4960,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -4580,40 +4974,45 @@
             case 18: {
               if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                field_ = new java.util.ArrayList<>();
+                field_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
                 mutable_bitField0_ |= 0x00000002;
               }
-              field_.add(input.readMessage(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.PARSER, extensionRegistry));
+              field_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.PARSER, extensionRegistry));
               break;
             }
             case 26: {
               if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
-                nestedType_ = new java.util.ArrayList<>();
+                nestedType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>();
                 mutable_bitField0_ |= 0x00000008;
               }
-              nestedType_.add(input.readMessage(com.google.protobuf.DescriptorProtos.DescriptorProto.PARSER, extensionRegistry));
+              nestedType_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.DescriptorProto.PARSER, extensionRegistry));
               break;
             }
             case 34: {
               if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-                enumType_ = new java.util.ArrayList<>();
+                enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>();
                 mutable_bitField0_ |= 0x00000010;
               }
-              enumType_.add(input.readMessage(com.google.protobuf.DescriptorProtos.EnumDescriptorProto.PARSER, extensionRegistry));
+              enumType_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.EnumDescriptorProto.PARSER, extensionRegistry));
               break;
             }
             case 42: {
               if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
-                extensionRange_ = new java.util.ArrayList<>();
+                extensionRange_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange>();
                 mutable_bitField0_ |= 0x00000020;
               }
-              extensionRange_.add(input.readMessage(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.PARSER, extensionRegistry));
+              extensionRange_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.PARSER, extensionRegistry));
               break;
             }
             case 50: {
               if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-                extension_ = new java.util.ArrayList<>();
+                extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
                 mutable_bitField0_ |= 0x00000004;
               }
-              extension_.add(input.readMessage(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.PARSER, extensionRegistry));
+              extension_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.PARSER, extensionRegistry));
               break;
             }
@@ -4633,8 +5032,27 @@
             case 66: {
               if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
-                oneofDecl_ = new java.util.ArrayList<>();
+                oneofDecl_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.OneofDescriptorProto>();
                 mutable_bitField0_ |= 0x00000040;
               }
-              oneofDecl_.add(input.readMessage(com.google.protobuf.DescriptorProtos.OneofDescriptorProto.PARSER, extensionRegistry));
+              oneofDecl_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.OneofDescriptorProto.PARSER, extensionRegistry));
+              break;
+            }
+            case 74: {
+              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
+                reservedRange_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange>();
+                mutable_bitField0_ |= 0x00000100;
+              }
+              reservedRange_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.PARSER, extensionRegistry));
+              break;
+            }
+            case 82: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
+                reservedName_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00000200;
+              }
+              reservedName_.add(bs);
               break;
             }
@@ -4645,5 +5063,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
@@ -4665,4 +5083,10 @@
           oneofDecl_ = java.util.Collections.unmodifiableList(oneofDecl_);
         }
+        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
+          reservedRange_ = java.util.Collections.unmodifiableList(reservedRange_);
+        }
+        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
+          reservedName_ = reservedName_.getUnmodifiableView();
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -4674,6 +5098,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_fieldAccessorTable
@@ -4682,20 +5105,4 @@
     }
 
-    public static com.google.protobuf.Parser<DescriptorProto> PARSER =
-        new com.google.protobuf.AbstractParser<DescriptorProto>() {
-      @Override
-	public DescriptorProto parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DescriptorProto(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<DescriptorProto> getParserForType() {
-      return PARSER;
-    }
-
     public interface ExtensionRangeOrBuilder extends
         // @@protoc_insertion_point(interface_extends:google.protobuf.DescriptorProto.ExtensionRange)
@@ -4719,33 +5126,38 @@
        */
       int getEnd();
+
+      /**
+       * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+       */
+      boolean hasOptions();
+      /**
+       * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+       */
+      com.google.protobuf.DescriptorProtos.ExtensionRangeOptions getOptions();
+      /**
+       * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+       */
+      com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder getOptionsOrBuilder();
     }
     /**
      * Protobuf type {@code google.protobuf.DescriptorProto.ExtensionRange}
      */
-    public static final class ExtensionRange extends
-        com.google.protobuf.GeneratedMessage implements
+    public  static final class ExtensionRange extends
+        com.google.protobuf.GeneratedMessageV3 implements
         // @@protoc_insertion_point(message_implements:google.protobuf.DescriptorProto.ExtensionRange)
         ExtensionRangeOrBuilder {
+    private static final long serialVersionUID = 0L;
       // Use ExtensionRange.newBuilder() to construct.
-      private ExtensionRange(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      private ExtensionRange(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
         super(builder);
-        this.unknownFields = builder.getUnknownFields();
-      }
-      private ExtensionRange(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-      private static final ExtensionRange defaultInstance;
-      public static ExtensionRange getDefaultInstance() {
-        return defaultInstance;
-      }
-
-      @Override
-	public ExtensionRange getDefaultInstanceForType() {
-        return defaultInstance;
-      }
-
-      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      }
+      private ExtensionRange() {
+        start_ = 0;
+        end_ = 0;
+      }
+
       @java.lang.Override
       public final com.google.protobuf.UnknownFieldSet
-          getUnknownFields() {
+      getUnknownFields() {
         return this.unknownFields;
       }
@@ -4754,5 +5166,5 @@
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        initFields();
+        this();
         int mutable_bitField0_ = 0;
         com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -4767,6 +5179,789 @@
                 break;
               default: {
-                if (!parseUnknownField(input, unknownFields,
-                                       extensionRegistry, tag)) {
+                if (!parseUnknownField(
+                    input, unknownFields, extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                start_ = input.readInt32();
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                end_ = input.readInt32();
+                break;
+              }
+              case 26: {
+                com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = options_.toBuilder();
+                }
+                options_ = input.readMessage(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(options_);
+                  options_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.class, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder.class);
+      }
+
+      private int bitField0_;
+      public static final int START_FIELD_NUMBER = 1;
+      private int start_;
+      /**
+       * <code>optional int32 start = 1;</code>
+       */
+      public boolean hasStart() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int32 start = 1;</code>
+       */
+      public int getStart() {
+        return start_;
+      }
+
+      public static final int END_FIELD_NUMBER = 2;
+      private int end_;
+      /**
+       * <code>optional int32 end = 2;</code>
+       */
+      public boolean hasEnd() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int32 end = 2;</code>
+       */
+      public int getEnd() {
+        return end_;
+      }
+
+      public static final int OPTIONS_FIELD_NUMBER = 3;
+      private com.google.protobuf.DescriptorProtos.ExtensionRangeOptions options_;
+      /**
+       * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+       */
+      public boolean hasOptions() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions getOptions() {
+        return options_ == null ? com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance() : options_;
+      }
+      /**
+       * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder getOptionsOrBuilder() {
+        return options_ == null ? com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance() : options_;
+      }
+
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized == 1) return true;
+        if (isInitialized == 0) return false;
+
+        if (hasOptions()) {
+          if (!getOptions().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeInt32(1, start_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeInt32(2, end_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, getOptions());
+        }
+        unknownFields.writeTo(output);
+      }
+
+      public int getSerializedSize() {
+        int size = memoizedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(1, start_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(2, end_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, getOptions());
+        }
+        size += unknownFields.getSerializedSize();
+        memoizedSize = size;
+        return size;
+      }
+
+      @java.lang.Override
+      public boolean equals(final java.lang.Object obj) {
+        if (obj == this) {
+         return true;
+        }
+        if (!(obj instanceof com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange)) {
+          return super.equals(obj);
+        }
+        com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange other = (com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange) obj;
+
+        boolean result = true;
+        result = result && (hasStart() == other.hasStart());
+        if (hasStart()) {
+          result = result && (getStart()
+              == other.getStart());
+        }
+        result = result && (hasEnd() == other.hasEnd());
+        if (hasEnd()) {
+          result = result && (getEnd()
+              == other.getEnd());
+        }
+        result = result && (hasOptions() == other.hasOptions());
+        if (hasOptions()) {
+          result = result && getOptions()
+              .equals(other.getOptions());
+        }
+        result = result && unknownFields.equals(other.unknownFields);
+        return result;
+      }
+
+      @java.lang.Override
+      public int hashCode() {
+        if (memoizedHashCode != 0) {
+          return memoizedHashCode;
+        }
+        int hash = 41;
+        hash = (19 * hash) + getDescriptor().hashCode();
+        if (hasStart()) {
+          hash = (37 * hash) + START_FIELD_NUMBER;
+          hash = (53 * hash) + getStart();
+        }
+        if (hasEnd()) {
+          hash = (37 * hash) + END_FIELD_NUMBER;
+          hash = (53 * hash) + getEnd();
+        }
+        if (hasOptions()) {
+          hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
+          hash = (53 * hash) + getOptions().hashCode();
+        }
+        hash = (29 * hash) + unknownFields.hashCode();
+        memoizedHashCode = hash;
+        return hash;
+      }
+
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+          java.nio.ByteBuffer data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+          java.nio.ByteBuffer data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input, extensionRegistry);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseDelimitedWithIOException(PARSER, input);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder() {
+        return DEFAULT_INSTANCE.toBuilder();
+      }
+      public static Builder newBuilder(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange prototype) {
+        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() {
+        return this == DEFAULT_INSTANCE
+            ? new Builder() : new Builder().mergeFrom(this);
+      }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code google.protobuf.DescriptorProto.ExtensionRange}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+          // @@protoc_insertion_point(builder_implements:google.protobuf.DescriptorProto.ExtensionRange)
+          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.class, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder.class);
+        }
+
+        // Construct using com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessageV3
+                  .alwaysUseFieldBuilders) {
+            getOptionsFieldBuilder();
+          }
+        }
+        public Builder clear() {
+          super.clear();
+          start_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          end_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (optionsBuilder_ == null) {
+            options_ = null;
+          } else {
+            optionsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor;
+        }
+
+        public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getDefaultInstanceForType() {
+          return com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDefaultInstance();
+        }
+
+        public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange build() {
+          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange buildPartial() {
+          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange result = new com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.start_ = start_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.end_ = end_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (optionsBuilder_ == null) {
+            result.options_ = options_;
+          } else {
+            result.options_ = optionsBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder clone() {
+          return (Builder) super.clone();
+        }
+        public Builder setField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            java.lang.Object value) {
+          return (Builder) super.setField(field, value);
+        }
+        public Builder clearField(
+            com.google.protobuf.Descriptors.FieldDescriptor field) {
+          return (Builder) super.clearField(field);
+        }
+        public Builder clearOneof(
+            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+          return (Builder) super.clearOneof(oneof);
+        }
+        public Builder setRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            int index, java.lang.Object value) {
+          return (Builder) super.setRepeatedField(field, index, value);
+        }
+        public Builder addRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            java.lang.Object value) {
+          return (Builder) super.addRepeatedField(field, value);
+        }
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange) {
+            return mergeFrom((com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange other) {
+          if (other == com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDefaultInstance()) return this;
+          if (other.hasStart()) {
+            setStart(other.getStart());
+          }
+          if (other.hasEnd()) {
+            setEnd(other.getEnd());
+          }
+          if (other.hasOptions()) {
+            mergeOptions(other.getOptions());
+          }
+          this.mergeUnknownFields(other.unknownFields);
+          onChanged();
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (hasOptions()) {
+            if (!getOptions().isInitialized()) {
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange) e.getUnfinishedMessage();
+            throw e.unwrapIOException();
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        private int start_ ;
+        /**
+         * <code>optional int32 start = 1;</code>
+         */
+        public boolean hasStart() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional int32 start = 1;</code>
+         */
+        public int getStart() {
+          return start_;
+        }
+        /**
+         * <code>optional int32 start = 1;</code>
+         */
+        public Builder setStart(int value) {
+          bitField0_ |= 0x00000001;
+          start_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional int32 start = 1;</code>
+         */
+        public Builder clearStart() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          start_ = 0;
+          onChanged();
+          return this;
+        }
+
+        private int end_ ;
+        /**
+         * <code>optional int32 end = 2;</code>
+         */
+        public boolean hasEnd() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional int32 end = 2;</code>
+         */
+        public int getEnd() {
+          return end_;
+        }
+        /**
+         * <code>optional int32 end = 2;</code>
+         */
+        public Builder setEnd(int value) {
+          bitField0_ |= 0x00000002;
+          end_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional int32 end = 2;</code>
+         */
+        public Builder clearEnd() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          end_ = 0;
+          onChanged();
+          return this;
+        }
+
+        private com.google.protobuf.DescriptorProtos.ExtensionRangeOptions options_ = null;
+        private com.google.protobuf.SingleFieldBuilderV3<
+            com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder, com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder> optionsBuilder_;
+        /**
+         * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+         */
+        public boolean hasOptions() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+         */
+        public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions getOptions() {
+          if (optionsBuilder_ == null) {
+            return options_ == null ? com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance() : options_;
+          } else {
+            return optionsBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+         */
+        public Builder setOptions(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions value) {
+          if (optionsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            options_ = value;
+            onChanged();
+          } else {
+            optionsBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+         */
+        public Builder setOptions(
+            com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder builderForValue) {
+          if (optionsBuilder_ == null) {
+            options_ = builderForValue.build();
+            onChanged();
+          } else {
+            optionsBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+         */
+        public Builder mergeOptions(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions value) {
+          if (optionsBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                options_ != null &&
+                options_ != com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance()) {
+              options_ =
+                com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.newBuilder(options_).mergeFrom(value).buildPartial();
+            } else {
+              options_ = value;
+            }
+            onChanged();
+          } else {
+            optionsBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+         */
+        public Builder clearOptions() {
+          if (optionsBuilder_ == null) {
+            options_ = null;
+            onChanged();
+          } else {
+            optionsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+         */
+        public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder getOptionsBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getOptionsFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+         */
+        public com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder getOptionsOrBuilder() {
+          if (optionsBuilder_ != null) {
+            return optionsBuilder_.getMessageOrBuilder();
+          } else {
+            return options_ == null ?
+                com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance() : options_;
+          }
+        }
+        /**
+         * <code>optional .google.protobuf.ExtensionRangeOptions options = 3;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilderV3<
+            com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder, com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder> 
+            getOptionsFieldBuilder() {
+          if (optionsBuilder_ == null) {
+            optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+                com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder, com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder>(
+                    getOptions(),
+                    getParentForChildren(),
+                    isClean());
+            options_ = null;
+          }
+          return optionsBuilder_;
+        }
+        public final Builder setUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.setUnknownFields(unknownFields);
+        }
+
+        public final Builder mergeUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.mergeUnknownFields(unknownFields);
+        }
+
+
+        // @@protoc_insertion_point(builder_scope:google.protobuf.DescriptorProto.ExtensionRange)
+      }
+
+      // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto.ExtensionRange)
+      private static final com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange DEFAULT_INSTANCE;
+      static {
+        DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange();
+      }
+
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getDefaultInstance() {
+        return DEFAULT_INSTANCE;
+      }
+
+      @java.lang.Deprecated public static final com.google.protobuf.Parser<ExtensionRange>
+          PARSER = new com.google.protobuf.AbstractParser<ExtensionRange>() {
+        public ExtensionRange parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+            return new ExtensionRange(input, extensionRegistry);
+        }
+      };
+
+      public static com.google.protobuf.Parser<ExtensionRange> parser() {
+        return PARSER;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<ExtensionRange> getParserForType() {
+        return PARSER;
+      }
+
+      public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getDefaultInstanceForType() {
+        return DEFAULT_INSTANCE;
+      }
+
+    }
+
+    public interface ReservedRangeOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:google.protobuf.DescriptorProto.ReservedRange)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       * <pre>
+       * Inclusive.
+       * </pre>
+       *
+       * <code>optional int32 start = 1;</code>
+       */
+      boolean hasStart();
+      /**
+       * <pre>
+       * Inclusive.
+       * </pre>
+       *
+       * <code>optional int32 start = 1;</code>
+       */
+      int getStart();
+
+      /**
+       * <pre>
+       * Exclusive.
+       * </pre>
+       *
+       * <code>optional int32 end = 2;</code>
+       */
+      boolean hasEnd();
+      /**
+       * <pre>
+       * Exclusive.
+       * </pre>
+       *
+       * <code>optional int32 end = 2;</code>
+       */
+      int getEnd();
+    }
+    /**
+     * <pre>
+     * Range of reserved tag numbers. Reserved tag numbers may not be used by
+     * fields or extension ranges in the same message. Reserved ranges may
+     * not overlap.
+     * </pre>
+     *
+     * Protobuf type {@code google.protobuf.DescriptorProto.ReservedRange}
+     */
+    public  static final class ReservedRange extends
+        com.google.protobuf.GeneratedMessageV3 implements
+        // @@protoc_insertion_point(message_implements:google.protobuf.DescriptorProto.ReservedRange)
+        ReservedRangeOrBuilder {
+    private static final long serialVersionUID = 0L;
+      // Use ReservedRange.newBuilder() to construct.
+      private ReservedRange(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+        super(builder);
+      }
+      private ReservedRange() {
+        start_ = 0;
+        end_ = 0;
+      }
+
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+      getUnknownFields() {
+        return this.unknownFields;
+      }
+      private ReservedRange(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        this();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(
+                    input, unknownFields, extensionRegistry, tag)) {
                   done = true;
                 }
@@ -4789,5 +5984,5 @@
         } catch (java.io.IOException e) {
           throw new com.google.protobuf.InvalidProtocolBufferException(
-              e.getMessage()).setUnfinishedMessage(this);
+              e).setUnfinishedMessage(this);
         } finally {
           this.unknownFields = unknownFields.build();
@@ -4797,29 +5992,12 @@
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor;
-      }
-
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ReservedRange_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ReservedRange_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.class, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder.class);
-      }
-
-      public static com.google.protobuf.Parser<ExtensionRange> PARSER =
-          new com.google.protobuf.AbstractParser<ExtensionRange>() {
-        @Override
-		public ExtensionRange parsePartialFrom(
-            com.google.protobuf.CodedInputStream input,
-            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-            throws com.google.protobuf.InvalidProtocolBufferException {
-          return new ExtensionRange(input, extensionRegistry);
-        }
-      };
-
-      @java.lang.Override
-      public com.google.protobuf.Parser<ExtensionRange> getParserForType() {
-        return PARSER;
+                com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.class, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder.class);
       }
 
@@ -4828,15 +6006,21 @@
       private int start_;
       /**
+       * <pre>
+       * Inclusive.
+       * </pre>
+       *
        * <code>optional int32 start = 1;</code>
        */
-      @Override
-	public boolean hasStart() {
+      public boolean hasStart() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
       /**
+       * <pre>
+       * Inclusive.
+       * </pre>
+       *
        * <code>optional int32 start = 1;</code>
        */
-      @Override
-	public int getStart() {
+      public int getStart() {
         return start_;
       }
@@ -4845,25 +6029,26 @@
       private int end_;
       /**
+       * <pre>
+       * Exclusive.
+       * </pre>
+       *
        * <code>optional int32 end = 2;</code>
        */
-      @Override
-	public boolean hasEnd() {
+      public boolean hasEnd() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
       /**
+       * <pre>
+       * Exclusive.
+       * </pre>
+       *
        * <code>optional int32 end = 2;</code>
        */
-      @Override
-	public int getEnd() {
+      public int getEnd() {
         return end_;
       }
 
-      private void initFields() {
-        start_ = 0;
-        end_ = 0;
-      }
       private byte memoizedIsInitialized = -1;
-      @Override
-	public final boolean isInitialized() {
+      public final boolean isInitialized() {
         byte isInitialized = memoizedIsInitialized;
         if (isInitialized == 1) return true;
@@ -4874,8 +6059,6 @@
       }
 
-      @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
                           throws java.io.IOException {
-        getSerializedSize();
         if (((bitField0_ & 0x00000001) == 0x00000001)) {
           output.writeInt32(1, start_);
@@ -4884,11 +6067,9 @@
           output.writeInt32(2, end_);
         }
-        getUnknownFields().writeTo(output);
-      }
-
-      private int memoizedSerializedSize = -1;
-      @Override
-	public int getSerializedSize() {
-        int size = memoizedSerializedSize;
+        unknownFields.writeTo(output);
+      }
+
+      public int getSerializedSize() {
+        int size = memoizedSize;
         if (size != -1) return size;
 
@@ -4902,22 +6083,71 @@
             .computeInt32Size(2, end_);
         }
-        size += getUnknownFields().getSerializedSize();
-        memoizedSerializedSize = size;
+        size += unknownFields.getSerializedSize();
+        memoizedSize = 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 com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+      public boolean equals(final java.lang.Object obj) {
+        if (obj == this) {
+         return true;
+        }
+        if (!(obj instanceof com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange)) {
+          return super.equals(obj);
+        }
+        com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange other = (com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange) obj;
+
+        boolean result = true;
+        result = result && (hasStart() == other.hasStart());
+        if (hasStart()) {
+          result = result && (getStart()
+              == other.getStart());
+        }
+        result = result && (hasEnd() == other.hasEnd());
+        if (hasEnd()) {
+          result = result && (getEnd()
+              == other.getEnd());
+        }
+        result = result && unknownFields.equals(other.unknownFields);
+        return result;
+      }
+
+      @java.lang.Override
+      public int hashCode() {
+        if (memoizedHashCode != 0) {
+          return memoizedHashCode;
+        }
+        int hash = 41;
+        hash = (19 * hash) + getDescriptor().hashCode();
+        if (hasStart()) {
+          hash = (37 * hash) + START_FIELD_NUMBER;
+          hash = (53 * hash) + getStart();
+        }
+        if (hasEnd()) {
+          hash = (37 * hash) + END_FIELD_NUMBER;
+          hash = (53 * hash) + getEnd();
+        }
+        hash = (29 * hash) + unknownFields.hashCode();
+        memoizedHashCode = hash;
+        return hash;
+      }
+
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
+          java.nio.ByteBuffer data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
+          java.nio.ByteBuffer data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
           com.google.protobuf.ByteString data)
           throws com.google.protobuf.InvalidProtocolBufferException {
         return PARSER.parseFrom(data);
       }
-      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
           com.google.protobuf.ByteString data,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -4925,9 +6155,9 @@
         return PARSER.parseFrom(data, extensionRegistry);
       }
-      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(byte[] data)
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(byte[] data)
           throws com.google.protobuf.InvalidProtocolBufferException {
         return PARSER.parseFrom(data);
       }
-      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
           byte[] data,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -4935,72 +6165,86 @@
         return PARSER.parseFrom(data, extensionRegistry);
       }
-      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(java.io.InputStream input)
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return PARSER.parseFrom(input);
-      }
-      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
           java.io.InputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return PARSER.parseFrom(input, extensionRegistry);
-      }
-      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseDelimitedFrom(java.io.InputStream input)
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input, extensionRegistry);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseDelimitedFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return PARSER.parseDelimitedFrom(input);
-      }
-      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseDelimitedFrom(
+        return com.google.protobuf.GeneratedMessageV3
+            .parseDelimitedWithIOException(PARSER, input);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseDelimitedFrom(
           java.io.InputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return PARSER.parseDelimitedFrom(input, extensionRegistry);
-      }
-      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+        return com.google.protobuf.GeneratedMessageV3
+            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
           com.google.protobuf.CodedInputStream input)
           throws java.io.IOException {
-        return PARSER.parseFrom(input);
-      }
-      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input);
+      }
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return PARSER.parseFrom(input, extensionRegistry);
-      }
-
-      public static Builder newBuilder() { return Builder.create(); }
-      @Override
-	public Builder newBuilderForType() { return newBuilder(); }
-      public static Builder newBuilder(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange prototype) {
-        return newBuilder().mergeFrom(prototype);
-      }
-      @Override
-	public Builder toBuilder() { return newBuilder(this); }
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder() {
+        return DEFAULT_INSTANCE.toBuilder();
+      }
+      public static Builder newBuilder(com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange prototype) {
+        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() {
+        return this == DEFAULT_INSTANCE
+            ? new Builder() : new Builder().mergeFrom(this);
+      }
 
       @java.lang.Override
       protected Builder newBuilderForType(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         Builder builder = new Builder(parent);
         return builder;
       }
       /**
-       * Protobuf type {@code google.protobuf.DescriptorProto.ExtensionRange}
+       * <pre>
+       * Range of reserved tag numbers. Reserved tag numbers may not be used by
+       * fields or extension ranges in the same message. Reserved ranges may
+       * not overlap.
+       * </pre>
+       *
+       * Protobuf type {@code google.protobuf.DescriptorProto.ReservedRange}
        */
       public static final class Builder extends
-          com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-          // @@protoc_insertion_point(builder_implements:google.protobuf.DescriptorProto.ExtensionRange)
-          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder {
+          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+          // @@protoc_insertion_point(builder_implements:google.protobuf.DescriptorProto.ReservedRange)
+          com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder {
         public static final com.google.protobuf.Descriptors.Descriptor
             getDescriptor() {
-          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor;
-        }
-
-        @Override
-		protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ReservedRange_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
             internalGetFieldAccessorTable() {
-          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable
+          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ReservedRange_fieldAccessorTable
               .ensureFieldAccessorsInitialized(
-                  com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.class, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder.class);
-        }
-
-        // Construct using com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.newBuilder()
+                  com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.class, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder.class);
+        }
+
+        // Construct using com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.newBuilder()
         private Builder() {
           maybeForceBuilderInitialization();
@@ -5008,18 +6252,14 @@
 
         private Builder(
-            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
           super(parent);
           maybeForceBuilderInitialization();
         }
         private void maybeForceBuilderInitialization() {
-          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          if (com.google.protobuf.GeneratedMessageV3
+                  .alwaysUseFieldBuilders) {
           }
         }
-        private static Builder create() {
-          return new Builder();
-        }
-
-        @Override
-		public Builder clear() {
+        public Builder clear() {
           super.clear();
           start_ = 0;
@@ -5030,23 +6270,15 @@
         }
 
-        @Override
-		public Builder clone() {
-          return create().mergeFrom(buildPartial());
-        }
-
-        @Override
-		public com.google.protobuf.Descriptors.Descriptor
+        public com.google.protobuf.Descriptors.Descriptor
             getDescriptorForType() {
-          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor;
-        }
-
-        @Override
-		public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getDefaultInstanceForType() {
-          return com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDefaultInstance();
-        }
-
-        @Override
-		public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange build() {
-          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange result = buildPartial();
+          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ReservedRange_descriptor;
+        }
+
+        public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange getDefaultInstanceForType() {
+          return com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.getDefaultInstance();
+        }
+
+        public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange build() {
+          com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange result = buildPartial();
           if (!result.isInitialized()) {
             throw newUninitializedMessageException(result);
@@ -5055,7 +6287,6 @@
         }
 
-        @Override
-		public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange buildPartial() {
-          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange result = new com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange(this);
+        public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange buildPartial() {
+          com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange result = new com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange(this);
           int from_bitField0_ = bitField0_;
           int to_bitField0_ = 0;
@@ -5073,8 +6304,33 @@
         }
 
-        @Override
-		public Builder mergeFrom(com.google.protobuf.Message other) {
-          if (other instanceof com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange) {
-            return mergeFrom((com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange)other);
+        public Builder clone() {
+          return (Builder) super.clone();
+        }
+        public Builder setField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            java.lang.Object value) {
+          return (Builder) super.setField(field, value);
+        }
+        public Builder clearField(
+            com.google.protobuf.Descriptors.FieldDescriptor field) {
+          return (Builder) super.clearField(field);
+        }
+        public Builder clearOneof(
+            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+          return (Builder) super.clearOneof(oneof);
+        }
+        public Builder setRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            int index, java.lang.Object value) {
+          return (Builder) super.setRepeatedField(field, index, value);
+        }
+        public Builder addRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            java.lang.Object value) {
+          return (Builder) super.addRepeatedField(field, value);
+        }
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange) {
+            return mergeFrom((com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange)other);
           } else {
             super.mergeFrom(other);
@@ -5083,6 +6339,6 @@
         }
 
-        public Builder mergeFrom(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange other) {
-          if (other == com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDefaultInstance()) return this;
+        public Builder mergeFrom(com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange other) {
+          if (other == com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.getDefaultInstance()) return this;
           if (other.hasStart()) {
             setStart(other.getStart());
@@ -5091,24 +6347,23 @@
             setEnd(other.getEnd());
           }
-          this.mergeUnknownFields(other.getUnknownFields());
+          this.mergeUnknownFields(other.unknownFields);
+          onChanged();
           return this;
         }
 
-        @Override
-		public final boolean isInitialized() {
+        public final boolean isInitialized() {
           return true;
         }
 
-        @Override
-		public Builder mergeFrom(
+        public Builder mergeFrom(
             com.google.protobuf.CodedInputStream input,
             com.google.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parsedMessage = null;
+          com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parsedMessage = null;
           try {
             parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
           } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-            parsedMessage = (com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange) e.getUnfinishedMessage();
-            throw e;
+            parsedMessage = (com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange) e.getUnfinishedMessage();
+            throw e.unwrapIOException();
           } finally {
             if (parsedMessage != null) {
@@ -5122,18 +6377,28 @@
         private int start_ ;
         /**
+         * <pre>
+         * Inclusive.
+         * </pre>
+         *
          * <code>optional int32 start = 1;</code>
          */
-        @Override
-		public boolean hasStart() {
+        public boolean hasStart() {
           return ((bitField0_ & 0x00000001) == 0x00000001);
         }
         /**
+         * <pre>
+         * Inclusive.
+         * </pre>
+         *
          * <code>optional int32 start = 1;</code>
          */
-        @Override
-		public int getStart() {
+        public int getStart() {
           return start_;
         }
         /**
+         * <pre>
+         * Inclusive.
+         * </pre>
+         *
          * <code>optional int32 start = 1;</code>
          */
@@ -5145,4 +6410,8 @@
         }
         /**
+         * <pre>
+         * Inclusive.
+         * </pre>
+         *
          * <code>optional int32 start = 1;</code>
          */
@@ -5156,18 +6425,28 @@
         private int end_ ;
         /**
+         * <pre>
+         * Exclusive.
+         * </pre>
+         *
          * <code>optional int32 end = 2;</code>
          */
-        @Override
-		public boolean hasEnd() {
+        public boolean hasEnd() {
           return ((bitField0_ & 0x00000002) == 0x00000002);
         }
         /**
+         * <pre>
+         * Exclusive.
+         * </pre>
+         *
          * <code>optional int32 end = 2;</code>
          */
-        @Override
-		public int getEnd() {
+        public int getEnd() {
           return end_;
         }
         /**
+         * <pre>
+         * Exclusive.
+         * </pre>
+         *
          * <code>optional int32 end = 2;</code>
          */
@@ -5179,4 +6458,8 @@
         }
         /**
+         * <pre>
+         * Exclusive.
+         * </pre>
+         *
          * <code>optional int32 end = 2;</code>
          */
@@ -5187,24 +6470,60 @@
           return this;
         }
-
-        // @@protoc_insertion_point(builder_scope:google.protobuf.DescriptorProto.ExtensionRange)
-      }
-
+        public final Builder setUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.setUnknownFields(unknownFields);
+        }
+
+        public final Builder mergeUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.mergeUnknownFields(unknownFields);
+        }
+
+
+        // @@protoc_insertion_point(builder_scope:google.protobuf.DescriptorProto.ReservedRange)
+      }
+
+      // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto.ReservedRange)
+      private static final com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange DEFAULT_INSTANCE;
       static {
-        defaultInstance = new ExtensionRange(true);
-        defaultInstance.initFields();
-      }
-
-      // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto.ExtensionRange)
+        DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange();
+      }
+
+      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange getDefaultInstance() {
+        return DEFAULT_INSTANCE;
+      }
+
+      @java.lang.Deprecated public static final com.google.protobuf.Parser<ReservedRange>
+          PARSER = new com.google.protobuf.AbstractParser<ReservedRange>() {
+        public ReservedRange parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+            return new ReservedRange(input, extensionRegistry);
+        }
+      };
+
+      public static com.google.protobuf.Parser<ReservedRange> parser() {
+        return PARSER;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<ReservedRange> getParserForType() {
+        return PARSER;
+      }
+
+      public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange getDefaultInstanceForType() {
+        return DEFAULT_INSTANCE;
+      }
+
     }
 
     private int bitField0_;
     public static final int NAME_FIELD_NUMBER = 1;
-    private java.lang.Object name_;
+    private volatile java.lang.Object name_;
     /**
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public boolean hasName() {
+    public boolean hasName() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -5212,11 +6531,10 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public java.lang.String getName() {
+    public java.lang.String getName() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -5230,10 +6548,9 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString
+    public com.google.protobuf.ByteString
         getNameBytes() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -5250,6 +6567,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getFieldList() {
+    public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getFieldList() {
       return field_;
     }
@@ -5257,6 +6573,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
      */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
         getFieldOrBuilderList() {
       return field_;
@@ -5265,6 +6580,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
      */
-    @Override
-	public int getFieldCount() {
+    public int getFieldCount() {
       return field_.size();
     }
@@ -5272,6 +6586,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getField(int index) {
+    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getField(int index) {
       return field_.get(index);
     }
@@ -5279,6 +6592,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getFieldOrBuilder(
+    public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getFieldOrBuilder(
         int index) {
       return field_.get(index);
@@ -5290,6 +6602,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() {
+    public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() {
       return extension_;
     }
@@ -5297,6 +6608,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
      */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
         getExtensionOrBuilderList() {
       return extension_;
@@ -5305,6 +6615,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
      */
-    @Override
-	public int getExtensionCount() {
+    public int getExtensionCount() {
       return extension_.size();
     }
@@ -5312,6 +6621,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
+    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
       return extension_.get(index);
     }
@@ -5319,6 +6627,5 @@
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
+    public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
         int index) {
       return extension_.get(index);
@@ -5330,6 +6637,5 @@
      * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getNestedTypeList() {
+    public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getNestedTypeList() {
       return nestedType_;
     }
@@ -5337,6 +6643,5 @@
      * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
      */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
         getNestedTypeOrBuilderList() {
       return nestedType_;
@@ -5345,6 +6650,5 @@
      * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
      */
-    @Override
-	public int getNestedTypeCount() {
+    public int getNestedTypeCount() {
       return nestedType_.size();
     }
@@ -5352,6 +6656,5 @@
      * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProto getNestedType(int index) {
+    public com.google.protobuf.DescriptorProtos.DescriptorProto getNestedType(int index) {
       return nestedType_.get(index);
     }
@@ -5359,6 +6662,5 @@
      * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getNestedTypeOrBuilder(
+    public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getNestedTypeOrBuilder(
         int index) {
       return nestedType_.get(index);
@@ -5370,6 +6672,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() {
+    public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() {
       return enumType_;
     }
@@ -5377,6 +6678,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
      */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
         getEnumTypeOrBuilderList() {
       return enumType_;
@@ -5385,6 +6685,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
      */
-    @Override
-	public int getEnumTypeCount() {
+    public int getEnumTypeCount() {
       return enumType_.size();
     }
@@ -5392,6 +6691,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
+    public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
       return enumType_.get(index);
     }
@@ -5399,6 +6697,5 @@
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
+    public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
         int index) {
       return enumType_.get(index);
@@ -5410,6 +6707,5 @@
      * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> getExtensionRangeList() {
+    public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> getExtensionRangeList() {
       return extensionRange_;
     }
@@ -5417,6 +6713,5 @@
      * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
      */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder>
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> 
         getExtensionRangeOrBuilderList() {
       return extensionRange_;
@@ -5425,6 +6720,5 @@
      * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
      */
-    @Override
-	public int getExtensionRangeCount() {
+    public int getExtensionRangeCount() {
       return extensionRange_.size();
     }
@@ -5432,6 +6726,5 @@
      * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getExtensionRange(int index) {
+    public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getExtensionRange(int index) {
       return extensionRange_.get(index);
     }
@@ -5439,6 +6732,5 @@
      * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder getExtensionRangeOrBuilder(
+    public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder getExtensionRangeOrBuilder(
         int index) {
       return extensionRange_.get(index);
@@ -5450,6 +6742,5 @@
      * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.OneofDescriptorProto> getOneofDeclList() {
+    public java.util.List<com.google.protobuf.DescriptorProtos.OneofDescriptorProto> getOneofDeclList() {
       return oneofDecl_;
     }
@@ -5457,6 +6748,5 @@
      * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
      */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder>
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> 
         getOneofDeclOrBuilderList() {
       return oneofDecl_;
@@ -5465,6 +6755,5 @@
      * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
      */
-    @Override
-	public int getOneofDeclCount() {
+    public int getOneofDeclCount() {
       return oneofDecl_.size();
     }
@@ -5472,6 +6761,5 @@
      * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getOneofDecl(int index) {
+    public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getOneofDecl(int index) {
       return oneofDecl_.get(index);
     }
@@ -5479,6 +6767,5 @@
      * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder getOneofDeclOrBuilder(
+    public com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder getOneofDeclOrBuilder(
         int index) {
       return oneofDecl_.get(index);
@@ -5490,6 +6777,5 @@
      * <code>optional .google.protobuf.MessageOptions options = 7;</code>
      */
-    @Override
-	public boolean hasOptions() {
+    public boolean hasOptions() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
@@ -5497,29 +6783,100 @@
      * <code>optional .google.protobuf.MessageOptions options = 7;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.MessageOptions getOptions() {
-      return options_;
+    public com.google.protobuf.DescriptorProtos.MessageOptions getOptions() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance() : options_;
     }
     /**
      * <code>optional .google.protobuf.MessageOptions options = 7;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder getOptionsOrBuilder() {
-      return options_;
-    }
-
-    private void initFields() {
-      name_ = "";
-      field_ = java.util.Collections.emptyList();
-      extension_ = java.util.Collections.emptyList();
-      nestedType_ = java.util.Collections.emptyList();
-      enumType_ = java.util.Collections.emptyList();
-      extensionRange_ = java.util.Collections.emptyList();
-      oneofDecl_ = java.util.Collections.emptyList();
-      options_ = com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance();
-    }
+    public com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder getOptionsOrBuilder() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance() : options_;
+    }
+
+    public static final int RESERVED_RANGE_FIELD_NUMBER = 9;
+    private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange> reservedRange_;
+    /**
+     * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange> getReservedRangeList() {
+      return reservedRange_;
+    }
+    /**
+     * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder> 
+        getReservedRangeOrBuilderList() {
+      return reservedRange_;
+    }
+    /**
+     * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+     */
+    public int getReservedRangeCount() {
+      return reservedRange_.size();
+    }
+    /**
+     * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange getReservedRange(int index) {
+      return reservedRange_.get(index);
+    }
+    /**
+     * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder getReservedRangeOrBuilder(
+        int index) {
+      return reservedRange_.get(index);
+    }
+
+    public static final int RESERVED_NAME_FIELD_NUMBER = 10;
+    private com.google.protobuf.LazyStringList reservedName_;
+    /**
+     * <pre>
+     * Reserved field names, which may not be used by fields in the same message.
+     * A given name may only be reserved once.
+     * </pre>
+     *
+     * <code>repeated string reserved_name = 10;</code>
+     */
+    public com.google.protobuf.ProtocolStringList
+        getReservedNameList() {
+      return reservedName_;
+    }
+    /**
+     * <pre>
+     * Reserved field names, which may not be used by fields in the same message.
+     * A given name may only be reserved once.
+     * </pre>
+     *
+     * <code>repeated string reserved_name = 10;</code>
+     */
+    public int getReservedNameCount() {
+      return reservedName_.size();
+    }
+    /**
+     * <pre>
+     * Reserved field names, which may not be used by fields in the same message.
+     * A given name may only be reserved once.
+     * </pre>
+     *
+     * <code>repeated string reserved_name = 10;</code>
+     */
+    public java.lang.String getReservedName(int index) {
+      return reservedName_.get(index);
+    }
+    /**
+     * <pre>
+     * Reserved field names, which may not be used by fields in the same message.
+     * A given name may only be reserved once.
+     * </pre>
+     *
+     * <code>repeated string reserved_name = 10;</code>
+     */
+    public com.google.protobuf.ByteString
+        getReservedNameBytes(int index) {
+      return reservedName_.getByteString(index);
+    }
+
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -5550,4 +6907,16 @@
         }
       }
+      for (int i = 0; i < getExtensionRangeCount(); i++) {
+        if (!getExtensionRange(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getOneofDeclCount(); i++) {
+        if (!getOneofDecl(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
       if (hasOptions()) {
         if (!getOptions().isInitialized()) {
@@ -5560,10 +6929,8 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(1, getNameBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
       }
       for (int i = 0; i < field_.size(); i++) {
@@ -5583,22 +6950,25 @@
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeMessage(7, options_);
+        output.writeMessage(7, getOptions());
       }
       for (int i = 0; i < oneofDecl_.size(); i++) {
         output.writeMessage(8, oneofDecl_.get(i));
       }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+      for (int i = 0; i < reservedRange_.size(); i++) {
+        output.writeMessage(9, reservedRange_.get(i));
+      }
+      for (int i = 0; i < reservedName_.size(); i++) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, reservedName_.getRaw(i));
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(1, getNameBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
       }
       for (int i = 0; i < field_.size(); i++) {
@@ -5624,5 +6994,5 @@
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(7, options_);
+          .computeMessageSize(7, getOptions());
       }
       for (int i = 0; i < oneofDecl_.size(); i++) {
@@ -5630,16 +7000,125 @@
           .computeMessageSize(8, oneofDecl_.get(i));
       }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+      for (int i = 0; i < reservedRange_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, reservedRange_.get(i));
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < reservedName_.size(); i++) {
+          dataSize += computeStringSizeNoTag(reservedName_.getRaw(i));
+        }
+        size += dataSize;
+        size += 1 * getReservedNameList().size();
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.DescriptorProto)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.DescriptorProto other = (com.google.protobuf.DescriptorProtos.DescriptorProto) obj;
+
+      boolean result = true;
+      result = result && (hasName() == other.hasName());
+      if (hasName()) {
+        result = result && getName()
+            .equals(other.getName());
+      }
+      result = result && getFieldList()
+          .equals(other.getFieldList());
+      result = result && getExtensionList()
+          .equals(other.getExtensionList());
+      result = result && getNestedTypeList()
+          .equals(other.getNestedTypeList());
+      result = result && getEnumTypeList()
+          .equals(other.getEnumTypeList());
+      result = result && getExtensionRangeList()
+          .equals(other.getExtensionRangeList());
+      result = result && getOneofDeclList()
+          .equals(other.getOneofDeclList());
+      result = result && (hasOptions() == other.hasOptions());
+      if (hasOptions()) {
+        result = result && getOptions()
+            .equals(other.getOptions());
+      }
+      result = result && getReservedRangeList()
+          .equals(other.getReservedRangeList());
+      result = result && getReservedNameList()
+          .equals(other.getReservedNameList());
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasName()) {
+        hash = (37 * hash) + NAME_FIELD_NUMBER;
+        hash = (53 * hash) + getName().hashCode();
+      }
+      if (getFieldCount() > 0) {
+        hash = (37 * hash) + FIELD_FIELD_NUMBER;
+        hash = (53 * hash) + getFieldList().hashCode();
+      }
+      if (getExtensionCount() > 0) {
+        hash = (37 * hash) + EXTENSION_FIELD_NUMBER;
+        hash = (53 * hash) + getExtensionList().hashCode();
+      }
+      if (getNestedTypeCount() > 0) {
+        hash = (37 * hash) + NESTED_TYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getNestedTypeList().hashCode();
+      }
+      if (getEnumTypeCount() > 0) {
+        hash = (37 * hash) + ENUM_TYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getEnumTypeList().hashCode();
+      }
+      if (getExtensionRangeCount() > 0) {
+        hash = (37 * hash) + EXTENSION_RANGE_FIELD_NUMBER;
+        hash = (53 * hash) + getExtensionRangeList().hashCode();
+      }
+      if (getOneofDeclCount() > 0) {
+        hash = (37 * hash) + ONEOF_DECL_FIELD_NUMBER;
+        hash = (53 * hash) + getOneofDeclList().hashCode();
+      }
+      if (hasOptions()) {
+        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
+        hash = (53 * hash) + getOptions().hashCode();
+      }
+      if (getReservedRangeCount() > 0) {
+        hash = (37 * hash) + RESERVED_RANGE_FIELD_NUMBER;
+        hash = (53 * hash) + getReservedRangeList().hashCode();
+      }
+      if (getReservedNameCount() > 0) {
+        hash = (37 * hash) + RESERVED_NAME_FIELD_NUMBER;
+        hash = (53 * hash) + getReservedNameList().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
         com.google.protobuf.ByteString data)
@@ -5665,5 +7144,6 @@
     public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
@@ -5671,9 +7151,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.DescriptorProto parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.DescriptorProto parseDelimitedFrom(
@@ -5681,10 +7163,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
@@ -5692,31 +7176,35 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.DescriptorProto prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
     /**
-     * Protobuf type {@code google.protobuf.DescriptorProto}
-     *
      * <pre>
      * Describes a message type.
      * </pre>
+     *
+     * Protobuf type {@code google.protobuf.DescriptorProto}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.DescriptorProto)
         com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder {
@@ -5726,6 +7214,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_fieldAccessorTable
@@ -5740,10 +7227,11 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getFieldFieldBuilder();
           getExtensionFieldBuilder();
@@ -5753,12 +7241,8 @@
           getOneofDeclFieldBuilder();
           getOptionsFieldBuilder();
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+          getReservedRangeFieldBuilder();
+        }
+      }
+      public Builder clear() {
         super.clear();
         name_ = "";
@@ -5801,30 +7285,30 @@
         }
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance();
+          options_ = null;
         } else {
           optionsBuilder_.clear();
         }
         bitField0_ = (bitField0_ & ~0x00000080);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+        if (reservedRangeBuilder_ == null) {
+          reservedRange_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000100);
+        } else {
+          reservedRangeBuilder_.clear();
+        }
+        reservedName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProto getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.DescriptorProto getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProto build() {
+      public com.google.protobuf.DescriptorProtos.DescriptorProto build() {
         com.google.protobuf.DescriptorProtos.DescriptorProto result = buildPartial();
         if (!result.isInitialized()) {
@@ -5834,6 +7318,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProto buildPartial() {
+      public com.google.protobuf.DescriptorProtos.DescriptorProto buildPartial() {
         com.google.protobuf.DescriptorProtos.DescriptorProto result = new com.google.protobuf.DescriptorProtos.DescriptorProto(this);
         int from_bitField0_ = bitField0_;
@@ -5905,4 +7388,18 @@
           result.options_ = optionsBuilder_.build();
         }
+        if (reservedRangeBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100)) {
+            reservedRange_ = java.util.Collections.unmodifiableList(reservedRange_);
+            bitField0_ = (bitField0_ & ~0x00000100);
+          }
+          result.reservedRange_ = reservedRange_;
+        } else {
+          result.reservedRange_ = reservedRangeBuilder_.build();
+        }
+        if (((bitField0_ & 0x00000200) == 0x00000200)) {
+          reservedName_ = reservedName_.getUnmodifiableView();
+          bitField0_ = (bitField0_ & ~0x00000200);
+        }
+        result.reservedName_ = reservedName_;
         result.bitField0_ = to_bitField0_;
         onBuilt();
@@ -5910,6 +7407,31 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.DescriptorProto) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.DescriptorProto)other);
@@ -5945,6 +7467,6 @@
               field_ = other.field_;
               bitField0_ = (bitField0_ & ~0x00000002);
-              fieldBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              fieldBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getFieldFieldBuilder() : null;
             } else {
@@ -5971,6 +7493,6 @@
               extension_ = other.extension_;
               bitField0_ = (bitField0_ & ~0x00000004);
-              extensionBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              extensionBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getExtensionFieldBuilder() : null;
             } else {
@@ -5997,6 +7519,6 @@
               nestedType_ = other.nestedType_;
               bitField0_ = (bitField0_ & ~0x00000008);
-              nestedTypeBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              nestedTypeBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getNestedTypeFieldBuilder() : null;
             } else {
@@ -6023,6 +7545,6 @@
               enumType_ = other.enumType_;
               bitField0_ = (bitField0_ & ~0x00000010);
-              enumTypeBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              enumTypeBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getEnumTypeFieldBuilder() : null;
             } else {
@@ -6049,6 +7571,6 @@
               extensionRange_ = other.extensionRange_;
               bitField0_ = (bitField0_ & ~0x00000020);
-              extensionRangeBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              extensionRangeBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getExtensionRangeFieldBuilder() : null;
             } else {
@@ -6075,6 +7597,6 @@
               oneofDecl_ = other.oneofDecl_;
               bitField0_ = (bitField0_ & ~0x00000040);
-              oneofDeclBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              oneofDeclBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getOneofDeclFieldBuilder() : null;
             } else {
@@ -6086,13 +7608,48 @@
           mergeOptions(other.getOptions());
         }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        if (reservedRangeBuilder_ == null) {
+          if (!other.reservedRange_.isEmpty()) {
+            if (reservedRange_.isEmpty()) {
+              reservedRange_ = other.reservedRange_;
+              bitField0_ = (bitField0_ & ~0x00000100);
+            } else {
+              ensureReservedRangeIsMutable();
+              reservedRange_.addAll(other.reservedRange_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.reservedRange_.isEmpty()) {
+            if (reservedRangeBuilder_.isEmpty()) {
+              reservedRangeBuilder_.dispose();
+              reservedRangeBuilder_ = null;
+              reservedRange_ = other.reservedRange_;
+              bitField0_ = (bitField0_ & ~0x00000100);
+              reservedRangeBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getReservedRangeFieldBuilder() : null;
+            } else {
+              reservedRangeBuilder_.addAllMessages(other.reservedRange_);
+            }
+          }
+        }
+        if (!other.reservedName_.isEmpty()) {
+          if (reservedName_.isEmpty()) {
+            reservedName_ = other.reservedName_;
+            bitField0_ = (bitField0_ & ~0x00000200);
+          } else {
+            ensureReservedNameIsMutable();
+            reservedName_.addAll(other.reservedName_);
+          }
+          onChanged();
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         for (int i = 0; i < getFieldCount(); i++) {
           if (!getField(i).isInitialized()) {
-
             return false;
           }
@@ -6100,5 +7657,4 @@
         for (int i = 0; i < getExtensionCount(); i++) {
           if (!getExtension(i).isInitialized()) {
-
             return false;
           }
@@ -6106,5 +7662,4 @@
         for (int i = 0; i < getNestedTypeCount(); i++) {
           if (!getNestedType(i).isInitialized()) {
-
             return false;
           }
@@ -6112,11 +7667,19 @@
         for (int i = 0; i < getEnumTypeCount(); i++) {
           if (!getEnumType(i).isInitialized()) {
-
             return false;
           }
         }
+        for (int i = 0; i < getExtensionRangeCount(); i++) {
+          if (!getExtensionRange(i).isInitialized()) {
+            return false;
+          }
+        }
+        for (int i = 0; i < getOneofDeclCount(); i++) {
+          if (!getOneofDecl(i).isInitialized()) {
+            return false;
+          }
+        }
         if (hasOptions()) {
           if (!getOptions().isInitialized()) {
-
             return false;
           }
@@ -6125,6 +7688,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -6135,5 +7697,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.DescriptorProto) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -6149,6 +7711,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public boolean hasName() {
+      public boolean hasName() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
@@ -6156,6 +7717,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public java.lang.String getName() {
+      public java.lang.String getName() {
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
@@ -6174,10 +7734,9 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getNameBytes() {
         java.lang.Object ref = name_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -6228,10 +7787,10 @@
       private void ensureFieldIsMutable() {
         if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          field_ = new java.util.ArrayList<>(field_);
+          field_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>(field_);
           bitField0_ |= 0x00000002;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> fieldBuilder_;
 
@@ -6239,6 +7798,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getFieldList() {
+      public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getFieldList() {
         if (fieldBuilder_ == null) {
           return java.util.Collections.unmodifiableList(field_);
@@ -6250,6 +7808,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
        */
-      @Override
-	public int getFieldCount() {
+      public int getFieldCount() {
         if (fieldBuilder_ == null) {
           return field_.size();
@@ -6261,6 +7818,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getField(int index) {
+      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getField(int index) {
         if (fieldBuilder_ == null) {
           return field_.get(index);
@@ -6412,6 +7968,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getFieldOrBuilder(
+      public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getFieldOrBuilder(
           int index) {
         if (fieldBuilder_ == null) {
@@ -6423,6 +7978,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
        */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
            getFieldOrBuilderList() {
         if (fieldBuilder_ != null) {
@@ -6450,13 +8004,14 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
        */
-      public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder>
+      public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder> 
            getFieldBuilderList() {
         return getFieldFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
           getFieldFieldBuilder() {
         if (fieldBuilder_ == null) {
-          fieldBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          fieldBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>(
                   field_,
                   ((bitField0_ & 0x00000002) == 0x00000002),
@@ -6472,10 +8027,10 @@
       private void ensureExtensionIsMutable() {
         if (!((bitField0_ & 0x00000004) == 0x00000004)) {
-          extension_ = new java.util.ArrayList<>(extension_);
+          extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>(extension_);
           bitField0_ |= 0x00000004;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> extensionBuilder_;
 
@@ -6483,6 +8038,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() {
+      public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() {
         if (extensionBuilder_ == null) {
           return java.util.Collections.unmodifiableList(extension_);
@@ -6494,6 +8048,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
        */
-      @Override
-	public int getExtensionCount() {
+      public int getExtensionCount() {
         if (extensionBuilder_ == null) {
           return extension_.size();
@@ -6505,6 +8058,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
+      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
         if (extensionBuilder_ == null) {
           return extension_.get(index);
@@ -6656,6 +8208,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
+      public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
           int index) {
         if (extensionBuilder_ == null) {
@@ -6667,6 +8218,5 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
        */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
            getExtensionOrBuilderList() {
         if (extensionBuilder_ != null) {
@@ -6694,13 +8244,14 @@
        * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
        */
-      public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder>
+      public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder> 
            getExtensionBuilderList() {
         return getExtensionFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
           getExtensionFieldBuilder() {
         if (extensionBuilder_ == null) {
-          extensionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          extensionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>(
                   extension_,
                   ((bitField0_ & 0x00000004) == 0x00000004),
@@ -6716,10 +8267,10 @@
       private void ensureNestedTypeIsMutable() {
         if (!((bitField0_ & 0x00000008) == 0x00000008)) {
-          nestedType_ = new java.util.ArrayList<>(nestedType_);
+          nestedType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>(nestedType_);
           bitField0_ |= 0x00000008;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> nestedTypeBuilder_;
 
@@ -6727,6 +8278,5 @@
        * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getNestedTypeList() {
+      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getNestedTypeList() {
         if (nestedTypeBuilder_ == null) {
           return java.util.Collections.unmodifiableList(nestedType_);
@@ -6738,6 +8288,5 @@
        * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
        */
-      @Override
-	public int getNestedTypeCount() {
+      public int getNestedTypeCount() {
         if (nestedTypeBuilder_ == null) {
           return nestedType_.size();
@@ -6749,6 +8298,5 @@
        * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProto getNestedType(int index) {
+      public com.google.protobuf.DescriptorProtos.DescriptorProto getNestedType(int index) {
         if (nestedTypeBuilder_ == null) {
           return nestedType_.get(index);
@@ -6900,6 +8448,5 @@
        * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getNestedTypeOrBuilder(
+      public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getNestedTypeOrBuilder(
           int index) {
         if (nestedTypeBuilder_ == null) {
@@ -6911,6 +8458,5 @@
        * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
        */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
            getNestedTypeOrBuilderList() {
         if (nestedTypeBuilder_ != null) {
@@ -6938,13 +8484,14 @@
        * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
        */
-      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.Builder>
+      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.Builder> 
            getNestedTypeBuilderList() {
         return getNestedTypeFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
           getNestedTypeFieldBuilder() {
         if (nestedTypeBuilder_ == null) {
-          nestedTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          nestedTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>(
                   nestedType_,
                   ((bitField0_ & 0x00000008) == 0x00000008),
@@ -6960,10 +8507,10 @@
       private void ensureEnumTypeIsMutable() {
         if (!((bitField0_ & 0x00000010) == 0x00000010)) {
-          enumType_ = new java.util.ArrayList<>(enumType_);
+          enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>(enumType_);
           bitField0_ |= 0x00000010;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> enumTypeBuilder_;
 
@@ -6971,6 +8518,5 @@
        * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() {
+      public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() {
         if (enumTypeBuilder_ == null) {
           return java.util.Collections.unmodifiableList(enumType_);
@@ -6982,6 +8528,5 @@
        * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
        */
-      @Override
-	public int getEnumTypeCount() {
+      public int getEnumTypeCount() {
         if (enumTypeBuilder_ == null) {
           return enumType_.size();
@@ -6993,6 +8538,5 @@
        * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
+      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
         if (enumTypeBuilder_ == null) {
           return enumType_.get(index);
@@ -7144,6 +8688,5 @@
        * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
+      public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
           int index) {
         if (enumTypeBuilder_ == null) {
@@ -7155,6 +8698,5 @@
        * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
        */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
            getEnumTypeOrBuilderList() {
         if (enumTypeBuilder_ != null) {
@@ -7182,13 +8724,14 @@
        * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
        */
-      public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder>
+      public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder> 
            getEnumTypeBuilderList() {
         return getEnumTypeFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
           getEnumTypeFieldBuilder() {
         if (enumTypeBuilder_ == null) {
-          enumTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          enumTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>(
                   enumType_,
                   ((bitField0_ & 0x00000010) == 0x00000010),
@@ -7204,10 +8747,10 @@
       private void ensureExtensionRangeIsMutable() {
         if (!((bitField0_ & 0x00000020) == 0x00000020)) {
-          extensionRange_ = new java.util.ArrayList<>(extensionRange_);
+          extensionRange_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange>(extensionRange_);
           bitField0_ |= 0x00000020;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> extensionRangeBuilder_;
 
@@ -7215,6 +8758,5 @@
        * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> getExtensionRangeList() {
+      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> getExtensionRangeList() {
         if (extensionRangeBuilder_ == null) {
           return java.util.Collections.unmodifiableList(extensionRange_);
@@ -7226,6 +8768,5 @@
        * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
        */
-      @Override
-	public int getExtensionRangeCount() {
+      public int getExtensionRangeCount() {
         if (extensionRangeBuilder_ == null) {
           return extensionRange_.size();
@@ -7237,6 +8778,5 @@
        * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getExtensionRange(int index) {
+      public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getExtensionRange(int index) {
         if (extensionRangeBuilder_ == null) {
           return extensionRange_.get(index);
@@ -7388,6 +8928,5 @@
        * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder getExtensionRangeOrBuilder(
+      public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder getExtensionRangeOrBuilder(
           int index) {
         if (extensionRangeBuilder_ == null) {
@@ -7399,6 +8938,5 @@
        * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
        */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder>
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> 
            getExtensionRangeOrBuilderList() {
         if (extensionRangeBuilder_ != null) {
@@ -7426,13 +8964,14 @@
        * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
        */
-      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder>
+      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder> 
            getExtensionRangeBuilderList() {
         return getExtensionRangeFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> 
           getExtensionRangeFieldBuilder() {
         if (extensionRangeBuilder_ == null) {
-          extensionRangeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          extensionRangeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder>(
                   extensionRange_,
                   ((bitField0_ & 0x00000020) == 0x00000020),
@@ -7448,10 +8987,10 @@
       private void ensureOneofDeclIsMutable() {
         if (!((bitField0_ & 0x00000040) == 0x00000040)) {
-          oneofDecl_ = new java.util.ArrayList<>(oneofDecl_);
+          oneofDecl_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.OneofDescriptorProto>(oneofDecl_);
           bitField0_ |= 0x00000040;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.OneofDescriptorProto, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> oneofDeclBuilder_;
 
@@ -7459,6 +8998,5 @@
        * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.OneofDescriptorProto> getOneofDeclList() {
+      public java.util.List<com.google.protobuf.DescriptorProtos.OneofDescriptorProto> getOneofDeclList() {
         if (oneofDeclBuilder_ == null) {
           return java.util.Collections.unmodifiableList(oneofDecl_);
@@ -7470,6 +9008,5 @@
        * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
        */
-      @Override
-	public int getOneofDeclCount() {
+      public int getOneofDeclCount() {
         if (oneofDeclBuilder_ == null) {
           return oneofDecl_.size();
@@ -7481,6 +9018,5 @@
        * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getOneofDecl(int index) {
+      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getOneofDecl(int index) {
         if (oneofDeclBuilder_ == null) {
           return oneofDecl_.get(index);
@@ -7632,6 +9168,5 @@
        * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder getOneofDeclOrBuilder(
+      public com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder getOneofDeclOrBuilder(
           int index) {
         if (oneofDeclBuilder_ == null) {
@@ -7643,6 +9178,5 @@
        * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
        */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder>
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> 
            getOneofDeclOrBuilderList() {
         if (oneofDeclBuilder_ != null) {
@@ -7670,13 +9204,14 @@
        * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
        */
-      public java.util.List<com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder>
+      public java.util.List<com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder> 
            getOneofDeclBuilderList() {
         return getOneofDeclFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.OneofDescriptorProto, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.OneofDescriptorProto, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> 
           getOneofDeclFieldBuilder() {
         if (oneofDeclBuilder_ == null) {
-          oneofDeclBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          oneofDeclBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.OneofDescriptorProto, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder>(
                   oneofDecl_,
                   ((bitField0_ & 0x00000040) == 0x00000040),
@@ -7688,12 +9223,11 @@
       }
 
-      private com.google.protobuf.DescriptorProtos.MessageOptions options_ = com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance();
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.DescriptorProtos.MessageOptions options_ = null;
+      private com.google.protobuf.SingleFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.MessageOptions, com.google.protobuf.DescriptorProtos.MessageOptions.Builder, com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder> optionsBuilder_;
       /**
        * <code>optional .google.protobuf.MessageOptions options = 7;</code>
        */
-      @Override
-	public boolean hasOptions() {
+      public boolean hasOptions() {
         return ((bitField0_ & 0x00000080) == 0x00000080);
       }
@@ -7701,8 +9235,7 @@
        * <code>optional .google.protobuf.MessageOptions options = 7;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.MessageOptions getOptions() {
+      public com.google.protobuf.DescriptorProtos.MessageOptions getOptions() {
         if (optionsBuilder_ == null) {
-          return options_;
+          return options_ == null ? com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance() : options_;
         } else {
           return optionsBuilder_.getMessage();
@@ -7745,4 +9278,5 @@
         if (optionsBuilder_ == null) {
           if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              options_ != null &&
               options_ != com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance()) {
             options_ =
@@ -7763,5 +9297,5 @@
       public Builder clearOptions() {
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance();
+          options_ = null;
           onChanged();
         } else {
@@ -7782,10 +9316,10 @@
        * <code>optional .google.protobuf.MessageOptions options = 7;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder getOptionsOrBuilder() {
+      public com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder getOptionsOrBuilder() {
         if (optionsBuilder_ != null) {
           return optionsBuilder_.getMessageOrBuilder();
         } else {
-          return options_;
+          return options_ == null ?
+              com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance() : options_;
         }
       }
@@ -7793,9 +9327,10 @@
        * <code>optional .google.protobuf.MessageOptions options = 7;</code>
        */
-      private com.google.protobuf.SingleFieldBuilder<
-          com.google.protobuf.DescriptorProtos.MessageOptions, com.google.protobuf.DescriptorProtos.MessageOptions.Builder, com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder>
+      private com.google.protobuf.SingleFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.MessageOptions, com.google.protobuf.DescriptorProtos.MessageOptions.Builder, com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder> 
           getOptionsFieldBuilder() {
         if (optionsBuilder_ == null) {
-          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<>(
+          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.MessageOptions, com.google.protobuf.DescriptorProtos.MessageOptions.Builder, com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder>(
                   getOptions(),
                   getParentForChildren(),
@@ -7806,250 +9341,506 @@
       }
 
+      private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange> reservedRange_ =
+        java.util.Collections.emptyList();
+      private void ensureReservedRangeIsMutable() {
+        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
+          reservedRange_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange>(reservedRange_);
+          bitField0_ |= 0x00000100;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder> reservedRangeBuilder_;
+
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange> getReservedRangeList() {
+        if (reservedRangeBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(reservedRange_);
+        } else {
+          return reservedRangeBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public int getReservedRangeCount() {
+        if (reservedRangeBuilder_ == null) {
+          return reservedRange_.size();
+        } else {
+          return reservedRangeBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange getReservedRange(int index) {
+        if (reservedRangeBuilder_ == null) {
+          return reservedRange_.get(index);
+        } else {
+          return reservedRangeBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public Builder setReservedRange(
+          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange value) {
+        if (reservedRangeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureReservedRangeIsMutable();
+          reservedRange_.set(index, value);
+          onChanged();
+        } else {
+          reservedRangeBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public Builder setReservedRange(
+          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder builderForValue) {
+        if (reservedRangeBuilder_ == null) {
+          ensureReservedRangeIsMutable();
+          reservedRange_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          reservedRangeBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public Builder addReservedRange(com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange value) {
+        if (reservedRangeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureReservedRangeIsMutable();
+          reservedRange_.add(value);
+          onChanged();
+        } else {
+          reservedRangeBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public Builder addReservedRange(
+          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange value) {
+        if (reservedRangeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureReservedRangeIsMutable();
+          reservedRange_.add(index, value);
+          onChanged();
+        } else {
+          reservedRangeBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public Builder addReservedRange(
+          com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder builderForValue) {
+        if (reservedRangeBuilder_ == null) {
+          ensureReservedRangeIsMutable();
+          reservedRange_.add(builderForValue.build());
+          onChanged();
+        } else {
+          reservedRangeBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public Builder addReservedRange(
+          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder builderForValue) {
+        if (reservedRangeBuilder_ == null) {
+          ensureReservedRangeIsMutable();
+          reservedRange_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          reservedRangeBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public Builder addAllReservedRange(
+          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange> values) {
+        if (reservedRangeBuilder_ == null) {
+          ensureReservedRangeIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, reservedRange_);
+          onChanged();
+        } else {
+          reservedRangeBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public Builder clearReservedRange() {
+        if (reservedRangeBuilder_ == null) {
+          reservedRange_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000100);
+          onChanged();
+        } else {
+          reservedRangeBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public Builder removeReservedRange(int index) {
+        if (reservedRangeBuilder_ == null) {
+          ensureReservedRangeIsMutable();
+          reservedRange_.remove(index);
+          onChanged();
+        } else {
+          reservedRangeBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder getReservedRangeBuilder(
+          int index) {
+        return getReservedRangeFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder getReservedRangeOrBuilder(
+          int index) {
+        if (reservedRangeBuilder_ == null) {
+          return reservedRange_.get(index);  } else {
+          return reservedRangeBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder> 
+           getReservedRangeOrBuilderList() {
+        if (reservedRangeBuilder_ != null) {
+          return reservedRangeBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(reservedRange_);
+        }
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder addReservedRangeBuilder() {
+        return getReservedRangeFieldBuilder().addBuilder(
+            com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder addReservedRangeBuilder(
+          int index) {
+        return getReservedRangeFieldBuilder().addBuilder(
+            index, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;</code>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder> 
+           getReservedRangeBuilderList() {
+        return getReservedRangeFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder> 
+          getReservedRangeFieldBuilder() {
+        if (reservedRangeBuilder_ == null) {
+          reservedRangeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder>(
+                  reservedRange_,
+                  ((bitField0_ & 0x00000100) == 0x00000100),
+                  getParentForChildren(),
+                  isClean());
+          reservedRange_ = null;
+        }
+        return reservedRangeBuilder_;
+      }
+
+      private com.google.protobuf.LazyStringList reservedName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      private void ensureReservedNameIsMutable() {
+        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
+          reservedName_ = new com.google.protobuf.LazyStringArrayList(reservedName_);
+          bitField0_ |= 0x00000200;
+         }
+      }
+      /**
+       * <pre>
+       * Reserved field names, which may not be used by fields in the same message.
+       * A given name may only be reserved once.
+       * </pre>
+       *
+       * <code>repeated string reserved_name = 10;</code>
+       */
+      public com.google.protobuf.ProtocolStringList
+          getReservedNameList() {
+        return reservedName_.getUnmodifiableView();
+      }
+      /**
+       * <pre>
+       * Reserved field names, which may not be used by fields in the same message.
+       * A given name may only be reserved once.
+       * </pre>
+       *
+       * <code>repeated string reserved_name = 10;</code>
+       */
+      public int getReservedNameCount() {
+        return reservedName_.size();
+      }
+      /**
+       * <pre>
+       * Reserved field names, which may not be used by fields in the same message.
+       * A given name may only be reserved once.
+       * </pre>
+       *
+       * <code>repeated string reserved_name = 10;</code>
+       */
+      public java.lang.String getReservedName(int index) {
+        return reservedName_.get(index);
+      }
+      /**
+       * <pre>
+       * Reserved field names, which may not be used by fields in the same message.
+       * A given name may only be reserved once.
+       * </pre>
+       *
+       * <code>repeated string reserved_name = 10;</code>
+       */
+      public com.google.protobuf.ByteString
+          getReservedNameBytes(int index) {
+        return reservedName_.getByteString(index);
+      }
+      /**
+       * <pre>
+       * Reserved field names, which may not be used by fields in the same message.
+       * A given name may only be reserved once.
+       * </pre>
+       *
+       * <code>repeated string reserved_name = 10;</code>
+       */
+      public Builder setReservedName(
+          int index, java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureReservedNameIsMutable();
+        reservedName_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Reserved field names, which may not be used by fields in the same message.
+       * A given name may only be reserved once.
+       * </pre>
+       *
+       * <code>repeated string reserved_name = 10;</code>
+       */
+      public Builder addReservedName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureReservedNameIsMutable();
+        reservedName_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Reserved field names, which may not be used by fields in the same message.
+       * A given name may only be reserved once.
+       * </pre>
+       *
+       * <code>repeated string reserved_name = 10;</code>
+       */
+      public Builder addAllReservedName(
+          java.lang.Iterable<java.lang.String> values) {
+        ensureReservedNameIsMutable();
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, reservedName_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Reserved field names, which may not be used by fields in the same message.
+       * A given name may only be reserved once.
+       * </pre>
+       *
+       * <code>repeated string reserved_name = 10;</code>
+       */
+      public Builder clearReservedName() {
+        reservedName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Reserved field names, which may not be used by fields in the same message.
+       * A given name may only be reserved once.
+       * </pre>
+       *
+       * <code>repeated string reserved_name = 10;</code>
+       */
+      public Builder addReservedNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureReservedNameIsMutable();
+        reservedName_.add(value);
+        onChanged();
+        return this;
+      }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
       // @@protoc_insertion_point(builder_scope:google.protobuf.DescriptorProto)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto)
+    private static final com.google.protobuf.DescriptorProtos.DescriptorProto DEFAULT_INSTANCE;
     static {
-      defaultInstance = new DescriptorProto(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.DescriptorProto();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.DescriptorProto getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<DescriptorProto>
+        PARSER = new com.google.protobuf.AbstractParser<DescriptorProto>() {
+      public DescriptorProto parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new DescriptorProto(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<DescriptorProto> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<DescriptorProto> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.DescriptorProto getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
-  public interface FieldDescriptorProtoOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:google.protobuf.FieldDescriptorProto)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional string name = 1;</code>
-     */
-    boolean hasName();
-    /**
-     * <code>optional string name = 1;</code>
-     */
-    java.lang.String getName();
-    /**
-     * <code>optional string name = 1;</code>
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
-
-    /**
-     * <code>optional int32 number = 3;</code>
-     */
-    boolean hasNumber();
-    /**
-     * <code>optional int32 number = 3;</code>
-     */
-    int getNumber();
-
-    /**
-     * <code>optional .google.protobuf.FieldDescriptorProto.Label label = 4;</code>
-     */
-    boolean hasLabel();
-    /**
-     * <code>optional .google.protobuf.FieldDescriptorProto.Label label = 4;</code>
-     */
-    com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel();
-
-    /**
-     * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
+  public interface ExtensionRangeOptionsOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.ExtensionRangeOptions)
+      com.google.protobuf.GeneratedMessageV3.
+          ExtendableMessageOrBuilder<ExtensionRangeOptions> {
+
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
      *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> 
+        getUninterpretedOptionList();
+    /**
      * <pre>
-     * If type_name is set, this need not be set.  If both this and type_name
-     * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
+     * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    boolean hasType();
-    /**
-     * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
      *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
+    /**
      * <pre>
-     * If type_name is set, this need not be set.  If both this and type_name
-     * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
+     * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType();
-
-    /**
-     * <code>optional string type_name = 6;</code>
      *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    int getUninterpretedOptionCount();
+    /**
      * <pre>
-     * For message and enum types, this is the name of the type.  If the name
-     * starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
-     * rules are used to find the type (i.e. first the nested types within this
-     * message are searched, then within the parent, on up to the root
-     * namespace).
+     * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    boolean hasTypeName();
-    /**
-     * <code>optional string type_name = 6;</code>
      *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
+        getUninterpretedOptionOrBuilderList();
+    /**
      * <pre>
-     * For message and enum types, this is the name of the type.  If the name
-     * starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
-     * rules are used to find the type (i.e. first the nested types within this
-     * message are searched, then within the parent, on up to the root
-     * namespace).
+     * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.lang.String getTypeName();
-    /**
-     * <code>optional string type_name = 6;</code>
      *
-     * <pre>
-     * For message and enum types, this is the name of the type.  If the name
-     * starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
-     * rules are used to find the type (i.e. first the nested types within this
-     * message are searched, then within the parent, on up to the root
-     * namespace).
-     * </pre>
-     */
-    com.google.protobuf.ByteString
-        getTypeNameBytes();
-
-    /**
-     * <code>optional string extendee = 2;</code>
-     *
-     * <pre>
-     * For extensions, this is the name of the type being extended.  It is
-     * resolved in the same manner as type_name.
-     * </pre>
-     */
-    boolean hasExtendee();
-    /**
-     * <code>optional string extendee = 2;</code>
-     *
-     * <pre>
-     * For extensions, this is the name of the type being extended.  It is
-     * resolved in the same manner as type_name.
-     * </pre>
-     */
-    java.lang.String getExtendee();
-    /**
-     * <code>optional string extendee = 2;</code>
-     *
-     * <pre>
-     * For extensions, this is the name of the type being extended.  It is
-     * resolved in the same manner as type_name.
-     * </pre>
-     */
-    com.google.protobuf.ByteString
-        getExtendeeBytes();
-
-    /**
-     * <code>optional string default_value = 7;</code>
-     *
-     * <pre>
-     * For numeric types, contains the original text representation of the value.
-     * For booleans, "true" or "false".
-     * For strings, contains the default text contents (not escaped in any way).
-     * For bytes, contains the C escaped value.  All bytes &gt;= 128 are escaped.
-     * TODO(kenton):  Base-64 encode?
-     * </pre>
-     */
-    boolean hasDefaultValue();
-    /**
-     * <code>optional string default_value = 7;</code>
-     *
-     * <pre>
-     * For numeric types, contains the original text representation of the value.
-     * For booleans, "true" or "false".
-     * For strings, contains the default text contents (not escaped in any way).
-     * For bytes, contains the C escaped value.  All bytes &gt;= 128 are escaped.
-     * TODO(kenton):  Base-64 encode?
-     * </pre>
-     */
-    java.lang.String getDefaultValue();
-    /**
-     * <code>optional string default_value = 7;</code>
-     *
-     * <pre>
-     * For numeric types, contains the original text representation of the value.
-     * For booleans, "true" or "false".
-     * For strings, contains the default text contents (not escaped in any way).
-     * For bytes, contains the C escaped value.  All bytes &gt;= 128 are escaped.
-     * TODO(kenton):  Base-64 encode?
-     * </pre>
-     */
-    com.google.protobuf.ByteString
-        getDefaultValueBytes();
-
-    /**
-     * <code>optional int32 oneof_index = 9;</code>
-     *
-     * <pre>
-     * If set, gives the index of a oneof in the containing type's oneof_decl
-     * list.  This field is a member of that oneof.  Extensions of a oneof should
-     * not set this since the oneof to which they belong will be inferred based
-     * on the extension range containing the extension's field number.
-     * </pre>
-     */
-    boolean hasOneofIndex();
-    /**
-     * <code>optional int32 oneof_index = 9;</code>
-     *
-     * <pre>
-     * If set, gives the index of a oneof in the containing type's oneof_decl
-     * list.  This field is a member of that oneof.  Extensions of a oneof should
-     * not set this since the oneof to which they belong will be inferred based
-     * on the extension range containing the extension's field number.
-     * </pre>
-     */
-    int getOneofIndex();
-
-    /**
-     * <code>optional .google.protobuf.FieldOptions options = 8;</code>
-     */
-    boolean hasOptions();
-    /**
-     * <code>optional .google.protobuf.FieldOptions options = 8;</code>
-     */
-    com.google.protobuf.DescriptorProtos.FieldOptions getOptions();
-    /**
-     * <code>optional .google.protobuf.FieldOptions options = 8;</code>
-     */
-    com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder getOptionsOrBuilder();
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+        int index);
   }
   /**
-   * Protobuf type {@code google.protobuf.FieldDescriptorProto}
-   *
-   * <pre>
-   * Describes a field within a message.
-   * </pre>
+   * Protobuf type {@code google.protobuf.ExtensionRangeOptions}
    */
-  public static final class FieldDescriptorProto extends
-      com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:google.protobuf.FieldDescriptorProto)
-      FieldDescriptorProtoOrBuilder {
-    // Use FieldDescriptorProto.newBuilder() to construct.
-    private FieldDescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+  public  static final class ExtensionRangeOptions extends
+      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
+        ExtensionRangeOptions> implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.ExtensionRangeOptions)
+      ExtensionRangeOptionsOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use ExtensionRangeOptions.newBuilder() to construct.
+    private ExtensionRangeOptions(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, ?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private FieldDescriptorProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final FieldDescriptorProto defaultInstance;
-    public static FieldDescriptorProto getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public FieldDescriptorProto getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private ExtensionRangeOptions() {
+      uninterpretedOption_ = java.util.Collections.emptyList();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
-    private FieldDescriptorProto(
+    private ExtensionRangeOptions(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -8064,6 +9855,1114 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 7994: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              uninterpretedOption_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.class, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder.class);
+    }
+
+    public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
+    private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+      return uninterpretedOption_;
+    }
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
+        getUninterpretedOptionOrBuilderList() {
+      return uninterpretedOption_;
+    }
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public int getUninterpretedOptionCount() {
+      return uninterpretedOption_.size();
+    }
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+      return uninterpretedOption_.get(index);
+    }
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+        int index) {
+      return uninterpretedOption_.get(index);
+    }
+
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      for (int i = 0; i < getUninterpretedOptionCount(); i++) {
+        if (!getUninterpretedOption(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (!extensionsAreInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      com.google.protobuf.GeneratedMessageV3
+        .ExtendableMessage<com.google.protobuf.DescriptorProtos.ExtensionRangeOptions>.ExtensionWriter
+          extensionWriter = newExtensionWriter();
+      for (int i = 0; i < uninterpretedOption_.size(); i++) {
+        output.writeMessage(999, uninterpretedOption_.get(i));
+      }
+      extensionWriter.writeUntil(536870912, output);
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < uninterpretedOption_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(999, uninterpretedOption_.get(i));
+      }
+      size += extensionsSerializedSize();
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.ExtensionRangeOptions)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.ExtensionRangeOptions other = (com.google.protobuf.DescriptorProtos.ExtensionRangeOptions) obj;
+
+      boolean result = true;
+      result = result && getUninterpretedOptionList()
+          .equals(other.getUninterpretedOptionList());
+      result = result && unknownFields.equals(other.unknownFields);
+      result = result &&
+          getExtensionFields().equals(other.getExtensionFields());
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (getUninterpretedOptionCount() > 0) {
+        hash = (37 * hash) + UNINTERPRETED_OPTION_FIELD_NUMBER;
+        hash = (53 * hash) + getUninterpretedOptionList().hashCode();
+      }
+      hash = hashFields(hash, getExtensionFields());
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code google.protobuf.ExtensionRangeOptions}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
+          com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.ExtensionRangeOptions)
+        com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.class, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder.class);
+      }
+
+      // Construct using com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+          getUninterpretedOptionFieldBuilder();
+        }
+      }
+      public Builder clear() {
+        super.clear();
+        if (uninterpretedOptionBuilder_ == null) {
+          uninterpretedOption_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          uninterpretedOptionBuilder_.clear();
+        }
+        return this;
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_descriptor;
+      }
+
+      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions getDefaultInstanceForType() {
+        return com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance();
+      }
+
+      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions build() {
+        com.google.protobuf.DescriptorProtos.ExtensionRangeOptions result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions buildPartial() {
+        com.google.protobuf.DescriptorProtos.ExtensionRangeOptions result = new com.google.protobuf.DescriptorProtos.ExtensionRangeOptions(this);
+        int from_bitField0_ = bitField0_;
+        if (uninterpretedOptionBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.uninterpretedOption_ = uninterpretedOption_;
+        } else {
+          result.uninterpretedOption_ = uninterpretedOptionBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, Type> extension,
+          Type value) {
+        return (Builder) super.setExtension(extension, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, java.util.List<Type>> extension,
+          int index, Type value) {
+        return (Builder) super.setExtension(extension, index, value);
+      }
+      public <Type> Builder addExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, java.util.List<Type>> extension,
+          Type value) {
+        return (Builder) super.addExtension(extension, value);
+      }
+      public <Type> Builder clearExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, ?> extension) {
+        return (Builder) super.clearExtension(extension);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof com.google.protobuf.DescriptorProtos.ExtensionRangeOptions) {
+          return mergeFrom((com.google.protobuf.DescriptorProtos.ExtensionRangeOptions)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions other) {
+        if (other == com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance()) return this;
+        if (uninterpretedOptionBuilder_ == null) {
+          if (!other.uninterpretedOption_.isEmpty()) {
+            if (uninterpretedOption_.isEmpty()) {
+              uninterpretedOption_ = other.uninterpretedOption_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureUninterpretedOptionIsMutable();
+              uninterpretedOption_.addAll(other.uninterpretedOption_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.uninterpretedOption_.isEmpty()) {
+            if (uninterpretedOptionBuilder_.isEmpty()) {
+              uninterpretedOptionBuilder_.dispose();
+              uninterpretedOptionBuilder_ = null;
+              uninterpretedOption_ = other.uninterpretedOption_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              uninterpretedOptionBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getUninterpretedOptionFieldBuilder() : null;
+            } else {
+              uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_);
+            }
+          }
+        }
+        this.mergeExtensionFields(other);
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getUninterpretedOptionCount(); i++) {
+          if (!getUninterpretedOption(i).isInitialized()) {
+            return false;
+          }
+        }
+        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.DescriptorProtos.ExtensionRangeOptions parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (com.google.protobuf.DescriptorProtos.ExtensionRangeOptions) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
+        java.util.Collections.emptyList();
+      private void ensureUninterpretedOptionIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_;
+
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+        if (uninterpretedOptionBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(uninterpretedOption_);
+        } else {
+          return uninterpretedOptionBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public int getUninterpretedOptionCount() {
+        if (uninterpretedOptionBuilder_ == null) {
+          return uninterpretedOption_.size();
+        } else {
+          return uninterpretedOptionBuilder_.getCount();
+        }
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+        if (uninterpretedOptionBuilder_ == null) {
+          return uninterpretedOption_.get(index);
+        } else {
+          return uninterpretedOptionBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder setUninterpretedOption(
+          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
+        if (uninterpretedOptionBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.set(index, value);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder setUninterpretedOption(
+          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
+        if (uninterpretedOptionBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.add(value);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder addUninterpretedOption(
+          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
+        if (uninterpretedOptionBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.add(index, value);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder addUninterpretedOption(
+          com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.add(builderForValue.build());
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder addUninterpretedOption(
+          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder addAllUninterpretedOption(
+          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, uninterpretedOption_);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder clearUninterpretedOption() {
+        if (uninterpretedOptionBuilder_ == null) {
+          uninterpretedOption_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder removeUninterpretedOption(int index) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.remove(index);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder(
+          int index) {
+        return getUninterpretedOptionFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+          int index) {
+        if (uninterpretedOptionBuilder_ == null) {
+          return uninterpretedOption_.get(index);  } else {
+          return uninterpretedOptionBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
+           getUninterpretedOptionOrBuilderList() {
+        if (uninterpretedOptionBuilder_ != null) {
+          return uninterpretedOptionBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(uninterpretedOption_);
+        }
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() {
+        return getUninterpretedOptionFieldBuilder().addBuilder(
+            com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance());
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder(
+          int index) {
+        return getUninterpretedOptionFieldBuilder().addBuilder(
+            index, com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance());
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> 
+           getUninterpretedOptionBuilderList() {
+        return getUninterpretedOptionFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
+          getUninterpretedOptionFieldBuilder() {
+        if (uninterpretedOptionBuilder_ == null) {
+          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
+                  uninterpretedOption_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          uninterpretedOption_ = null;
+        }
+        return uninterpretedOptionBuilder_;
+      }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:google.protobuf.ExtensionRangeOptions)
+    }
+
+    // @@protoc_insertion_point(class_scope:google.protobuf.ExtensionRangeOptions)
+    private static final com.google.protobuf.DescriptorProtos.ExtensionRangeOptions DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.ExtensionRangeOptions();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<ExtensionRangeOptions>
+        PARSER = new com.google.protobuf.AbstractParser<ExtensionRangeOptions>() {
+      public ExtensionRangeOptions parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new ExtensionRangeOptions(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<ExtensionRangeOptions> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ExtensionRangeOptions> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface FieldDescriptorProtoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.FieldDescriptorProto)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>optional string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>optional string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    /**
+     * <code>optional int32 number = 3;</code>
+     */
+    boolean hasNumber();
+    /**
+     * <code>optional int32 number = 3;</code>
+     */
+    int getNumber();
+
+    /**
+     * <code>optional .google.protobuf.FieldDescriptorProto.Label label = 4;</code>
+     */
+    boolean hasLabel();
+    /**
+     * <code>optional .google.protobuf.FieldDescriptorProto.Label label = 4;</code>
+     */
+    com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel();
+
+    /**
+     * <pre>
+     * If type_name is set, this need not be set.  If both this and type_name
+     * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
+     * </pre>
+     *
+     * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
+     */
+    boolean hasType();
+    /**
+     * <pre>
+     * If type_name is set, this need not be set.  If both this and type_name
+     * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
+     * </pre>
+     *
+     * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
+     */
+    com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType();
+
+    /**
+     * <pre>
+     * For message and enum types, this is the name of the type.  If the name
+     * starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
+     * rules are used to find the type (i.e. first the nested types within this
+     * message are searched, then within the parent, on up to the root
+     * namespace).
+     * </pre>
+     *
+     * <code>optional string type_name = 6;</code>
+     */
+    boolean hasTypeName();
+    /**
+     * <pre>
+     * For message and enum types, this is the name of the type.  If the name
+     * starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
+     * rules are used to find the type (i.e. first the nested types within this
+     * message are searched, then within the parent, on up to the root
+     * namespace).
+     * </pre>
+     *
+     * <code>optional string type_name = 6;</code>
+     */
+    java.lang.String getTypeName();
+    /**
+     * <pre>
+     * For message and enum types, this is the name of the type.  If the name
+     * starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
+     * rules are used to find the type (i.e. first the nested types within this
+     * message are searched, then within the parent, on up to the root
+     * namespace).
+     * </pre>
+     *
+     * <code>optional string type_name = 6;</code>
+     */
+    com.google.protobuf.ByteString
+        getTypeNameBytes();
+
+    /**
+     * <pre>
+     * For extensions, this is the name of the type being extended.  It is
+     * resolved in the same manner as type_name.
+     * </pre>
+     *
+     * <code>optional string extendee = 2;</code>
+     */
+    boolean hasExtendee();
+    /**
+     * <pre>
+     * For extensions, this is the name of the type being extended.  It is
+     * resolved in the same manner as type_name.
+     * </pre>
+     *
+     * <code>optional string extendee = 2;</code>
+     */
+    java.lang.String getExtendee();
+    /**
+     * <pre>
+     * For extensions, this is the name of the type being extended.  It is
+     * resolved in the same manner as type_name.
+     * </pre>
+     *
+     * <code>optional string extendee = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getExtendeeBytes();
+
+    /**
+     * <pre>
+     * For numeric types, contains the original text representation of the value.
+     * For booleans, "true" or "false".
+     * For strings, contains the default text contents (not escaped in any way).
+     * For bytes, contains the C escaped value.  All bytes &gt;= 128 are escaped.
+     * TODO(kenton):  Base-64 encode?
+     * </pre>
+     *
+     * <code>optional string default_value = 7;</code>
+     */
+    boolean hasDefaultValue();
+    /**
+     * <pre>
+     * For numeric types, contains the original text representation of the value.
+     * For booleans, "true" or "false".
+     * For strings, contains the default text contents (not escaped in any way).
+     * For bytes, contains the C escaped value.  All bytes &gt;= 128 are escaped.
+     * TODO(kenton):  Base-64 encode?
+     * </pre>
+     *
+     * <code>optional string default_value = 7;</code>
+     */
+    java.lang.String getDefaultValue();
+    /**
+     * <pre>
+     * For numeric types, contains the original text representation of the value.
+     * For booleans, "true" or "false".
+     * For strings, contains the default text contents (not escaped in any way).
+     * For bytes, contains the C escaped value.  All bytes &gt;= 128 are escaped.
+     * TODO(kenton):  Base-64 encode?
+     * </pre>
+     *
+     * <code>optional string default_value = 7;</code>
+     */
+    com.google.protobuf.ByteString
+        getDefaultValueBytes();
+
+    /**
+     * <pre>
+     * If set, gives the index of a oneof in the containing type's oneof_decl
+     * list.  This field is a member of that oneof.
+     * </pre>
+     *
+     * <code>optional int32 oneof_index = 9;</code>
+     */
+    boolean hasOneofIndex();
+    /**
+     * <pre>
+     * If set, gives the index of a oneof in the containing type's oneof_decl
+     * list.  This field is a member of that oneof.
+     * </pre>
+     *
+     * <code>optional int32 oneof_index = 9;</code>
+     */
+    int getOneofIndex();
+
+    /**
+     * <pre>
+     * JSON name of this field. The value is set by protocol compiler. If the
+     * user has set a "json_name" option on this field, that option's value
+     * will be used. Otherwise, it's deduced from the field's name by converting
+     * it to camelCase.
+     * </pre>
+     *
+     * <code>optional string json_name = 10;</code>
+     */
+    boolean hasJsonName();
+    /**
+     * <pre>
+     * JSON name of this field. The value is set by protocol compiler. If the
+     * user has set a "json_name" option on this field, that option's value
+     * will be used. Otherwise, it's deduced from the field's name by converting
+     * it to camelCase.
+     * </pre>
+     *
+     * <code>optional string json_name = 10;</code>
+     */
+    java.lang.String getJsonName();
+    /**
+     * <pre>
+     * JSON name of this field. The value is set by protocol compiler. If the
+     * user has set a "json_name" option on this field, that option's value
+     * will be used. Otherwise, it's deduced from the field's name by converting
+     * it to camelCase.
+     * </pre>
+     *
+     * <code>optional string json_name = 10;</code>
+     */
+    com.google.protobuf.ByteString
+        getJsonNameBytes();
+
+    /**
+     * <code>optional .google.protobuf.FieldOptions options = 8;</code>
+     */
+    boolean hasOptions();
+    /**
+     * <code>optional .google.protobuf.FieldOptions options = 8;</code>
+     */
+    com.google.protobuf.DescriptorProtos.FieldOptions getOptions();
+    /**
+     * <code>optional .google.protobuf.FieldOptions options = 8;</code>
+     */
+    com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder getOptionsOrBuilder();
+  }
+  /**
+   * <pre>
+   * Describes a field within a message.
+   * </pre>
+   *
+   * Protobuf type {@code google.protobuf.FieldDescriptorProto}
+   */
+  public  static final class FieldDescriptorProto extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.FieldDescriptorProto)
+      FieldDescriptorProtoOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use FieldDescriptorProto.newBuilder() to construct.
+    private FieldDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private FieldDescriptorProto() {
+      name_ = "";
+      number_ = 0;
+      label_ = 1;
+      type_ = 1;
+      typeName_ = "";
+      extendee_ = "";
+      defaultValue_ = "";
+      oneofIndex_ = 0;
+      jsonName_ = "";
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private FieldDescriptorProto(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -8094,5 +10993,5 @@
               } else {
                 bitField0_ |= 0x00000004;
-                label_ = value;
+                label_ = rawValue;
               }
               break;
@@ -8105,5 +11004,5 @@
               } else {
                 bitField0_ |= 0x00000008;
-                type_ = value;
+                type_ = rawValue;
               }
               break;
@@ -8123,5 +11022,5 @@
             case 66: {
               com.google.protobuf.DescriptorProtos.FieldOptions.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+              if (((bitField0_ & 0x00000200) == 0x00000200)) {
                 subBuilder = options_.toBuilder();
               }
@@ -8131,5 +11030,5 @@
                 options_ = subBuilder.buildPartial();
               }
-              bitField0_ |= 0x00000100;
+              bitField0_ |= 0x00000200;
               break;
             }
@@ -8139,4 +11038,10 @@
               break;
             }
+            case 82: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000100;
+              jsonName_ = bs;
+              break;
+            }
           }
         }
@@ -8145,5 +11050,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
@@ -8156,6 +11061,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable
@@ -8164,20 +11068,4 @@
     }
 
-    public static com.google.protobuf.Parser<FieldDescriptorProto> PARSER =
-        new com.google.protobuf.AbstractParser<FieldDescriptorProto>() {
-      @Override
-	public FieldDescriptorProto parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new FieldDescriptorProto(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<FieldDescriptorProto> getParserForType() {
-      return PARSER;
-    }
-
     /**
      * Protobuf enum {@code google.protobuf.FieldDescriptorProto.Type}
@@ -8186,119 +11074,122 @@
         implements com.google.protobuf.ProtocolMessageEnum {
       /**
-       * <code>TYPE_DOUBLE = 1;</code>
-       *
        * <pre>
        * 0 is reserved for errors.
        * Order is weird for historical reasons.
        * </pre>
-       */
-      TYPE_DOUBLE(0, 1),
+       *
+       * <code>TYPE_DOUBLE = 1;</code>
+       */
+      TYPE_DOUBLE(1),
       /**
        * <code>TYPE_FLOAT = 2;</code>
        */
-      TYPE_FLOAT(1, 2),
-      /**
-       * <code>TYPE_INT64 = 3;</code>
-       *
+      TYPE_FLOAT(2),
+      /**
        * <pre>
        * Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
        * negative values are likely.
        * </pre>
-       */
-      TYPE_INT64(2, 3),
+       *
+       * <code>TYPE_INT64 = 3;</code>
+       */
+      TYPE_INT64(3),
       /**
        * <code>TYPE_UINT64 = 4;</code>
        */
-      TYPE_UINT64(3, 4),
-      /**
-       * <code>TYPE_INT32 = 5;</code>
-       *
+      TYPE_UINT64(4),
+      /**
        * <pre>
        * Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
        * negative values are likely.
        * </pre>
-       */
-      TYPE_INT32(4, 5),
+       *
+       * <code>TYPE_INT32 = 5;</code>
+       */
+      TYPE_INT32(5),
       /**
        * <code>TYPE_FIXED64 = 6;</code>
        */
-      TYPE_FIXED64(5, 6),
+      TYPE_FIXED64(6),
       /**
        * <code>TYPE_FIXED32 = 7;</code>
        */
-      TYPE_FIXED32(6, 7),
+      TYPE_FIXED32(7),
       /**
        * <code>TYPE_BOOL = 8;</code>
        */
-      TYPE_BOOL(7, 8),
+      TYPE_BOOL(8),
       /**
        * <code>TYPE_STRING = 9;</code>
        */
-      TYPE_STRING(8, 9),
-      /**
+      TYPE_STRING(9),
+      /**
+       * <pre>
+       * Tag-delimited aggregate.
+       * Group type is deprecated and not supported in proto3. However, Proto3
+       * implementations should still be able to parse the group wire format and
+       * treat group fields as unknown fields.
+       * </pre>
+       *
        * <code>TYPE_GROUP = 10;</code>
-       *
-       * <pre>
-       * Tag-delimited aggregate.
-       * </pre>
-       */
-      TYPE_GROUP(9, 10),
-      /**
+       */
+      TYPE_GROUP(10),
+      /**
+       * <pre>
+       * Length-delimited aggregate.
+       * </pre>
+       *
        * <code>TYPE_MESSAGE = 11;</code>
-       *
-       * <pre>
-       * Length-delimited aggregate.
-       * </pre>
-       */
-      TYPE_MESSAGE(10, 11),
-      /**
+       */
+      TYPE_MESSAGE(11),
+      /**
+       * <pre>
+       * New in version 2.
+       * </pre>
+       *
        * <code>TYPE_BYTES = 12;</code>
-       *
-       * <pre>
-       * New in version 2.
-       * </pre>
-       */
-      TYPE_BYTES(11, 12),
+       */
+      TYPE_BYTES(12),
       /**
        * <code>TYPE_UINT32 = 13;</code>
        */
-      TYPE_UINT32(12, 13),
+      TYPE_UINT32(13),
       /**
        * <code>TYPE_ENUM = 14;</code>
        */
-      TYPE_ENUM(13, 14),
+      TYPE_ENUM(14),
       /**
        * <code>TYPE_SFIXED32 = 15;</code>
        */
-      TYPE_SFIXED32(14, 15),
+      TYPE_SFIXED32(15),
       /**
        * <code>TYPE_SFIXED64 = 16;</code>
        */
-      TYPE_SFIXED64(15, 16),
-      /**
+      TYPE_SFIXED64(16),
+      /**
+       * <pre>
+       * Uses ZigZag encoding.
+       * </pre>
+       *
        * <code>TYPE_SINT32 = 17;</code>
-       *
+       */
+      TYPE_SINT32(17),
+      /**
        * <pre>
        * Uses ZigZag encoding.
        * </pre>
-       */
-      TYPE_SINT32(16, 17),
-      /**
+       *
        * <code>TYPE_SINT64 = 18;</code>
-       *
-       * <pre>
-       * Uses ZigZag encoding.
-       * </pre>
-       */
-      TYPE_SINT64(17, 18),
+       */
+      TYPE_SINT64(18),
       ;
 
       /**
-       * <code>TYPE_DOUBLE = 1;</code>
-       *
        * <pre>
        * 0 is reserved for errors.
        * Order is weird for historical reasons.
        * </pre>
+       *
+       * <code>TYPE_DOUBLE = 1;</code>
        */
       public static final int TYPE_DOUBLE_VALUE = 1;
@@ -8308,10 +11199,10 @@
       public static final int TYPE_FLOAT_VALUE = 2;
       /**
-       * <code>TYPE_INT64 = 3;</code>
-       *
        * <pre>
        * Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
        * negative values are likely.
        * </pre>
+       *
+       * <code>TYPE_INT64 = 3;</code>
        */
       public static final int TYPE_INT64_VALUE = 3;
@@ -8321,10 +11212,10 @@
       public static final int TYPE_UINT64_VALUE = 4;
       /**
-       * <code>TYPE_INT32 = 5;</code>
-       *
        * <pre>
        * Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
        * negative values are likely.
        * </pre>
+       *
+       * <code>TYPE_INT32 = 5;</code>
        */
       public static final int TYPE_INT32_VALUE = 5;
@@ -8346,25 +11237,28 @@
       public static final int TYPE_STRING_VALUE = 9;
       /**
+       * <pre>
+       * Tag-delimited aggregate.
+       * Group type is deprecated and not supported in proto3. However, Proto3
+       * implementations should still be able to parse the group wire format and
+       * treat group fields as unknown fields.
+       * </pre>
+       *
        * <code>TYPE_GROUP = 10;</code>
-       *
-       * <pre>
-       * Tag-delimited aggregate.
-       * </pre>
        */
       public static final int TYPE_GROUP_VALUE = 10;
       /**
+       * <pre>
+       * Length-delimited aggregate.
+       * </pre>
+       *
        * <code>TYPE_MESSAGE = 11;</code>
-       *
-       * <pre>
-       * Length-delimited aggregate.
-       * </pre>
        */
       public static final int TYPE_MESSAGE_VALUE = 11;
       /**
+       * <pre>
+       * New in version 2.
+       * </pre>
+       *
        * <code>TYPE_BYTES = 12;</code>
-       *
-       * <pre>
-       * New in version 2.
-       * </pre>
        */
       public static final int TYPE_BYTES_VALUE = 12;
@@ -8386,25 +11280,34 @@
       public static final int TYPE_SFIXED64_VALUE = 16;
       /**
+       * <pre>
+       * Uses ZigZag encoding.
+       * </pre>
+       *
        * <code>TYPE_SINT32 = 17;</code>
-       *
+       */
+      public static final int TYPE_SINT32_VALUE = 17;
+      /**
        * <pre>
        * Uses ZigZag encoding.
        * </pre>
-       */
-      public static final int TYPE_SINT32_VALUE = 17;
-      /**
+       *
        * <code>TYPE_SINT64 = 18;</code>
-       *
-       * <pre>
-       * Uses ZigZag encoding.
-       * </pre>
        */
       public static final int TYPE_SINT64_VALUE = 18;
 
 
-      @Override
-	public final int getNumber() { return value; }
-
+      public final int getNumber() {
+        return value;
+      }
+
+      /**
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
       public static Type valueOf(int value) {
+        return forNumber(value);
+      }
+
+      public static Type forNumber(int value) {
         switch (value) {
           case 1: return TYPE_DOUBLE;
@@ -8434,20 +11337,17 @@
         return internalValueMap;
       }
-      private static com.google.protobuf.Internal.EnumLiteMap<Type>
-          internalValueMap =
+      private static final com.google.protobuf.Internal.EnumLiteMap<
+          Type> internalValueMap =
             new com.google.protobuf.Internal.EnumLiteMap<Type>() {
-              @Override
-			public Type findValueByNumber(int number) {
-                return Type.valueOf(number);
+              public Type findValueByNumber(int number) {
+                return Type.forNumber(number);
               }
             };
 
-      @Override
-	public final com.google.protobuf.Descriptors.EnumValueDescriptor
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
           getValueDescriptor() {
-        return getDescriptor().getValues().get(index);
-      }
-      @Override
-	public final com.google.protobuf.Descriptors.EnumDescriptor
+        return getDescriptor().getValues().get(ordinal());
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptorForType() {
         return getDescriptor();
@@ -8469,9 +11369,7 @@
       }
 
-      private final int index;
       private final int value;
 
-      private Type(int index, int value) {
-        this.index = index;
+      private Type(int value) {
         this.value = value;
       }
@@ -8486,51 +11384,52 @@
         implements com.google.protobuf.ProtocolMessageEnum {
       /**
+       * <pre>
+       * 0 is reserved for errors
+       * </pre>
+       *
        * <code>LABEL_OPTIONAL = 1;</code>
-       *
+       */
+      LABEL_OPTIONAL(1),
+      /**
+       * <code>LABEL_REQUIRED = 2;</code>
+       */
+      LABEL_REQUIRED(2),
+      /**
+       * <code>LABEL_REPEATED = 3;</code>
+       */
+      LABEL_REPEATED(3),
+      ;
+
+      /**
        * <pre>
        * 0 is reserved for errors
        * </pre>
-       */
-      LABEL_OPTIONAL(0, 1),
+       *
+       * <code>LABEL_OPTIONAL = 1;</code>
+       */
+      public static final int LABEL_OPTIONAL_VALUE = 1;
       /**
        * <code>LABEL_REQUIRED = 2;</code>
        */
-      LABEL_REQUIRED(1, 2),
+      public static final int LABEL_REQUIRED_VALUE = 2;
       /**
        * <code>LABEL_REPEATED = 3;</code>
-       *
-       * <pre>
-       * TODO(sanjay): Should we add LABEL_MAP?
-       * </pre>
-       */
-      LABEL_REPEATED(2, 3),
-      ;
-
-      /**
-       * <code>LABEL_OPTIONAL = 1;</code>
-       *
-       * <pre>
-       * 0 is reserved for errors
-       * </pre>
-       */
-      public static final int LABEL_OPTIONAL_VALUE = 1;
-      /**
-       * <code>LABEL_REQUIRED = 2;</code>
-       */
-      public static final int LABEL_REQUIRED_VALUE = 2;
-      /**
-       * <code>LABEL_REPEATED = 3;</code>
-       *
-       * <pre>
-       * TODO(sanjay): Should we add LABEL_MAP?
-       * </pre>
        */
       public static final int LABEL_REPEATED_VALUE = 3;
 
 
-      @Override
-	public final int getNumber() { return value; }
-
+      public final int getNumber() {
+        return value;
+      }
+
+      /**
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
       public static Label valueOf(int value) {
+        return forNumber(value);
+      }
+
+      public static Label forNumber(int value) {
         switch (value) {
           case 1: return LABEL_OPTIONAL;
@@ -8545,20 +11444,17 @@
         return internalValueMap;
       }
-      private static com.google.protobuf.Internal.EnumLiteMap<Label>
-          internalValueMap =
+      private static final com.google.protobuf.Internal.EnumLiteMap<
+          Label> internalValueMap =
             new com.google.protobuf.Internal.EnumLiteMap<Label>() {
-              @Override
-			public Label findValueByNumber(int number) {
-                return Label.valueOf(number);
+              public Label findValueByNumber(int number) {
+                return Label.forNumber(number);
               }
             };
 
-      @Override
-	public final com.google.protobuf.Descriptors.EnumValueDescriptor
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
           getValueDescriptor() {
-        return getDescriptor().getValues().get(index);
-      }
-      @Override
-	public final com.google.protobuf.Descriptors.EnumDescriptor
+        return getDescriptor().getValues().get(ordinal());
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptorForType() {
         return getDescriptor();
@@ -8580,9 +11476,7 @@
       }
 
-      private final int index;
       private final int value;
 
-      private Label(int index, int value) {
-        this.index = index;
+      private Label(int value) {
         this.value = value;
       }
@@ -8593,10 +11487,9 @@
     private int bitField0_;
     public static final int NAME_FIELD_NUMBER = 1;
-    private java.lang.Object name_;
+    private volatile java.lang.Object name_;
     /**
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public boolean hasName() {
+    public boolean hasName() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -8604,11 +11497,10 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public java.lang.String getName() {
+    public java.lang.String getName() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -8622,10 +11514,9 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString
+    public com.google.protobuf.ByteString
         getNameBytes() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -8642,6 +11533,5 @@
      * <code>optional int32 number = 3;</code>
      */
-    @Override
-	public boolean hasNumber() {
+    public boolean hasNumber() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
@@ -8649,16 +11539,14 @@
      * <code>optional int32 number = 3;</code>
      */
-    @Override
-	public int getNumber() {
+    public int getNumber() {
       return number_;
     }
 
     public static final int LABEL_FIELD_NUMBER = 4;
-    private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label label_;
+    private int label_;
     /**
      * <code>optional .google.protobuf.FieldDescriptorProto.Label label = 4;</code>
      */
-    @Override
-	public boolean hasLabel() {
+    public boolean hasLabel() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
@@ -8666,41 +11554,38 @@
      * <code>optional .google.protobuf.FieldDescriptorProto.Label label = 4;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel() {
-      return label_;
+    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel() {
+      com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label result = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.valueOf(label_);
+      return result == null ? com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL : result;
     }
 
     public static final int TYPE_FIELD_NUMBER = 5;
-    private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type type_;
-    /**
-     * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
-     *
+    private int type_;
+    /**
      * <pre>
      * If type_name is set, this need not be set.  If both this and type_name
      * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
      * </pre>
-     */
-    @Override
-	public boolean hasType() {
+     *
+     * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
+     */
+    public boolean hasType() {
       return ((bitField0_ & 0x00000008) == 0x00000008);
     }
     /**
-     * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
-     *
      * <pre>
      * If type_name is set, this need not be set.  If both this and type_name
      * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType() {
-      return type_;
+     *
+     * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType() {
+      com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type result = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.valueOf(type_);
+      return result == null ? com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE : result;
     }
 
     public static final int TYPE_NAME_FIELD_NUMBER = 6;
-    private java.lang.Object typeName_;
-    /**
-     * <code>optional string type_name = 6;</code>
-     *
+    private volatile java.lang.Object typeName_;
+    /**
      * <pre>
      * For message and enum types, this is the name of the type.  If the name
@@ -8710,12 +11595,11 @@
      * namespace).
      * </pre>
-     */
-    @Override
-	public boolean hasTypeName() {
+     *
+     * <code>optional string type_name = 6;</code>
+     */
+    public boolean hasTypeName() {
       return ((bitField0_ & 0x00000010) == 0x00000010);
     }
     /**
-     * <code>optional string type_name = 6;</code>
-     *
      * <pre>
      * For message and enum types, this is the name of the type.  If the name
@@ -8725,12 +11609,13 @@
      * namespace).
      * </pre>
-     */
-    @Override
-	public java.lang.String getTypeName() {
+     *
+     * <code>optional string type_name = 6;</code>
+     */
+    public java.lang.String getTypeName() {
       java.lang.Object ref = typeName_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -8742,6 +11627,4 @@
     }
     /**
-     * <code>optional string type_name = 6;</code>
-     *
      * <pre>
      * For message and enum types, this is the name of the type.  If the name
@@ -8751,11 +11634,12 @@
      * namespace).
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
+     *
+     * <code>optional string type_name = 6;</code>
+     */
+    public com.google.protobuf.ByteString
         getTypeNameBytes() {
       java.lang.Object ref = typeName_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -8768,32 +11652,30 @@
 
     public static final int EXTENDEE_FIELD_NUMBER = 2;
-    private java.lang.Object extendee_;
-    /**
-     * <code>optional string extendee = 2;</code>
-     *
+    private volatile java.lang.Object extendee_;
+    /**
      * <pre>
      * For extensions, this is the name of the type being extended.  It is
      * resolved in the same manner as type_name.
      * </pre>
-     */
-    @Override
-	public boolean hasExtendee() {
+     *
+     * <code>optional string extendee = 2;</code>
+     */
+    public boolean hasExtendee() {
       return ((bitField0_ & 0x00000020) == 0x00000020);
     }
     /**
-     * <code>optional string extendee = 2;</code>
-     *
      * <pre>
      * For extensions, this is the name of the type being extended.  It is
      * resolved in the same manner as type_name.
      * </pre>
-     */
-    @Override
-	public java.lang.String getExtendee() {
+     *
+     * <code>optional string extendee = 2;</code>
+     */
+    public java.lang.String getExtendee() {
       java.lang.Object ref = extendee_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -8805,17 +11687,16 @@
     }
     /**
-     * <code>optional string extendee = 2;</code>
-     *
      * <pre>
      * For extensions, this is the name of the type being extended.  It is
      * resolved in the same manner as type_name.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
+     *
+     * <code>optional string extendee = 2;</code>
+     */
+    public com.google.protobuf.ByteString
         getExtendeeBytes() {
       java.lang.Object ref = extendee_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -8828,8 +11709,6 @@
 
     public static final int DEFAULT_VALUE_FIELD_NUMBER = 7;
-    private java.lang.Object defaultValue_;
-    /**
-     * <code>optional string default_value = 7;</code>
-     *
+    private volatile java.lang.Object defaultValue_;
+    /**
      * <pre>
      * For numeric types, contains the original text representation of the value.
@@ -8839,12 +11718,11 @@
      * TODO(kenton):  Base-64 encode?
      * </pre>
-     */
-    @Override
-	public boolean hasDefaultValue() {
+     *
+     * <code>optional string default_value = 7;</code>
+     */
+    public boolean hasDefaultValue() {
       return ((bitField0_ & 0x00000040) == 0x00000040);
     }
     /**
-     * <code>optional string default_value = 7;</code>
-     *
      * <pre>
      * For numeric types, contains the original text representation of the value.
@@ -8854,12 +11732,13 @@
      * TODO(kenton):  Base-64 encode?
      * </pre>
-     */
-    @Override
-	public java.lang.String getDefaultValue() {
+     *
+     * <code>optional string default_value = 7;</code>
+     */
+    public java.lang.String getDefaultValue() {
       java.lang.Object ref = defaultValue_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -8871,6 +11750,4 @@
     }
     /**
-     * <code>optional string default_value = 7;</code>
-     *
      * <pre>
      * For numeric types, contains the original text representation of the value.
@@ -8880,11 +11757,12 @@
      * TODO(kenton):  Base-64 encode?
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
+     *
+     * <code>optional string default_value = 7;</code>
+     */
+    public com.google.protobuf.ByteString
         getDefaultValueBytes() {
       java.lang.Object ref = defaultValue_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -8899,30 +11777,87 @@
     private int oneofIndex_;
     /**
-     * <code>optional int32 oneof_index = 9;</code>
-     *
      * <pre>
      * If set, gives the index of a oneof in the containing type's oneof_decl
-     * list.  This field is a member of that oneof.  Extensions of a oneof should
-     * not set this since the oneof to which they belong will be inferred based
-     * on the extension range containing the extension's field number.
+     * list.  This field is a member of that oneof.
      * </pre>
-     */
-    @Override
-	public boolean hasOneofIndex() {
+     *
+     * <code>optional int32 oneof_index = 9;</code>
+     */
+    public boolean hasOneofIndex() {
       return ((bitField0_ & 0x00000080) == 0x00000080);
     }
     /**
-     * <code>optional int32 oneof_index = 9;</code>
-     *
      * <pre>
      * If set, gives the index of a oneof in the containing type's oneof_decl
-     * list.  This field is a member of that oneof.  Extensions of a oneof should
-     * not set this since the oneof to which they belong will be inferred based
-     * on the extension range containing the extension's field number.
+     * list.  This field is a member of that oneof.
      * </pre>
-     */
-    @Override
-	public int getOneofIndex() {
+     *
+     * <code>optional int32 oneof_index = 9;</code>
+     */
+    public int getOneofIndex() {
       return oneofIndex_;
+    }
+
+    public static final int JSON_NAME_FIELD_NUMBER = 10;
+    private volatile java.lang.Object jsonName_;
+    /**
+     * <pre>
+     * JSON name of this field. The value is set by protocol compiler. If the
+     * user has set a "json_name" option on this field, that option's value
+     * will be used. Otherwise, it's deduced from the field's name by converting
+     * it to camelCase.
+     * </pre>
+     *
+     * <code>optional string json_name = 10;</code>
+     */
+    public boolean hasJsonName() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <pre>
+     * JSON name of this field. The value is set by protocol compiler. If the
+     * user has set a "json_name" option on this field, that option's value
+     * will be used. Otherwise, it's deduced from the field's name by converting
+     * it to camelCase.
+     * </pre>
+     *
+     * <code>optional string json_name = 10;</code>
+     */
+    public java.lang.String getJsonName() {
+      java.lang.Object ref = jsonName_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          jsonName_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     * JSON name of this field. The value is set by protocol compiler. If the
+     * user has set a "json_name" option on this field, that option's value
+     * will be used. Otherwise, it's deduced from the field's name by converting
+     * it to camelCase.
+     * </pre>
+     *
+     * <code>optional string json_name = 10;</code>
+     */
+    public com.google.protobuf.ByteString
+        getJsonNameBytes() {
+      java.lang.Object ref = jsonName_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        jsonName_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
 
@@ -8932,37 +11867,22 @@
      * <code>optional .google.protobuf.FieldOptions options = 8;</code>
      */
-    @Override
-	public boolean hasOptions() {
-      return ((bitField0_ & 0x00000100) == 0x00000100);
+    public boolean hasOptions() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
     }
     /**
      * <code>optional .google.protobuf.FieldOptions options = 8;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FieldOptions getOptions() {
-      return options_;
+    public com.google.protobuf.DescriptorProtos.FieldOptions getOptions() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance() : options_;
     }
     /**
      * <code>optional .google.protobuf.FieldOptions options = 8;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder getOptionsOrBuilder() {
-      return options_;
-    }
-
-    private void initFields() {
-      name_ = "";
-      number_ = 0;
-      label_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL;
-      type_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE;
-      typeName_ = "";
-      extendee_ = "";
-      defaultValue_ = "";
-      oneofIndex_ = 0;
-      options_ = com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance();
-    }
+    public com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder getOptionsOrBuilder() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance() : options_;
+    }
+
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -8979,13 +11899,11 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(1, getNameBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
       }
       if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        output.writeBytes(2, getExtendeeBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, extendee_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
@@ -8993,38 +11911,37 @@
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeEnum(4, label_.getNumber());
+        output.writeEnum(4, label_);
       }
       if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        output.writeEnum(5, type_.getNumber());
+        output.writeEnum(5, type_);
       }
       if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        output.writeBytes(6, getTypeNameBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, typeName_);
       }
       if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        output.writeBytes(7, getDefaultValueBytes());
-      }
-      if (((bitField0_ & 0x00000100) == 0x00000100)) {
-        output.writeMessage(8, options_);
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, defaultValue_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(8, getOptions());
       }
       if (((bitField0_ & 0x00000080) == 0x00000080)) {
         output.writeInt32(9, oneofIndex_);
       }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, jsonName_);
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(1, getNameBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
       }
       if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getExtendeeBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, extendee_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
@@ -9034,21 +11951,19 @@
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(4, label_.getNumber());
+          .computeEnumSize(4, label_);
       }
       if (((bitField0_ & 0x00000008) == 0x00000008)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(5, type_.getNumber());
+          .computeEnumSize(5, type_);
       }
       if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, typeName_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, defaultValue_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(6, getTypeNameBytes());
-      }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(7, getDefaultValueBytes());
-      }
-      if (((bitField0_ & 0x00000100) == 0x00000100)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, options_);
+          .computeMessageSize(8, getOptions());
       }
       if (((bitField0_ & 0x00000080) == 0x00000080)) {
@@ -9056,16 +11971,138 @@
           .computeInt32Size(9, oneofIndex_);
       }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, jsonName_);
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.FieldDescriptorProto)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.FieldDescriptorProto other = (com.google.protobuf.DescriptorProtos.FieldDescriptorProto) obj;
+
+      boolean result = true;
+      result = result && (hasName() == other.hasName());
+      if (hasName()) {
+        result = result && getName()
+            .equals(other.getName());
+      }
+      result = result && (hasNumber() == other.hasNumber());
+      if (hasNumber()) {
+        result = result && (getNumber()
+            == other.getNumber());
+      }
+      result = result && (hasLabel() == other.hasLabel());
+      if (hasLabel()) {
+        result = result && label_ == other.label_;
+      }
+      result = result && (hasType() == other.hasType());
+      if (hasType()) {
+        result = result && type_ == other.type_;
+      }
+      result = result && (hasTypeName() == other.hasTypeName());
+      if (hasTypeName()) {
+        result = result && getTypeName()
+            .equals(other.getTypeName());
+      }
+      result = result && (hasExtendee() == other.hasExtendee());
+      if (hasExtendee()) {
+        result = result && getExtendee()
+            .equals(other.getExtendee());
+      }
+      result = result && (hasDefaultValue() == other.hasDefaultValue());
+      if (hasDefaultValue()) {
+        result = result && getDefaultValue()
+            .equals(other.getDefaultValue());
+      }
+      result = result && (hasOneofIndex() == other.hasOneofIndex());
+      if (hasOneofIndex()) {
+        result = result && (getOneofIndex()
+            == other.getOneofIndex());
+      }
+      result = result && (hasJsonName() == other.hasJsonName());
+      if (hasJsonName()) {
+        result = result && getJsonName()
+            .equals(other.getJsonName());
+      }
+      result = result && (hasOptions() == other.hasOptions());
+      if (hasOptions()) {
+        result = result && getOptions()
+            .equals(other.getOptions());
+      }
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasName()) {
+        hash = (37 * hash) + NAME_FIELD_NUMBER;
+        hash = (53 * hash) + getName().hashCode();
+      }
+      if (hasNumber()) {
+        hash = (37 * hash) + NUMBER_FIELD_NUMBER;
+        hash = (53 * hash) + getNumber();
+      }
+      if (hasLabel()) {
+        hash = (37 * hash) + LABEL_FIELD_NUMBER;
+        hash = (53 * hash) + label_;
+      }
+      if (hasType()) {
+        hash = (37 * hash) + TYPE_FIELD_NUMBER;
+        hash = (53 * hash) + type_;
+      }
+      if (hasTypeName()) {
+        hash = (37 * hash) + TYPE_NAME_FIELD_NUMBER;
+        hash = (53 * hash) + getTypeName().hashCode();
+      }
+      if (hasExtendee()) {
+        hash = (37 * hash) + EXTENDEE_FIELD_NUMBER;
+        hash = (53 * hash) + getExtendee().hashCode();
+      }
+      if (hasDefaultValue()) {
+        hash = (37 * hash) + DEFAULT_VALUE_FIELD_NUMBER;
+        hash = (53 * hash) + getDefaultValue().hashCode();
+      }
+      if (hasOneofIndex()) {
+        hash = (37 * hash) + ONEOF_INDEX_FIELD_NUMBER;
+        hash = (53 * hash) + getOneofIndex();
+      }
+      if (hasJsonName()) {
+        hash = (37 * hash) + JSON_NAME_FIELD_NUMBER;
+        hash = (53 * hash) + getJsonName().hashCode();
+      }
+      if (hasOptions()) {
+        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
+        hash = (53 * hash) + getOptions().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
         com.google.protobuf.ByteString data)
@@ -9091,5 +12128,6 @@
     public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
@@ -9097,9 +12135,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseDelimitedFrom(
@@ -9107,10 +12147,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
@@ -9118,31 +12160,35 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FieldDescriptorProto prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
     /**
-     * Protobuf type {@code google.protobuf.FieldDescriptorProto}
-     *
      * <pre>
      * Describes a field within a message.
      * </pre>
+     *
+     * Protobuf type {@code google.protobuf.FieldDescriptorProto}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.FieldDescriptorProto)
         com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder {
@@ -9152,6 +12198,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable
@@ -9166,19 +12211,15 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getOptionsFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         name_ = "";
@@ -9186,7 +12227,7 @@
         number_ = 0;
         bitField0_ = (bitField0_ & ~0x00000002);
-        label_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL;
+        label_ = 1;
         bitField0_ = (bitField0_ & ~0x00000004);
-        type_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE;
+        type_ = 1;
         bitField0_ = (bitField0_ & ~0x00000008);
         typeName_ = "";
@@ -9198,31 +12239,25 @@
         oneofIndex_ = 0;
         bitField0_ = (bitField0_ & ~0x00000080);
+        jsonName_ = "";
+        bitField0_ = (bitField0_ & ~0x00000100);
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance();
+          options_ = null;
         } else {
           optionsBuilder_.clear();
         }
-        bitField0_ = (bitField0_ & ~0x00000100);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto build() {
+      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto build() {
         com.google.protobuf.DescriptorProtos.FieldDescriptorProto result = buildPartial();
         if (!result.isInitialized()) {
@@ -9232,6 +12267,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto buildPartial() {
+      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto buildPartial() {
         com.google.protobuf.DescriptorProtos.FieldDescriptorProto result = new com.google.protobuf.DescriptorProtos.FieldDescriptorProto(this);
         int from_bitField0_ = bitField0_;
@@ -9272,4 +12306,8 @@
           to_bitField0_ |= 0x00000100;
         }
+        result.jsonName_ = jsonName_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
         if (optionsBuilder_ == null) {
           result.options_ = options_;
@@ -9282,6 +12320,31 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.FieldDescriptorProto) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.FieldDescriptorProto)other);
@@ -9326,16 +12389,20 @@
           setOneofIndex(other.getOneofIndex());
         }
+        if (other.hasJsonName()) {
+          bitField0_ |= 0x00000100;
+          jsonName_ = other.jsonName_;
+          onChanged();
+        }
         if (other.hasOptions()) {
           mergeOptions(other.getOptions());
         }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         if (hasOptions()) {
           if (!getOptions().isInitialized()) {
-
             return false;
           }
@@ -9344,6 +12411,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -9354,5 +12420,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.FieldDescriptorProto) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -9368,6 +12434,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public boolean hasName() {
+      public boolean hasName() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
@@ -9375,6 +12440,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public java.lang.String getName() {
+      public java.lang.String getName() {
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
@@ -9393,10 +12457,9 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getNameBytes() {
         java.lang.Object ref = name_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -9447,6 +12510,5 @@
        * <code>optional int32 number = 3;</code>
        */
-      @Override
-	public boolean hasNumber() {
+      public boolean hasNumber() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
@@ -9454,6 +12516,5 @@
        * <code>optional int32 number = 3;</code>
        */
-      @Override
-	public int getNumber() {
+      public int getNumber() {
         return number_;
       }
@@ -9477,10 +12538,9 @@
       }
 
-      private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label label_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL;
+      private int label_ = 1;
       /**
        * <code>optional .google.protobuf.FieldDescriptorProto.Label label = 4;</code>
        */
-      @Override
-	public boolean hasLabel() {
+      public boolean hasLabel() {
         return ((bitField0_ & 0x00000004) == 0x00000004);
       }
@@ -9488,7 +12548,7 @@
        * <code>optional .google.protobuf.FieldDescriptorProto.Label label = 4;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel() {
-        return label_;
+      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel() {
+        com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label result = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.valueOf(label_);
+        return result == null ? com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL : result;
       }
       /**
@@ -9500,5 +12560,5 @@
         }
         bitField0_ |= 0x00000004;
-        label_ = value;
+        label_ = value.getNumber();
         onChanged();
         return this;
@@ -9509,41 +12569,40 @@
       public Builder clearLabel() {
         bitField0_ = (bitField0_ & ~0x00000004);
-        label_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL;
+        label_ = 1;
         onChanged();
         return this;
       }
 
-      private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type type_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE;
-      /**
-       * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
-       *
+      private int type_ = 1;
+      /**
        * <pre>
        * If type_name is set, this need not be set.  If both this and type_name
        * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
        * </pre>
-       */
-      @Override
-	public boolean hasType() {
+       *
+       * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
+       */
+      public boolean hasType() {
         return ((bitField0_ & 0x00000008) == 0x00000008);
       }
       /**
-       * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
-       *
        * <pre>
        * If type_name is set, this need not be set.  If both this and type_name
        * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType() {
-        return type_;
-      }
-      /**
+       *
        * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
-       *
+       */
+      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType() {
+        com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type result = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.valueOf(type_);
+        return result == null ? com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE : result;
+      }
+      /**
        * <pre>
        * If type_name is set, this need not be set.  If both this and type_name
        * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
        * </pre>
+       *
+       * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
        */
       public Builder setType(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type value) {
@@ -9552,19 +12611,19 @@
         }
         bitField0_ |= 0x00000008;
-        type_ = value;
+        type_ = value.getNumber();
         onChanged();
         return this;
       }
       /**
-       * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
-       *
        * <pre>
        * If type_name is set, this need not be set.  If both this and type_name
        * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
        * </pre>
+       *
+       * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
        */
       public Builder clearType() {
         bitField0_ = (bitField0_ & ~0x00000008);
-        type_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE;
+        type_ = 1;
         onChanged();
         return this;
@@ -9573,6 +12632,4 @@
       private java.lang.Object typeName_ = "";
       /**
-       * <code>optional string type_name = 6;</code>
-       *
        * <pre>
        * For message and enum types, this is the name of the type.  If the name
@@ -9582,12 +12639,11 @@
        * namespace).
        * </pre>
-       */
-      @Override
-	public boolean hasTypeName() {
+       *
+       * <code>optional string type_name = 6;</code>
+       */
+      public boolean hasTypeName() {
         return ((bitField0_ & 0x00000010) == 0x00000010);
       }
       /**
-       * <code>optional string type_name = 6;</code>
-       *
        * <pre>
        * For message and enum types, this is the name of the type.  If the name
@@ -9597,7 +12653,8 @@
        * namespace).
        * </pre>
-       */
-      @Override
-	public java.lang.String getTypeName() {
+       *
+       * <code>optional string type_name = 6;</code>
+       */
+      public java.lang.String getTypeName() {
         java.lang.Object ref = typeName_;
         if (!(ref instanceof java.lang.String)) {
@@ -9614,6 +12671,4 @@
       }
       /**
-       * <code>optional string type_name = 6;</code>
-       *
        * <pre>
        * For message and enum types, this is the name of the type.  If the name
@@ -9623,11 +12678,12 @@
        * namespace).
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
+       *
+       * <code>optional string type_name = 6;</code>
+       */
+      public com.google.protobuf.ByteString
           getTypeNameBytes() {
         java.lang.Object ref = typeName_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -9639,6 +12695,4 @@
       }
       /**
-       * <code>optional string type_name = 6;</code>
-       *
        * <pre>
        * For message and enum types, this is the name of the type.  If the name
@@ -9648,4 +12702,6 @@
        * namespace).
        * </pre>
+       *
+       * <code>optional string type_name = 6;</code>
        */
       public Builder setTypeName(
@@ -9660,6 +12716,4 @@
       }
       /**
-       * <code>optional string type_name = 6;</code>
-       *
        * <pre>
        * For message and enum types, this is the name of the type.  If the name
@@ -9669,4 +12723,6 @@
        * namespace).
        * </pre>
+       *
+       * <code>optional string type_name = 6;</code>
        */
       public Builder clearTypeName() {
@@ -9677,6 +12733,4 @@
       }
       /**
-       * <code>optional string type_name = 6;</code>
-       *
        * <pre>
        * For message and enum types, this is the name of the type.  If the name
@@ -9686,4 +12740,6 @@
        * namespace).
        * </pre>
+       *
+       * <code>optional string type_name = 6;</code>
        */
       public Builder setTypeNameBytes(
@@ -9700,25 +12756,23 @@
       private java.lang.Object extendee_ = "";
       /**
-       * <code>optional string extendee = 2;</code>
-       *
        * <pre>
        * For extensions, this is the name of the type being extended.  It is
        * resolved in the same manner as type_name.
        * </pre>
-       */
-      @Override
-	public boolean hasExtendee() {
+       *
+       * <code>optional string extendee = 2;</code>
+       */
+      public boolean hasExtendee() {
         return ((bitField0_ & 0x00000020) == 0x00000020);
       }
       /**
-       * <code>optional string extendee = 2;</code>
-       *
        * <pre>
        * For extensions, this is the name of the type being extended.  It is
        * resolved in the same manner as type_name.
        * </pre>
-       */
-      @Override
-	public java.lang.String getExtendee() {
+       *
+       * <code>optional string extendee = 2;</code>
+       */
+      public java.lang.String getExtendee() {
         java.lang.Object ref = extendee_;
         if (!(ref instanceof java.lang.String)) {
@@ -9735,17 +12789,16 @@
       }
       /**
-       * <code>optional string extendee = 2;</code>
-       *
        * <pre>
        * For extensions, this is the name of the type being extended.  It is
        * resolved in the same manner as type_name.
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
+       *
+       * <code>optional string extendee = 2;</code>
+       */
+      public com.google.protobuf.ByteString
           getExtendeeBytes() {
         java.lang.Object ref = extendee_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -9757,10 +12810,10 @@
       }
       /**
-       * <code>optional string extendee = 2;</code>
-       *
        * <pre>
        * For extensions, this is the name of the type being extended.  It is
        * resolved in the same manner as type_name.
        * </pre>
+       *
+       * <code>optional string extendee = 2;</code>
        */
       public Builder setExtendee(
@@ -9775,10 +12828,10 @@
       }
       /**
-       * <code>optional string extendee = 2;</code>
-       *
        * <pre>
        * For extensions, this is the name of the type being extended.  It is
        * resolved in the same manner as type_name.
        * </pre>
+       *
+       * <code>optional string extendee = 2;</code>
        */
       public Builder clearExtendee() {
@@ -9789,10 +12842,10 @@
       }
       /**
-       * <code>optional string extendee = 2;</code>
-       *
        * <pre>
        * For extensions, this is the name of the type being extended.  It is
        * resolved in the same manner as type_name.
        * </pre>
+       *
+       * <code>optional string extendee = 2;</code>
        */
       public Builder setExtendeeBytes(
@@ -9809,6 +12862,4 @@
       private java.lang.Object defaultValue_ = "";
       /**
-       * <code>optional string default_value = 7;</code>
-       *
        * <pre>
        * For numeric types, contains the original text representation of the value.
@@ -9818,12 +12869,11 @@
        * TODO(kenton):  Base-64 encode?
        * </pre>
-       */
-      @Override
-	public boolean hasDefaultValue() {
+       *
+       * <code>optional string default_value = 7;</code>
+       */
+      public boolean hasDefaultValue() {
         return ((bitField0_ & 0x00000040) == 0x00000040);
       }
       /**
-       * <code>optional string default_value = 7;</code>
-       *
        * <pre>
        * For numeric types, contains the original text representation of the value.
@@ -9833,7 +12883,8 @@
        * TODO(kenton):  Base-64 encode?
        * </pre>
-       */
-      @Override
-	public java.lang.String getDefaultValue() {
+       *
+       * <code>optional string default_value = 7;</code>
+       */
+      public java.lang.String getDefaultValue() {
         java.lang.Object ref = defaultValue_;
         if (!(ref instanceof java.lang.String)) {
@@ -9850,6 +12901,4 @@
       }
       /**
-       * <code>optional string default_value = 7;</code>
-       *
        * <pre>
        * For numeric types, contains the original text representation of the value.
@@ -9859,11 +12908,12 @@
        * TODO(kenton):  Base-64 encode?
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
+       *
+       * <code>optional string default_value = 7;</code>
+       */
+      public com.google.protobuf.ByteString
           getDefaultValueBytes() {
         java.lang.Object ref = defaultValue_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -9875,6 +12925,4 @@
       }
       /**
-       * <code>optional string default_value = 7;</code>
-       *
        * <pre>
        * For numeric types, contains the original text representation of the value.
@@ -9884,4 +12932,6 @@
        * TODO(kenton):  Base-64 encode?
        * </pre>
+       *
+       * <code>optional string default_value = 7;</code>
        */
       public Builder setDefaultValue(
@@ -9896,6 +12946,4 @@
       }
       /**
-       * <code>optional string default_value = 7;</code>
-       *
        * <pre>
        * For numeric types, contains the original text representation of the value.
@@ -9905,4 +12953,6 @@
        * TODO(kenton):  Base-64 encode?
        * </pre>
+       *
+       * <code>optional string default_value = 7;</code>
        */
       public Builder clearDefaultValue() {
@@ -9913,6 +12963,4 @@
       }
       /**
-       * <code>optional string default_value = 7;</code>
-       *
        * <pre>
        * For numeric types, contains the original text representation of the value.
@@ -9922,4 +12970,6 @@
        * TODO(kenton):  Base-64 encode?
        * </pre>
+       *
+       * <code>optional string default_value = 7;</code>
        */
       public Builder setDefaultValueBytes(
@@ -9936,40 +12986,32 @@
       private int oneofIndex_ ;
       /**
+       * <pre>
+       * If set, gives the index of a oneof in the containing type's oneof_decl
+       * list.  This field is a member of that oneof.
+       * </pre>
+       *
        * <code>optional int32 oneof_index = 9;</code>
-       *
+       */
+      public boolean hasOneofIndex() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
        * <pre>
        * If set, gives the index of a oneof in the containing type's oneof_decl
-       * list.  This field is a member of that oneof.  Extensions of a oneof should
-       * not set this since the oneof to which they belong will be inferred based
-       * on the extension range containing the extension's field number.
-       * </pre>
-       */
-      @Override
-	public boolean hasOneofIndex() {
-        return ((bitField0_ & 0x00000080) == 0x00000080);
-      }
-      /**
+       * list.  This field is a member of that oneof.
+       * </pre>
+       *
        * <code>optional int32 oneof_index = 9;</code>
-       *
+       */
+      public int getOneofIndex() {
+        return oneofIndex_;
+      }
+      /**
        * <pre>
        * If set, gives the index of a oneof in the containing type's oneof_decl
-       * list.  This field is a member of that oneof.  Extensions of a oneof should
-       * not set this since the oneof to which they belong will be inferred based
-       * on the extension range containing the extension's field number.
-       * </pre>
-       */
-      @Override
-	public int getOneofIndex() {
-        return oneofIndex_;
-      }
-      /**
+       * list.  This field is a member of that oneof.
+       * </pre>
+       *
        * <code>optional int32 oneof_index = 9;</code>
-       *
-       * <pre>
-       * If set, gives the index of a oneof in the containing type's oneof_decl
-       * list.  This field is a member of that oneof.  Extensions of a oneof should
-       * not set this since the oneof to which they belong will be inferred based
-       * on the extension range containing the extension's field number.
-       * </pre>
        */
       public Builder setOneofIndex(int value) {
@@ -9980,12 +13022,10 @@
       }
       /**
+       * <pre>
+       * If set, gives the index of a oneof in the containing type's oneof_decl
+       * list.  This field is a member of that oneof.
+       * </pre>
+       *
        * <code>optional int32 oneof_index = 9;</code>
-       *
-       * <pre>
-       * If set, gives the index of a oneof in the containing type's oneof_decl
-       * list.  This field is a member of that oneof.  Extensions of a oneof should
-       * not set this since the oneof to which they belong will be inferred based
-       * on the extension range containing the extension's field number.
-       * </pre>
        */
       public Builder clearOneofIndex() {
@@ -9996,21 +13036,137 @@
       }
 
-      private com.google.protobuf.DescriptorProtos.FieldOptions options_ = com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance();
-      private com.google.protobuf.SingleFieldBuilder<
+      private java.lang.Object jsonName_ = "";
+      /**
+       * <pre>
+       * JSON name of this field. The value is set by protocol compiler. If the
+       * user has set a "json_name" option on this field, that option's value
+       * will be used. Otherwise, it's deduced from the field's name by converting
+       * it to camelCase.
+       * </pre>
+       *
+       * <code>optional string json_name = 10;</code>
+       */
+      public boolean hasJsonName() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <pre>
+       * JSON name of this field. The value is set by protocol compiler. If the
+       * user has set a "json_name" option on this field, that option's value
+       * will be used. Otherwise, it's deduced from the field's name by converting
+       * it to camelCase.
+       * </pre>
+       *
+       * <code>optional string json_name = 10;</code>
+       */
+      public java.lang.String getJsonName() {
+        java.lang.Object ref = jsonName_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            jsonName_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       * JSON name of this field. The value is set by protocol compiler. If the
+       * user has set a "json_name" option on this field, that option's value
+       * will be used. Otherwise, it's deduced from the field's name by converting
+       * it to camelCase.
+       * </pre>
+       *
+       * <code>optional string json_name = 10;</code>
+       */
+      public com.google.protobuf.ByteString
+          getJsonNameBytes() {
+        java.lang.Object ref = jsonName_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          jsonName_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       * JSON name of this field. The value is set by protocol compiler. If the
+       * user has set a "json_name" option on this field, that option's value
+       * will be used. Otherwise, it's deduced from the field's name by converting
+       * it to camelCase.
+       * </pre>
+       *
+       * <code>optional string json_name = 10;</code>
+       */
+      public Builder setJsonName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        jsonName_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * JSON name of this field. The value is set by protocol compiler. If the
+       * user has set a "json_name" option on this field, that option's value
+       * will be used. Otherwise, it's deduced from the field's name by converting
+       * it to camelCase.
+       * </pre>
+       *
+       * <code>optional string json_name = 10;</code>
+       */
+      public Builder clearJsonName() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        jsonName_ = getDefaultInstance().getJsonName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * JSON name of this field. The value is set by protocol compiler. If the
+       * user has set a "json_name" option on this field, that option's value
+       * will be used. Otherwise, it's deduced from the field's name by converting
+       * it to camelCase.
+       * </pre>
+       *
+       * <code>optional string json_name = 10;</code>
+       */
+      public Builder setJsonNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        jsonName_ = value;
+        onChanged();
+        return this;
+      }
+
+      private com.google.protobuf.DescriptorProtos.FieldOptions options_ = null;
+      private com.google.protobuf.SingleFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.FieldOptions, com.google.protobuf.DescriptorProtos.FieldOptions.Builder, com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder> optionsBuilder_;
       /**
        * <code>optional .google.protobuf.FieldOptions options = 8;</code>
        */
-      @Override
-	public boolean hasOptions() {
-        return ((bitField0_ & 0x00000100) == 0x00000100);
+      public boolean hasOptions() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
       }
       /**
        * <code>optional .google.protobuf.FieldOptions options = 8;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldOptions getOptions() {
+      public com.google.protobuf.DescriptorProtos.FieldOptions getOptions() {
         if (optionsBuilder_ == null) {
-          return options_;
+          return options_ == null ? com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance() : options_;
         } else {
           return optionsBuilder_.getMessage();
@@ -10030,5 +13186,5 @@
           optionsBuilder_.setMessage(value);
         }
-        bitField0_ |= 0x00000100;
+        bitField0_ |= 0x00000200;
         return this;
       }
@@ -10044,5 +13200,5 @@
           optionsBuilder_.setMessage(builderForValue.build());
         }
-        bitField0_ |= 0x00000100;
+        bitField0_ |= 0x00000200;
         return this;
       }
@@ -10052,5 +13208,6 @@
       public Builder mergeOptions(com.google.protobuf.DescriptorProtos.FieldOptions value) {
         if (optionsBuilder_ == null) {
-          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+          if (((bitField0_ & 0x00000200) == 0x00000200) &&
+              options_ != null &&
               options_ != com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance()) {
             options_ =
@@ -10063,5 +13220,5 @@
           optionsBuilder_.mergeFrom(value);
         }
-        bitField0_ |= 0x00000100;
+        bitField0_ |= 0x00000200;
         return this;
       }
@@ -10071,10 +13228,10 @@
       public Builder clearOptions() {
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance();
+          options_ = null;
           onChanged();
         } else {
           optionsBuilder_.clear();
         }
-        bitField0_ = (bitField0_ & ~0x00000100);
+        bitField0_ = (bitField0_ & ~0x00000200);
         return this;
       }
@@ -10083,5 +13240,5 @@
        */
       public com.google.protobuf.DescriptorProtos.FieldOptions.Builder getOptionsBuilder() {
-        bitField0_ |= 0x00000100;
+        bitField0_ |= 0x00000200;
         onChanged();
         return getOptionsFieldBuilder().getBuilder();
@@ -10090,10 +13247,10 @@
        * <code>optional .google.protobuf.FieldOptions options = 8;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder getOptionsOrBuilder() {
+      public com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder getOptionsOrBuilder() {
         if (optionsBuilder_ != null) {
           return optionsBuilder_.getMessageOrBuilder();
         } else {
-          return options_;
+          return options_ == null ?
+              com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance() : options_;
         }
       }
@@ -10101,9 +13258,10 @@
        * <code>optional .google.protobuf.FieldOptions options = 8;</code>
        */
-      private com.google.protobuf.SingleFieldBuilder<
-          com.google.protobuf.DescriptorProtos.FieldOptions, com.google.protobuf.DescriptorProtos.FieldOptions.Builder, com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder>
+      private com.google.protobuf.SingleFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.FieldOptions, com.google.protobuf.DescriptorProtos.FieldOptions.Builder, com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder> 
           getOptionsFieldBuilder() {
         if (optionsBuilder_ == null) {
-          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<>(
+          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.FieldOptions, com.google.protobuf.DescriptorProtos.FieldOptions.Builder, com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder>(
                   getOptions(),
                   getParentForChildren(),
@@ -10113,14 +13271,51 @@
         return optionsBuilder_;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.FieldDescriptorProto)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.FieldDescriptorProto)
+    private static final com.google.protobuf.DescriptorProtos.FieldDescriptorProto DEFAULT_INSTANCE;
     static {
-      defaultInstance = new FieldDescriptorProto(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.FieldDescriptorProto)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.FieldDescriptorProto();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<FieldDescriptorProto>
+        PARSER = new com.google.protobuf.AbstractParser<FieldDescriptorProto>() {
+      public FieldDescriptorProto parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new FieldDescriptorProto(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<FieldDescriptorProto> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<FieldDescriptorProto> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
@@ -10142,37 +13337,41 @@
     com.google.protobuf.ByteString
         getNameBytes();
+
+    /**
+     * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+     */
+    boolean hasOptions();
+    /**
+     * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+     */
+    com.google.protobuf.DescriptorProtos.OneofOptions getOptions();
+    /**
+     * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+     */
+    com.google.protobuf.DescriptorProtos.OneofOptionsOrBuilder getOptionsOrBuilder();
   }
   /**
-   * Protobuf type {@code google.protobuf.OneofDescriptorProto}
-   *
    * <pre>
    * Describes a oneof.
    * </pre>
+   *
+   * Protobuf type {@code google.protobuf.OneofDescriptorProto}
    */
-  public static final class OneofDescriptorProto extends
-      com.google.protobuf.GeneratedMessage implements
+  public  static final class OneofDescriptorProto extends
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:google.protobuf.OneofDescriptorProto)
       OneofDescriptorProtoOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use OneofDescriptorProto.newBuilder() to construct.
-    private OneofDescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+    private OneofDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private OneofDescriptorProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final OneofDescriptorProto defaultInstance;
-    public static OneofDescriptorProto getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public OneofDescriptorProto getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private OneofDescriptorProto() {
+      name_ = "";
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -10181,5 +13380,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -10194,6 +13393,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -10206,4 +13405,17 @@
               break;
             }
+            case 18: {
+              com.google.protobuf.DescriptorProtos.OneofOptions.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = options_.toBuilder();
+              }
+              options_ = input.readMessage(com.google.protobuf.DescriptorProtos.OneofOptions.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(options_);
+                options_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
           }
         }
@@ -10212,5 +13424,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
@@ -10223,6 +13435,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofDescriptorProto_fieldAccessorTable
@@ -10231,28 +13442,11 @@
     }
 
-    public static com.google.protobuf.Parser<OneofDescriptorProto> PARSER =
-        new com.google.protobuf.AbstractParser<OneofDescriptorProto>() {
-      @Override
-	public OneofDescriptorProto parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new OneofDescriptorProto(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<OneofDescriptorProto> getParserForType() {
-      return PARSER;
-    }
-
     private int bitField0_;
     public static final int NAME_FIELD_NUMBER = 1;
-    private java.lang.Object name_;
+    private volatile java.lang.Object name_;
     /**
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public boolean hasName() {
+    public boolean hasName() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -10260,11 +13454,10 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public java.lang.String getName() {
+    public java.lang.String getName() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -10278,10 +13471,9 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString
+    public com.google.protobuf.ByteString
         getNameBytes() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -10293,51 +13485,125 @@
     }
 
-    private void initFields() {
-      name_ = "";
-    }
+    public static final int OPTIONS_FIELD_NUMBER = 2;
+    private com.google.protobuf.DescriptorProtos.OneofOptions options_;
+    /**
+     * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+     */
+    public boolean hasOptions() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.OneofOptions getOptions() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.OneofOptions.getDefaultInstance() : options_;
+    }
+    /**
+     * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.OneofOptionsOrBuilder getOptionsOrBuilder() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.OneofOptions.getDefaultInstance() : options_;
+    }
+
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
       if (isInitialized == 0) return false;
 
+      if (hasOptions()) {
+        if (!getOptions().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
       memoizedIsInitialized = 1;
       return true;
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(1, getNameBytes());
-      }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, getOptions());
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(1, getNameBytes());
-      }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+          .computeMessageSize(2, getOptions());
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.OneofDescriptorProto)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.OneofDescriptorProto other = (com.google.protobuf.DescriptorProtos.OneofDescriptorProto) obj;
+
+      boolean result = true;
+      result = result && (hasName() == other.hasName());
+      if (hasName()) {
+        result = result && getName()
+            .equals(other.getName());
+      }
+      result = result && (hasOptions() == other.hasOptions());
+      if (hasOptions()) {
+        result = result && getOptions()
+            .equals(other.getOptions());
+      }
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasName()) {
+        hash = (37 * hash) + NAME_FIELD_NUMBER;
+        hash = (53 * hash) + getName().hashCode();
+      }
+      if (hasOptions()) {
+        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
+        hash = (53 * hash) + getOptions().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
         com.google.protobuf.ByteString data)
@@ -10363,5 +13629,6 @@
     public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
@@ -10369,9 +13636,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseDelimitedFrom(
@@ -10379,10 +13648,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
@@ -10390,31 +13661,35 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.OneofDescriptorProto prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
     /**
-     * Protobuf type {@code google.protobuf.OneofDescriptorProto}
-     *
      * <pre>
      * Describes a oneof.
      * </pre>
+     *
+     * Protobuf type {@code google.protobuf.OneofDescriptorProto}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.OneofDescriptorProto)
         com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder {
@@ -10424,6 +13699,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofDescriptorProto_fieldAccessorTable
@@ -10438,42 +13712,37 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+          getOptionsFieldBuilder();
+        }
+      }
+      public Builder clear() {
         super.clear();
         name_ = "";
         bitField0_ = (bitField0_ & ~0x00000001);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+        if (optionsBuilder_ == null) {
+          options_ = null;
+        } else {
+          optionsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofDescriptorProto_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.OneofDescriptorProto.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.OneofDescriptorProto build() {
+      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto build() {
         com.google.protobuf.DescriptorProtos.OneofDescriptorProto result = buildPartial();
         if (!result.isInitialized()) {
@@ -10483,6 +13752,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.OneofDescriptorProto buildPartial() {
+      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto buildPartial() {
         com.google.protobuf.DescriptorProtos.OneofDescriptorProto result = new com.google.protobuf.DescriptorProtos.OneofDescriptorProto(this);
         int from_bitField0_ = bitField0_;
@@ -10492,4 +13760,12 @@
         }
         result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (optionsBuilder_ == null) {
+          result.options_ = options_;
+        } else {
+          result.options_ = optionsBuilder_.build();
+        }
         result.bitField0_ = to_bitField0_;
         onBuilt();
@@ -10497,6 +13773,31 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.OneofDescriptorProto) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.OneofDescriptorProto)other);
@@ -10514,15 +13815,22 @@
           onChanged();
         }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        if (other.hasOptions()) {
+          mergeOptions(other.getOptions());
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasOptions()) {
+          if (!getOptions().isInitialized()) {
+            return false;
+          }
+        }
         return true;
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -10533,5 +13841,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.OneofDescriptorProto) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -10547,6 +13855,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public boolean hasName() {
+      public boolean hasName() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
@@ -10554,6 +13861,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public java.lang.String getName() {
+      public java.lang.String getName() {
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
@@ -10572,10 +13878,9 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getNameBytes() {
         java.lang.Object ref = name_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -10622,13 +13927,168 @@
       }
 
+      private com.google.protobuf.DescriptorProtos.OneofOptions options_ = null;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.OneofOptions, com.google.protobuf.DescriptorProtos.OneofOptions.Builder, com.google.protobuf.DescriptorProtos.OneofOptionsOrBuilder> optionsBuilder_;
+      /**
+       * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+       */
+      public boolean hasOptions() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.OneofOptions getOptions() {
+        if (optionsBuilder_ == null) {
+          return options_ == null ? com.google.protobuf.DescriptorProtos.OneofOptions.getDefaultInstance() : options_;
+        } else {
+          return optionsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+       */
+      public Builder setOptions(com.google.protobuf.DescriptorProtos.OneofOptions value) {
+        if (optionsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          options_ = value;
+          onChanged();
+        } else {
+          optionsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+       */
+      public Builder setOptions(
+          com.google.protobuf.DescriptorProtos.OneofOptions.Builder builderForValue) {
+        if (optionsBuilder_ == null) {
+          options_ = builderForValue.build();
+          onChanged();
+        } else {
+          optionsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+       */
+      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.OneofOptions value) {
+        if (optionsBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              options_ != null &&
+              options_ != com.google.protobuf.DescriptorProtos.OneofOptions.getDefaultInstance()) {
+            options_ =
+              com.google.protobuf.DescriptorProtos.OneofOptions.newBuilder(options_).mergeFrom(value).buildPartial();
+          } else {
+            options_ = value;
+          }
+          onChanged();
+        } else {
+          optionsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+       */
+      public Builder clearOptions() {
+        if (optionsBuilder_ == null) {
+          options_ = null;
+          onChanged();
+        } else {
+          optionsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.OneofOptions.Builder getOptionsBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getOptionsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.OneofOptionsOrBuilder getOptionsOrBuilder() {
+        if (optionsBuilder_ != null) {
+          return optionsBuilder_.getMessageOrBuilder();
+        } else {
+          return options_ == null ?
+              com.google.protobuf.DescriptorProtos.OneofOptions.getDefaultInstance() : options_;
+        }
+      }
+      /**
+       * <code>optional .google.protobuf.OneofOptions options = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.OneofOptions, com.google.protobuf.DescriptorProtos.OneofOptions.Builder, com.google.protobuf.DescriptorProtos.OneofOptionsOrBuilder> 
+          getOptionsFieldBuilder() {
+        if (optionsBuilder_ == null) {
+          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.OneofOptions, com.google.protobuf.DescriptorProtos.OneofOptions.Builder, com.google.protobuf.DescriptorProtos.OneofOptionsOrBuilder>(
+                  getOptions(),
+                  getParentForChildren(),
+                  isClean());
+          options_ = null;
+        }
+        return optionsBuilder_;
+      }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
       // @@protoc_insertion_point(builder_scope:google.protobuf.OneofDescriptorProto)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.OneofDescriptorProto)
+    private static final com.google.protobuf.DescriptorProtos.OneofDescriptorProto DEFAULT_INSTANCE;
     static {
-      defaultInstance = new OneofDescriptorProto(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.OneofDescriptorProto)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.OneofDescriptorProto();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<OneofDescriptorProto>
+        PARSER = new com.google.protobuf.AbstractParser<OneofDescriptorProto>() {
+      public OneofDescriptorProto parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new OneofDescriptorProto(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<OneofDescriptorProto> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<OneofDescriptorProto> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
@@ -10654,5 +14114,5 @@
      * <code>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
      */
-    java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto>
+    java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> 
         getValueList();
     /**
@@ -10667,5 +14127,5 @@
      * <code>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
      */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder>
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> 
         getValueOrBuilderList();
     /**
@@ -10689,35 +14149,27 @@
   }
   /**
-   * Protobuf type {@code google.protobuf.EnumDescriptorProto}
-   *
    * <pre>
    * Describes an enum type.
    * </pre>
+   *
+   * Protobuf type {@code google.protobuf.EnumDescriptorProto}
    */
-  public static final class EnumDescriptorProto extends
-      com.google.protobuf.GeneratedMessage implements
+  public  static final class EnumDescriptorProto extends
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:google.protobuf.EnumDescriptorProto)
       EnumDescriptorProtoOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use EnumDescriptorProto.newBuilder() to construct.
-    private EnumDescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+    private EnumDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private EnumDescriptorProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final EnumDescriptorProto defaultInstance;
-    public static EnumDescriptorProto getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public EnumDescriptorProto getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private EnumDescriptorProto() {
+      name_ = "";
+      value_ = java.util.Collections.emptyList();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -10726,5 +14178,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -10739,6 +14191,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -10753,8 +14205,9 @@
             case 18: {
               if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                value_ = new java.util.ArrayList<>();
+                value_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto>();
                 mutable_bitField0_ |= 0x00000002;
               }
-              value_.add(input.readMessage(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.PARSER, extensionRegistry));
+              value_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.PARSER, extensionRegistry));
               break;
             }
@@ -10778,5 +14231,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
@@ -10792,6 +14245,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable
@@ -10800,28 +14252,11 @@
     }
 
-    public static com.google.protobuf.Parser<EnumDescriptorProto> PARSER =
-        new com.google.protobuf.AbstractParser<EnumDescriptorProto>() {
-      @Override
-	public EnumDescriptorProto parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EnumDescriptorProto(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<EnumDescriptorProto> getParserForType() {
-      return PARSER;
-    }
-
     private int bitField0_;
     public static final int NAME_FIELD_NUMBER = 1;
-    private java.lang.Object name_;
+    private volatile java.lang.Object name_;
     /**
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public boolean hasName() {
+    public boolean hasName() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -10829,11 +14264,10 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public java.lang.String getName() {
+    public java.lang.String getName() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -10847,10 +14281,9 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString
+    public com.google.protobuf.ByteString
         getNameBytes() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -10867,6 +14300,5 @@
      * <code>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> getValueList() {
+    public java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> getValueList() {
       return value_;
     }
@@ -10874,6 +14306,5 @@
      * <code>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
      */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder>
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> 
         getValueOrBuilderList() {
       return value_;
@@ -10882,6 +14313,5 @@
      * <code>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
      */
-    @Override
-	public int getValueCount() {
+    public int getValueCount() {
       return value_.size();
     }
@@ -10889,6 +14319,5 @@
      * <code>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getValue(int index) {
+    public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getValue(int index) {
       return value_.get(index);
     }
@@ -10896,6 +14325,5 @@
      * <code>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder getValueOrBuilder(
+    public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder getValueOrBuilder(
         int index) {
       return value_.get(index);
@@ -10907,6 +14335,5 @@
      * <code>optional .google.protobuf.EnumOptions options = 3;</code>
      */
-    @Override
-	public boolean hasOptions() {
+    public boolean hasOptions() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
@@ -10914,24 +14341,16 @@
      * <code>optional .google.protobuf.EnumOptions options = 3;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.EnumOptions getOptions() {
-      return options_;
+    public com.google.protobuf.DescriptorProtos.EnumOptions getOptions() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance() : options_;
     }
     /**
      * <code>optional .google.protobuf.EnumOptions options = 3;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder getOptionsOrBuilder() {
-      return options_;
-    }
-
-    private void initFields() {
-      name_ = "";
-      value_ = java.util.Collections.emptyList();
-      options_ = com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance();
-    }
+    public com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder getOptionsOrBuilder() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance() : options_;
+    }
+
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -10954,10 +14373,8 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(1, getNameBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
       }
       for (int i = 0; i < value_.size(); i++) {
@@ -10965,19 +14382,16 @@
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeMessage(3, options_);
-      }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+        output.writeMessage(3, getOptions());
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(1, getNameBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
       }
       for (int i = 0; i < value_.size(); i++) {
@@ -10987,18 +14401,73 @@
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, options_);
-      }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+          .computeMessageSize(3, getOptions());
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.EnumDescriptorProto)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.EnumDescriptorProto other = (com.google.protobuf.DescriptorProtos.EnumDescriptorProto) obj;
+
+      boolean result = true;
+      result = result && (hasName() == other.hasName());
+      if (hasName()) {
+        result = result && getName()
+            .equals(other.getName());
+      }
+      result = result && getValueList()
+          .equals(other.getValueList());
+      result = result && (hasOptions() == other.hasOptions());
+      if (hasOptions()) {
+        result = result && getOptions()
+            .equals(other.getOptions());
+      }
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasName()) {
+        hash = (37 * hash) + NAME_FIELD_NUMBER;
+        hash = (53 * hash) + getName().hashCode();
+      }
+      if (getValueCount() > 0) {
+        hash = (37 * hash) + VALUE_FIELD_NUMBER;
+        hash = (53 * hash) + getValueList().hashCode();
+      }
+      if (hasOptions()) {
+        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
+        hash = (53 * hash) + getOptions().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
         com.google.protobuf.ByteString data)
@@ -11024,5 +14493,6 @@
     public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
@@ -11030,9 +14500,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseDelimitedFrom(
@@ -11040,10 +14512,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
@@ -11051,31 +14525,35 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumDescriptorProto prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
     /**
-     * Protobuf type {@code google.protobuf.EnumDescriptorProto}
-     *
      * <pre>
      * Describes an enum type.
      * </pre>
+     *
+     * Protobuf type {@code google.protobuf.EnumDescriptorProto}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.EnumDescriptorProto)
         com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder {
@@ -11085,6 +14563,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable
@@ -11099,20 +14576,16 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getValueFieldBuilder();
           getOptionsFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         name_ = "";
@@ -11125,5 +14598,5 @@
         }
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance();
+          options_ = null;
         } else {
           optionsBuilder_.clear();
@@ -11133,22 +14606,14 @@
       }
 
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumDescriptorProto build() {
+      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto build() {
         com.google.protobuf.DescriptorProtos.EnumDescriptorProto result = buildPartial();
         if (!result.isInitialized()) {
@@ -11158,6 +14623,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumDescriptorProto buildPartial() {
+      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto buildPartial() {
         com.google.protobuf.DescriptorProtos.EnumDescriptorProto result = new com.google.protobuf.DescriptorProtos.EnumDescriptorProto(this);
         int from_bitField0_ = bitField0_;
@@ -11189,6 +14653,31 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.EnumDescriptorProto) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.EnumDescriptorProto)other);
@@ -11224,6 +14713,6 @@
               value_ = other.value_;
               bitField0_ = (bitField0_ & ~0x00000002);
-              valueBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              valueBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getValueFieldBuilder() : null;
             } else {
@@ -11235,13 +14724,12 @@
           mergeOptions(other.getOptions());
         }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         for (int i = 0; i < getValueCount(); i++) {
           if (!getValue(i).isInitialized()) {
-
             return false;
           }
@@ -11249,5 +14737,4 @@
         if (hasOptions()) {
           if (!getOptions().isInitialized()) {
-
             return false;
           }
@@ -11256,6 +14743,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -11266,5 +14752,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.EnumDescriptorProto) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -11280,6 +14766,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public boolean hasName() {
+      public boolean hasName() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
@@ -11287,6 +14772,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public java.lang.String getName() {
+      public java.lang.String getName() {
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
@@ -11305,10 +14789,9 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getNameBytes() {
         java.lang.Object ref = name_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -11359,10 +14842,10 @@
       private void ensureValueIsMutable() {
         if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          value_ = new java.util.ArrayList<>(value_);
+          value_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto>(value_);
           bitField0_ |= 0x00000002;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> valueBuilder_;
 
@@ -11370,6 +14853,5 @@
        * <code>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> getValueList() {
+      public java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> getValueList() {
         if (valueBuilder_ == null) {
           return java.util.Collections.unmodifiableList(value_);
@@ -11381,6 +14863,5 @@
        * <code>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
        */
-      @Override
-	public int getValueCount() {
+      public int getValueCount() {
         if (valueBuilder_ == null) {
           return value_.size();
@@ -11392,6 +14873,5 @@
        * <code>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getValue(int index) {
+      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getValue(int index) {
         if (valueBuilder_ == null) {
           return value_.get(index);
@@ -11543,6 +15023,5 @@
        * <code>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder getValueOrBuilder(
+      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder getValueOrBuilder(
           int index) {
         if (valueBuilder_ == null) {
@@ -11554,6 +15033,5 @@
        * <code>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
        */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder>
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> 
            getValueOrBuilderList() {
         if (valueBuilder_ != null) {
@@ -11581,13 +15059,14 @@
        * <code>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
        */
-      public java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder>
+      public java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder> 
            getValueBuilderList() {
         return getValueFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> 
           getValueFieldBuilder() {
         if (valueBuilder_ == null) {
-          valueBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          valueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder>(
                   value_,
                   ((bitField0_ & 0x00000002) == 0x00000002),
@@ -11599,12 +15078,11 @@
       }
 
-      private com.google.protobuf.DescriptorProtos.EnumOptions options_ = com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance();
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.DescriptorProtos.EnumOptions options_ = null;
+      private com.google.protobuf.SingleFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.EnumOptions, com.google.protobuf.DescriptorProtos.EnumOptions.Builder, com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder> optionsBuilder_;
       /**
        * <code>optional .google.protobuf.EnumOptions options = 3;</code>
        */
-      @Override
-	public boolean hasOptions() {
+      public boolean hasOptions() {
         return ((bitField0_ & 0x00000004) == 0x00000004);
       }
@@ -11612,8 +15090,7 @@
        * <code>optional .google.protobuf.EnumOptions options = 3;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumOptions getOptions() {
+      public com.google.protobuf.DescriptorProtos.EnumOptions getOptions() {
         if (optionsBuilder_ == null) {
-          return options_;
+          return options_ == null ? com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance() : options_;
         } else {
           return optionsBuilder_.getMessage();
@@ -11656,4 +15133,5 @@
         if (optionsBuilder_ == null) {
           if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              options_ != null &&
               options_ != com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance()) {
             options_ =
@@ -11674,5 +15152,5 @@
       public Builder clearOptions() {
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance();
+          options_ = null;
           onChanged();
         } else {
@@ -11693,10 +15171,10 @@
        * <code>optional .google.protobuf.EnumOptions options = 3;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder getOptionsOrBuilder() {
+      public com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder getOptionsOrBuilder() {
         if (optionsBuilder_ != null) {
           return optionsBuilder_.getMessageOrBuilder();
         } else {
-          return options_;
+          return options_ == null ?
+              com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance() : options_;
         }
       }
@@ -11704,9 +15182,10 @@
        * <code>optional .google.protobuf.EnumOptions options = 3;</code>
        */
-      private com.google.protobuf.SingleFieldBuilder<
-          com.google.protobuf.DescriptorProtos.EnumOptions, com.google.protobuf.DescriptorProtos.EnumOptions.Builder, com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder>
+      private com.google.protobuf.SingleFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.EnumOptions, com.google.protobuf.DescriptorProtos.EnumOptions.Builder, com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder> 
           getOptionsFieldBuilder() {
         if (optionsBuilder_ == null) {
-          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<>(
+          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.EnumOptions, com.google.protobuf.DescriptorProtos.EnumOptions.Builder, com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder>(
                   getOptions(),
                   getParentForChildren(),
@@ -11716,14 +15195,51 @@
         return optionsBuilder_;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.EnumDescriptorProto)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.EnumDescriptorProto)
+    private static final com.google.protobuf.DescriptorProtos.EnumDescriptorProto DEFAULT_INSTANCE;
     static {
-      defaultInstance = new EnumDescriptorProto(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.EnumDescriptorProto)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.EnumDescriptorProto();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<EnumDescriptorProto>
+        PARSER = new com.google.protobuf.AbstractParser<EnumDescriptorProto>() {
+      public EnumDescriptorProto parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new EnumDescriptorProto(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<EnumDescriptorProto> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<EnumDescriptorProto> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
@@ -11769,35 +15285,27 @@
   }
   /**
-   * Protobuf type {@code google.protobuf.EnumValueDescriptorProto}
-   *
    * <pre>
    * Describes a value within an enum.
    * </pre>
+   *
+   * Protobuf type {@code google.protobuf.EnumValueDescriptorProto}
    */
-  public static final class EnumValueDescriptorProto extends
-      com.google.protobuf.GeneratedMessage implements
+  public  static final class EnumValueDescriptorProto extends
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:google.protobuf.EnumValueDescriptorProto)
       EnumValueDescriptorProtoOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use EnumValueDescriptorProto.newBuilder() to construct.
-    private EnumValueDescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+    private EnumValueDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private EnumValueDescriptorProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final EnumValueDescriptorProto defaultInstance;
-    public static EnumValueDescriptorProto getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public EnumValueDescriptorProto getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private EnumValueDescriptorProto() {
+      name_ = "";
+      number_ = 0;
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -11806,5 +15314,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -11819,6 +15327,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -11855,5 +15363,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
@@ -11866,6 +15374,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable
@@ -11874,28 +15381,11 @@
     }
 
-    public static com.google.protobuf.Parser<EnumValueDescriptorProto> PARSER =
-        new com.google.protobuf.AbstractParser<EnumValueDescriptorProto>() {
-      @Override
-	public EnumValueDescriptorProto parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EnumValueDescriptorProto(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<EnumValueDescriptorProto> getParserForType() {
-      return PARSER;
-    }
-
     private int bitField0_;
     public static final int NAME_FIELD_NUMBER = 1;
-    private java.lang.Object name_;
+    private volatile java.lang.Object name_;
     /**
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public boolean hasName() {
+    public boolean hasName() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -11903,11 +15393,10 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public java.lang.String getName() {
+    public java.lang.String getName() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -11921,10 +15410,9 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString
+    public com.google.protobuf.ByteString
         getNameBytes() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -11941,6 +15429,5 @@
      * <code>optional int32 number = 2;</code>
      */
-    @Override
-	public boolean hasNumber() {
+    public boolean hasNumber() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
@@ -11948,6 +15435,5 @@
      * <code>optional int32 number = 2;</code>
      */
-    @Override
-	public int getNumber() {
+    public int getNumber() {
       return number_;
     }
@@ -11958,6 +15444,5 @@
      * <code>optional .google.protobuf.EnumValueOptions options = 3;</code>
      */
-    @Override
-	public boolean hasOptions() {
+    public boolean hasOptions() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
@@ -11965,24 +15450,16 @@
      * <code>optional .google.protobuf.EnumValueOptions options = 3;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueOptions getOptions() {
-      return options_;
+    public com.google.protobuf.DescriptorProtos.EnumValueOptions getOptions() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance() : options_;
     }
     /**
      * <code>optional .google.protobuf.EnumValueOptions options = 3;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder getOptionsOrBuilder() {
-      return options_;
-    }
-
-    private void initFields() {
-      name_ = "";
-      number_ = 0;
-      options_ = com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance();
-    }
+    public com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder getOptionsOrBuilder() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance() : options_;
+    }
+
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -11999,10 +15476,8 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(1, getNameBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
@@ -12010,19 +15485,16 @@
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeMessage(3, options_);
-      }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+        output.writeMessage(3, getOptions());
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(1, getNameBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
@@ -12032,18 +15504,76 @@
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, options_);
-      }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+          .computeMessageSize(3, getOptions());
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto other = (com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto) obj;
+
+      boolean result = true;
+      result = result && (hasName() == other.hasName());
+      if (hasName()) {
+        result = result && getName()
+            .equals(other.getName());
+      }
+      result = result && (hasNumber() == other.hasNumber());
+      if (hasNumber()) {
+        result = result && (getNumber()
+            == other.getNumber());
+      }
+      result = result && (hasOptions() == other.hasOptions());
+      if (hasOptions()) {
+        result = result && getOptions()
+            .equals(other.getOptions());
+      }
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasName()) {
+        hash = (37 * hash) + NAME_FIELD_NUMBER;
+        hash = (53 * hash) + getName().hashCode();
+      }
+      if (hasNumber()) {
+        hash = (37 * hash) + NUMBER_FIELD_NUMBER;
+        hash = (53 * hash) + getNumber();
+      }
+      if (hasOptions()) {
+        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
+        hash = (53 * hash) + getOptions().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
         com.google.protobuf.ByteString data)
@@ -12069,5 +15599,6 @@
     public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
@@ -12075,9 +15606,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseDelimitedFrom(
@@ -12085,10 +15618,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
@@ -12096,31 +15631,35 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
     /**
-     * Protobuf type {@code google.protobuf.EnumValueDescriptorProto}
-     *
      * <pre>
      * Describes a value within an enum.
      * </pre>
+     *
+     * Protobuf type {@code google.protobuf.EnumValueDescriptorProto}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.EnumValueDescriptorProto)
         com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder {
@@ -12130,6 +15669,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable
@@ -12144,19 +15682,15 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getOptionsFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         name_ = "";
@@ -12165,5 +15699,5 @@
         bitField0_ = (bitField0_ & ~0x00000002);
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance();
+          options_ = null;
         } else {
           optionsBuilder_.clear();
@@ -12173,22 +15707,14 @@
       }
 
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto build() {
+      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto build() {
         com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto result = buildPartial();
         if (!result.isInitialized()) {
@@ -12198,6 +15724,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto buildPartial() {
+      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto buildPartial() {
         com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto result = new com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto(this);
         int from_bitField0_ = bitField0_;
@@ -12224,6 +15749,31 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto)other);
@@ -12247,13 +15797,12 @@
           mergeOptions(other.getOptions());
         }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         if (hasOptions()) {
           if (!getOptions().isInitialized()) {
-
             return false;
           }
@@ -12262,6 +15811,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -12272,5 +15820,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -12286,6 +15834,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public boolean hasName() {
+      public boolean hasName() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
@@ -12293,6 +15840,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public java.lang.String getName() {
+      public java.lang.String getName() {
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
@@ -12311,10 +15857,9 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getNameBytes() {
         java.lang.Object ref = name_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -12365,6 +15910,5 @@
        * <code>optional int32 number = 2;</code>
        */
-      @Override
-	public boolean hasNumber() {
+      public boolean hasNumber() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
@@ -12372,6 +15916,5 @@
        * <code>optional int32 number = 2;</code>
        */
-      @Override
-	public int getNumber() {
+      public int getNumber() {
         return number_;
       }
@@ -12395,12 +15938,11 @@
       }
 
-      private com.google.protobuf.DescriptorProtos.EnumValueOptions options_ = com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance();
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.DescriptorProtos.EnumValueOptions options_ = null;
+      private com.google.protobuf.SingleFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.EnumValueOptions, com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder, com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder> optionsBuilder_;
       /**
        * <code>optional .google.protobuf.EnumValueOptions options = 3;</code>
        */
-      @Override
-	public boolean hasOptions() {
+      public boolean hasOptions() {
         return ((bitField0_ & 0x00000004) == 0x00000004);
       }
@@ -12408,8 +15950,7 @@
        * <code>optional .google.protobuf.EnumValueOptions options = 3;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueOptions getOptions() {
+      public com.google.protobuf.DescriptorProtos.EnumValueOptions getOptions() {
         if (optionsBuilder_ == null) {
-          return options_;
+          return options_ == null ? com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance() : options_;
         } else {
           return optionsBuilder_.getMessage();
@@ -12452,4 +15993,5 @@
         if (optionsBuilder_ == null) {
           if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              options_ != null &&
               options_ != com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance()) {
             options_ =
@@ -12470,5 +16012,5 @@
       public Builder clearOptions() {
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance();
+          options_ = null;
           onChanged();
         } else {
@@ -12489,10 +16031,10 @@
        * <code>optional .google.protobuf.EnumValueOptions options = 3;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder getOptionsOrBuilder() {
+      public com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder getOptionsOrBuilder() {
         if (optionsBuilder_ != null) {
           return optionsBuilder_.getMessageOrBuilder();
         } else {
-          return options_;
+          return options_ == null ?
+              com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance() : options_;
         }
       }
@@ -12500,9 +16042,10 @@
        * <code>optional .google.protobuf.EnumValueOptions options = 3;</code>
        */
-      private com.google.protobuf.SingleFieldBuilder<
-          com.google.protobuf.DescriptorProtos.EnumValueOptions, com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder, com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder>
+      private com.google.protobuf.SingleFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.EnumValueOptions, com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder, com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder> 
           getOptionsFieldBuilder() {
         if (optionsBuilder_ == null) {
-          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<>(
+          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.EnumValueOptions, com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder, com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder>(
                   getOptions(),
                   getParentForChildren(),
@@ -12512,14 +16055,51 @@
         return optionsBuilder_;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.EnumValueDescriptorProto)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.EnumValueDescriptorProto)
+    private static final com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto DEFAULT_INSTANCE;
     static {
-      defaultInstance = new EnumValueDescriptorProto(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.EnumValueDescriptorProto)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<EnumValueDescriptorProto>
+        PARSER = new com.google.protobuf.AbstractParser<EnumValueDescriptorProto>() {
+      public EnumValueDescriptorProto parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new EnumValueDescriptorProto(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<EnumValueDescriptorProto> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<EnumValueDescriptorProto> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
@@ -12545,5 +16125,5 @@
      * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
      */
-    java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto>
+    java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> 
         getMethodList();
     /**
@@ -12558,5 +16138,5 @@
      * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
      */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder>
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> 
         getMethodOrBuilderList();
     /**
@@ -12580,35 +16160,27 @@
   }
   /**
-   * Protobuf type {@code google.protobuf.ServiceDescriptorProto}
-   *
    * <pre>
    * Describes a service.
    * </pre>
+   *
+   * Protobuf type {@code google.protobuf.ServiceDescriptorProto}
    */
-  public static final class ServiceDescriptorProto extends
-      com.google.protobuf.GeneratedMessage implements
+  public  static final class ServiceDescriptorProto extends
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:google.protobuf.ServiceDescriptorProto)
       ServiceDescriptorProtoOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use ServiceDescriptorProto.newBuilder() to construct.
-    private ServiceDescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+    private ServiceDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private ServiceDescriptorProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final ServiceDescriptorProto defaultInstance;
-    public static ServiceDescriptorProto getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public ServiceDescriptorProto getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private ServiceDescriptorProto() {
+      name_ = "";
+      method_ = java.util.Collections.emptyList();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -12617,5 +16189,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -12630,6 +16202,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -12644,8 +16216,9 @@
             case 18: {
               if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                method_ = new java.util.ArrayList<>();
+                method_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.MethodDescriptorProto>();
                 mutable_bitField0_ |= 0x00000002;
               }
-              method_.add(input.readMessage(com.google.protobuf.DescriptorProtos.MethodDescriptorProto.PARSER, extensionRegistry));
+              method_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.MethodDescriptorProto.PARSER, extensionRegistry));
               break;
             }
@@ -12669,5 +16242,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
@@ -12683,6 +16256,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable
@@ -12691,28 +16263,11 @@
     }
 
-    public static com.google.protobuf.Parser<ServiceDescriptorProto> PARSER =
-        new com.google.protobuf.AbstractParser<ServiceDescriptorProto>() {
-      @Override
-	public ServiceDescriptorProto parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceDescriptorProto(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<ServiceDescriptorProto> getParserForType() {
-      return PARSER;
-    }
-
     private int bitField0_;
     public static final int NAME_FIELD_NUMBER = 1;
-    private java.lang.Object name_;
+    private volatile java.lang.Object name_;
     /**
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public boolean hasName() {
+    public boolean hasName() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -12720,11 +16275,10 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public java.lang.String getName() {
+    public java.lang.String getName() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -12738,10 +16292,9 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString
+    public com.google.protobuf.ByteString
         getNameBytes() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -12758,6 +16311,5 @@
      * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> getMethodList() {
+    public java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> getMethodList() {
       return method_;
     }
@@ -12765,6 +16317,5 @@
      * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
      */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder>
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> 
         getMethodOrBuilderList() {
       return method_;
@@ -12773,6 +16324,5 @@
      * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
      */
-    @Override
-	public int getMethodCount() {
+    public int getMethodCount() {
       return method_.size();
     }
@@ -12780,6 +16330,5 @@
      * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getMethod(int index) {
+    public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getMethod(int index) {
       return method_.get(index);
     }
@@ -12787,6 +16336,5 @@
      * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder getMethodOrBuilder(
+    public com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder getMethodOrBuilder(
         int index) {
       return method_.get(index);
@@ -12798,6 +16346,5 @@
      * <code>optional .google.protobuf.ServiceOptions options = 3;</code>
      */
-    @Override
-	public boolean hasOptions() {
+    public boolean hasOptions() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
@@ -12805,24 +16352,16 @@
      * <code>optional .google.protobuf.ServiceOptions options = 3;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.ServiceOptions getOptions() {
-      return options_;
+    public com.google.protobuf.DescriptorProtos.ServiceOptions getOptions() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance() : options_;
     }
     /**
      * <code>optional .google.protobuf.ServiceOptions options = 3;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder getOptionsOrBuilder() {
-      return options_;
-    }
-
-    private void initFields() {
-      name_ = "";
-      method_ = java.util.Collections.emptyList();
-      options_ = com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance();
-    }
+    public com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder getOptionsOrBuilder() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance() : options_;
+    }
+
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -12845,10 +16384,8 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(1, getNameBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
       }
       for (int i = 0; i < method_.size(); i++) {
@@ -12856,19 +16393,16 @@
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeMessage(3, options_);
-      }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+        output.writeMessage(3, getOptions());
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(1, getNameBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
       }
       for (int i = 0; i < method_.size(); i++) {
@@ -12878,18 +16412,73 @@
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, options_);
-      }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+          .computeMessageSize(3, getOptions());
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.ServiceDescriptorProto)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.ServiceDescriptorProto other = (com.google.protobuf.DescriptorProtos.ServiceDescriptorProto) obj;
+
+      boolean result = true;
+      result = result && (hasName() == other.hasName());
+      if (hasName()) {
+        result = result && getName()
+            .equals(other.getName());
+      }
+      result = result && getMethodList()
+          .equals(other.getMethodList());
+      result = result && (hasOptions() == other.hasOptions());
+      if (hasOptions()) {
+        result = result && getOptions()
+            .equals(other.getOptions());
+      }
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasName()) {
+        hash = (37 * hash) + NAME_FIELD_NUMBER;
+        hash = (53 * hash) + getName().hashCode();
+      }
+      if (getMethodCount() > 0) {
+        hash = (37 * hash) + METHOD_FIELD_NUMBER;
+        hash = (53 * hash) + getMethodList().hashCode();
+      }
+      if (hasOptions()) {
+        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
+        hash = (53 * hash) + getOptions().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
         com.google.protobuf.ByteString data)
@@ -12915,5 +16504,6 @@
     public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
@@ -12921,9 +16511,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseDelimitedFrom(
@@ -12931,10 +16523,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
@@ -12942,31 +16536,35 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
     /**
-     * Protobuf type {@code google.protobuf.ServiceDescriptorProto}
-     *
      * <pre>
      * Describes a service.
      * </pre>
+     *
+     * Protobuf type {@code google.protobuf.ServiceDescriptorProto}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.ServiceDescriptorProto)
         com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder {
@@ -12976,6 +16574,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable
@@ -12990,20 +16587,16 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getMethodFieldBuilder();
           getOptionsFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         name_ = "";
@@ -13016,5 +16609,5 @@
         }
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance();
+          options_ = null;
         } else {
           optionsBuilder_.clear();
@@ -13024,22 +16617,14 @@
       }
 
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto build() {
+      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto build() {
         com.google.protobuf.DescriptorProtos.ServiceDescriptorProto result = buildPartial();
         if (!result.isInitialized()) {
@@ -13049,6 +16634,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto buildPartial() {
+      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto buildPartial() {
         com.google.protobuf.DescriptorProtos.ServiceDescriptorProto result = new com.google.protobuf.DescriptorProtos.ServiceDescriptorProto(this);
         int from_bitField0_ = bitField0_;
@@ -13080,6 +16664,31 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.ServiceDescriptorProto) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.ServiceDescriptorProto)other);
@@ -13115,6 +16724,6 @@
               method_ = other.method_;
               bitField0_ = (bitField0_ & ~0x00000002);
-              methodBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              methodBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getMethodFieldBuilder() : null;
             } else {
@@ -13126,13 +16735,12 @@
           mergeOptions(other.getOptions());
         }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         for (int i = 0; i < getMethodCount(); i++) {
           if (!getMethod(i).isInitialized()) {
-
             return false;
           }
@@ -13140,5 +16748,4 @@
         if (hasOptions()) {
           if (!getOptions().isInitialized()) {
-
             return false;
           }
@@ -13147,6 +16754,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -13157,5 +16763,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.ServiceDescriptorProto) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -13171,6 +16777,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public boolean hasName() {
+      public boolean hasName() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
@@ -13178,6 +16783,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public java.lang.String getName() {
+      public java.lang.String getName() {
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
@@ -13196,10 +16800,9 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getNameBytes() {
         java.lang.Object ref = name_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -13250,10 +16853,10 @@
       private void ensureMethodIsMutable() {
         if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          method_ = new java.util.ArrayList<>(method_);
+          method_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.MethodDescriptorProto>(method_);
           bitField0_ |= 0x00000002;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.MethodDescriptorProto, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> methodBuilder_;
 
@@ -13261,6 +16864,5 @@
        * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> getMethodList() {
+      public java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> getMethodList() {
         if (methodBuilder_ == null) {
           return java.util.Collections.unmodifiableList(method_);
@@ -13272,6 +16874,5 @@
        * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
        */
-      @Override
-	public int getMethodCount() {
+      public int getMethodCount() {
         if (methodBuilder_ == null) {
           return method_.size();
@@ -13283,6 +16884,5 @@
        * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getMethod(int index) {
+      public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getMethod(int index) {
         if (methodBuilder_ == null) {
           return method_.get(index);
@@ -13434,6 +17034,5 @@
        * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder getMethodOrBuilder(
+      public com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder getMethodOrBuilder(
           int index) {
         if (methodBuilder_ == null) {
@@ -13445,6 +17044,5 @@
        * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
        */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder>
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> 
            getMethodOrBuilderList() {
         if (methodBuilder_ != null) {
@@ -13472,13 +17070,14 @@
        * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
        */
-      public java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder>
+      public java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder> 
            getMethodBuilderList() {
         return getMethodFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.MethodDescriptorProto, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.MethodDescriptorProto, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> 
           getMethodFieldBuilder() {
         if (methodBuilder_ == null) {
-          methodBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          methodBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.MethodDescriptorProto, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder>(
                   method_,
                   ((bitField0_ & 0x00000002) == 0x00000002),
@@ -13490,12 +17089,11 @@
       }
 
-      private com.google.protobuf.DescriptorProtos.ServiceOptions options_ = com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance();
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.DescriptorProtos.ServiceOptions options_ = null;
+      private com.google.protobuf.SingleFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.ServiceOptions, com.google.protobuf.DescriptorProtos.ServiceOptions.Builder, com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder> optionsBuilder_;
       /**
        * <code>optional .google.protobuf.ServiceOptions options = 3;</code>
        */
-      @Override
-	public boolean hasOptions() {
+      public boolean hasOptions() {
         return ((bitField0_ & 0x00000004) == 0x00000004);
       }
@@ -13503,8 +17101,7 @@
        * <code>optional .google.protobuf.ServiceOptions options = 3;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.ServiceOptions getOptions() {
+      public com.google.protobuf.DescriptorProtos.ServiceOptions getOptions() {
         if (optionsBuilder_ == null) {
-          return options_;
+          return options_ == null ? com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance() : options_;
         } else {
           return optionsBuilder_.getMessage();
@@ -13547,4 +17144,5 @@
         if (optionsBuilder_ == null) {
           if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              options_ != null &&
               options_ != com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance()) {
             options_ =
@@ -13565,5 +17163,5 @@
       public Builder clearOptions() {
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance();
+          options_ = null;
           onChanged();
         } else {
@@ -13584,10 +17182,10 @@
        * <code>optional .google.protobuf.ServiceOptions options = 3;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder getOptionsOrBuilder() {
+      public com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder getOptionsOrBuilder() {
         if (optionsBuilder_ != null) {
           return optionsBuilder_.getMessageOrBuilder();
         } else {
-          return options_;
+          return options_ == null ?
+              com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance() : options_;
         }
       }
@@ -13595,9 +17193,10 @@
        * <code>optional .google.protobuf.ServiceOptions options = 3;</code>
        */
-      private com.google.protobuf.SingleFieldBuilder<
-          com.google.protobuf.DescriptorProtos.ServiceOptions, com.google.protobuf.DescriptorProtos.ServiceOptions.Builder, com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder>
+      private com.google.protobuf.SingleFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.ServiceOptions, com.google.protobuf.DescriptorProtos.ServiceOptions.Builder, com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder> 
           getOptionsFieldBuilder() {
         if (optionsBuilder_ == null) {
-          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<>(
+          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.ServiceOptions, com.google.protobuf.DescriptorProtos.ServiceOptions.Builder, com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder>(
                   getOptions(),
                   getParentForChildren(),
@@ -13607,14 +17206,51 @@
         return optionsBuilder_;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.ServiceDescriptorProto)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.ServiceDescriptorProto)
+    private static final com.google.protobuf.DescriptorProtos.ServiceDescriptorProto DEFAULT_INSTANCE;
     static {
-      defaultInstance = new ServiceDescriptorProto(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.ServiceDescriptorProto)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.ServiceDescriptorProto();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<ServiceDescriptorProto>
+        PARSER = new com.google.protobuf.AbstractParser<ServiceDescriptorProto>() {
+      public ServiceDescriptorProto parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new ServiceDescriptorProto(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<ServiceDescriptorProto> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ServiceDescriptorProto> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
@@ -13638,28 +17274,28 @@
 
     /**
-     * <code>optional string input_type = 2;</code>
-     *
      * <pre>
      * Input and output type names.  These are resolved in the same way as
      * FieldDescriptorProto.type_name, but must refer to a message type.
      * </pre>
+     *
+     * <code>optional string input_type = 2;</code>
      */
     boolean hasInputType();
     /**
-     * <code>optional string input_type = 2;</code>
-     *
      * <pre>
      * Input and output type names.  These are resolved in the same way as
      * FieldDescriptorProto.type_name, but must refer to a message type.
      * </pre>
+     *
+     * <code>optional string input_type = 2;</code>
      */
     java.lang.String getInputType();
     /**
-     * <code>optional string input_type = 2;</code>
-     *
      * <pre>
      * Input and output type names.  These are resolved in the same way as
      * FieldDescriptorProto.type_name, but must refer to a message type.
      * </pre>
+     *
+     * <code>optional string input_type = 2;</code>
      */
     com.google.protobuf.ByteString
@@ -13692,37 +17328,66 @@
      */
     com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder getOptionsOrBuilder();
+
+    /**
+     * <pre>
+     * Identifies if client streams multiple client messages
+     * </pre>
+     *
+     * <code>optional bool client_streaming = 5 [default = false];</code>
+     */
+    boolean hasClientStreaming();
+    /**
+     * <pre>
+     * Identifies if client streams multiple client messages
+     * </pre>
+     *
+     * <code>optional bool client_streaming = 5 [default = false];</code>
+     */
+    boolean getClientStreaming();
+
+    /**
+     * <pre>
+     * Identifies if server streams multiple server messages
+     * </pre>
+     *
+     * <code>optional bool server_streaming = 6 [default = false];</code>
+     */
+    boolean hasServerStreaming();
+    /**
+     * <pre>
+     * Identifies if server streams multiple server messages
+     * </pre>
+     *
+     * <code>optional bool server_streaming = 6 [default = false];</code>
+     */
+    boolean getServerStreaming();
   }
   /**
-   * Protobuf type {@code google.protobuf.MethodDescriptorProto}
-   *
    * <pre>
    * Describes a method of a service.
    * </pre>
+   *
+   * Protobuf type {@code google.protobuf.MethodDescriptorProto}
    */
-  public static final class MethodDescriptorProto extends
-      com.google.protobuf.GeneratedMessage implements
+  public  static final class MethodDescriptorProto extends
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:google.protobuf.MethodDescriptorProto)
       MethodDescriptorProtoOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use MethodDescriptorProto.newBuilder() to construct.
-    private MethodDescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+    private MethodDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private MethodDescriptorProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final MethodDescriptorProto defaultInstance;
-    public static MethodDescriptorProto getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public MethodDescriptorProto getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private MethodDescriptorProto() {
+      name_ = "";
+      inputType_ = "";
+      outputType_ = "";
+      clientStreaming_ = false;
+      serverStreaming_ = false;
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -13731,5 +17396,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -13744,6 +17409,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -13781,4 +17446,14 @@
               break;
             }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              clientStreaming_ = input.readBool();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              serverStreaming_ = input.readBool();
+              break;
+            }
           }
         }
@@ -13787,5 +17462,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
@@ -13798,6 +17473,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable
@@ -13806,28 +17480,11 @@
     }
 
-    public static com.google.protobuf.Parser<MethodDescriptorProto> PARSER =
-        new com.google.protobuf.AbstractParser<MethodDescriptorProto>() {
-      @Override
-	public MethodDescriptorProto parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new MethodDescriptorProto(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<MethodDescriptorProto> getParserForType() {
-      return PARSER;
-    }
-
     private int bitField0_;
     public static final int NAME_FIELD_NUMBER = 1;
-    private java.lang.Object name_;
+    private volatile java.lang.Object name_;
     /**
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public boolean hasName() {
+    public boolean hasName() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -13835,11 +17492,10 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public java.lang.String getName() {
+    public java.lang.String getName() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -13853,10 +17509,9 @@
      * <code>optional string name = 1;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString
+    public com.google.protobuf.ByteString
         getNameBytes() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -13869,32 +17524,30 @@
 
     public static final int INPUT_TYPE_FIELD_NUMBER = 2;
-    private java.lang.Object inputType_;
-    /**
-     * <code>optional string input_type = 2;</code>
-     *
+    private volatile java.lang.Object inputType_;
+    /**
      * <pre>
      * Input and output type names.  These are resolved in the same way as
      * FieldDescriptorProto.type_name, but must refer to a message type.
      * </pre>
-     */
-    @Override
-	public boolean hasInputType() {
+     *
+     * <code>optional string input_type = 2;</code>
+     */
+    public boolean hasInputType() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
     /**
-     * <code>optional string input_type = 2;</code>
-     *
      * <pre>
      * Input and output type names.  These are resolved in the same way as
      * FieldDescriptorProto.type_name, but must refer to a message type.
      * </pre>
-     */
-    @Override
-	public java.lang.String getInputType() {
+     *
+     * <code>optional string input_type = 2;</code>
+     */
+    public java.lang.String getInputType() {
       java.lang.Object ref = inputType_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -13906,17 +17559,16 @@
     }
     /**
-     * <code>optional string input_type = 2;</code>
-     *
      * <pre>
      * Input and output type names.  These are resolved in the same way as
      * FieldDescriptorProto.type_name, but must refer to a message type.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
+     *
+     * <code>optional string input_type = 2;</code>
+     */
+    public com.google.protobuf.ByteString
         getInputTypeBytes() {
       java.lang.Object ref = inputType_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -13929,10 +17581,9 @@
 
     public static final int OUTPUT_TYPE_FIELD_NUMBER = 3;
-    private java.lang.Object outputType_;
+    private volatile java.lang.Object outputType_;
     /**
      * <code>optional string output_type = 3;</code>
      */
-    @Override
-	public boolean hasOutputType() {
+    public boolean hasOutputType() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
@@ -13940,11 +17591,10 @@
      * <code>optional string output_type = 3;</code>
      */
-    @Override
-	public java.lang.String getOutputType() {
+    public java.lang.String getOutputType() {
       java.lang.Object ref = outputType_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -13958,10 +17608,9 @@
      * <code>optional string output_type = 3;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString
+    public com.google.protobuf.ByteString
         getOutputTypeBytes() {
       java.lang.Object ref = outputType_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -13978,6 +17627,5 @@
      * <code>optional .google.protobuf.MethodOptions options = 4;</code>
      */
-    @Override
-	public boolean hasOptions() {
+    public boolean hasOptions() {
       return ((bitField0_ & 0x00000008) == 0x00000008);
     }
@@ -13985,25 +17633,62 @@
      * <code>optional .google.protobuf.MethodOptions options = 4;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.MethodOptions getOptions() {
-      return options_;
+    public com.google.protobuf.DescriptorProtos.MethodOptions getOptions() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance() : options_;
     }
     /**
      * <code>optional .google.protobuf.MethodOptions options = 4;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder getOptionsOrBuilder() {
-      return options_;
-    }
-
-    private void initFields() {
-      name_ = "";
-      inputType_ = "";
-      outputType_ = "";
-      options_ = com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance();
-    }
+    public com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder getOptionsOrBuilder() {
+      return options_ == null ? com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance() : options_;
+    }
+
+    public static final int CLIENT_STREAMING_FIELD_NUMBER = 5;
+    private boolean clientStreaming_;
+    /**
+     * <pre>
+     * Identifies if client streams multiple client messages
+     * </pre>
+     *
+     * <code>optional bool client_streaming = 5 [default = false];</code>
+     */
+    public boolean hasClientStreaming() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <pre>
+     * Identifies if client streams multiple client messages
+     * </pre>
+     *
+     * <code>optional bool client_streaming = 5 [default = false];</code>
+     */
+    public boolean getClientStreaming() {
+      return clientStreaming_;
+    }
+
+    public static final int SERVER_STREAMING_FIELD_NUMBER = 6;
+    private boolean serverStreaming_;
+    /**
+     * <pre>
+     * Identifies if server streams multiple server messages
+     * </pre>
+     *
+     * <code>optional bool server_streaming = 6 [default = false];</code>
+     */
+    public boolean hasServerStreaming() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <pre>
+     * Identifies if server streams multiple server messages
+     * </pre>
+     *
+     * <code>optional bool server_streaming = 6 [default = false];</code>
+     */
+    public boolean getServerStreaming() {
+      return serverStreaming_;
+    }
+
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -14020,58 +17705,152 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(1, getNameBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getInputTypeBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, inputType_);
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeBytes(3, getOutputTypeBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, outputType_);
       }
       if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        output.writeMessage(4, options_);
-      }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+        output.writeMessage(4, getOptions());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBool(5, clientStreaming_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBool(6, serverStreaming_);
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(1, getNameBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getInputTypeBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, inputType_);
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(3, getOutputTypeBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, outputType_);
       }
       if (((bitField0_ & 0x00000008) == 0x00000008)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, options_);
-      }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+          .computeMessageSize(4, getOptions());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(5, clientStreaming_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(6, serverStreaming_);
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.MethodDescriptorProto)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.MethodDescriptorProto other = (com.google.protobuf.DescriptorProtos.MethodDescriptorProto) obj;
+
+      boolean result = true;
+      result = result && (hasName() == other.hasName());
+      if (hasName()) {
+        result = result && getName()
+            .equals(other.getName());
+      }
+      result = result && (hasInputType() == other.hasInputType());
+      if (hasInputType()) {
+        result = result && getInputType()
+            .equals(other.getInputType());
+      }
+      result = result && (hasOutputType() == other.hasOutputType());
+      if (hasOutputType()) {
+        result = result && getOutputType()
+            .equals(other.getOutputType());
+      }
+      result = result && (hasOptions() == other.hasOptions());
+      if (hasOptions()) {
+        result = result && getOptions()
+            .equals(other.getOptions());
+      }
+      result = result && (hasClientStreaming() == other.hasClientStreaming());
+      if (hasClientStreaming()) {
+        result = result && (getClientStreaming()
+            == other.getClientStreaming());
+      }
+      result = result && (hasServerStreaming() == other.hasServerStreaming());
+      if (hasServerStreaming()) {
+        result = result && (getServerStreaming()
+            == other.getServerStreaming());
+      }
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasName()) {
+        hash = (37 * hash) + NAME_FIELD_NUMBER;
+        hash = (53 * hash) + getName().hashCode();
+      }
+      if (hasInputType()) {
+        hash = (37 * hash) + INPUT_TYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getInputType().hashCode();
+      }
+      if (hasOutputType()) {
+        hash = (37 * hash) + OUTPUT_TYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getOutputType().hashCode();
+      }
+      if (hasOptions()) {
+        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
+        hash = (53 * hash) + getOptions().hashCode();
+      }
+      if (hasClientStreaming()) {
+        hash = (37 * hash) + CLIENT_STREAMING_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getClientStreaming());
+      }
+      if (hasServerStreaming()) {
+        hash = (37 * hash) + SERVER_STREAMING_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getServerStreaming());
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
         com.google.protobuf.ByteString data)
@@ -14097,5 +17876,6 @@
     public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
@@ -14103,9 +17883,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseDelimitedFrom(
@@ -14113,10 +17895,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
@@ -14124,31 +17908,35 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.MethodDescriptorProto prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
     /**
-     * Protobuf type {@code google.protobuf.MethodDescriptorProto}
-     *
      * <pre>
      * Describes a method of a service.
      * </pre>
+     *
+     * Protobuf type {@code google.protobuf.MethodDescriptorProto}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.MethodDescriptorProto)
         com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder {
@@ -14158,6 +17946,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable
@@ -14172,19 +17959,15 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getOptionsFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         name_ = "";
@@ -14195,30 +17978,26 @@
         bitField0_ = (bitField0_ & ~0x00000004);
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance();
+          options_ = null;
         } else {
           optionsBuilder_.clear();
         }
         bitField0_ = (bitField0_ & ~0x00000008);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+        clientStreaming_ = false;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        serverStreaming_ = false;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.MethodDescriptorProto.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.MethodDescriptorProto build() {
+      public com.google.protobuf.DescriptorProtos.MethodDescriptorProto build() {
         com.google.protobuf.DescriptorProtos.MethodDescriptorProto result = buildPartial();
         if (!result.isInitialized()) {
@@ -14228,6 +18007,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.MethodDescriptorProto buildPartial() {
+      public com.google.protobuf.DescriptorProtos.MethodDescriptorProto buildPartial() {
         com.google.protobuf.DescriptorProtos.MethodDescriptorProto result = new com.google.protobuf.DescriptorProtos.MethodDescriptorProto(this);
         int from_bitField0_ = bitField0_;
@@ -14253,4 +18031,12 @@
           result.options_ = optionsBuilder_.build();
         }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.clientStreaming_ = clientStreaming_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.serverStreaming_ = serverStreaming_;
         result.bitField0_ = to_bitField0_;
         onBuilt();
@@ -14258,6 +18044,31 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.MethodDescriptorProto) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.MethodDescriptorProto)other);
@@ -14288,13 +18099,18 @@
           mergeOptions(other.getOptions());
         }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        if (other.hasClientStreaming()) {
+          setClientStreaming(other.getClientStreaming());
+        }
+        if (other.hasServerStreaming()) {
+          setServerStreaming(other.getServerStreaming());
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         if (hasOptions()) {
           if (!getOptions().isInitialized()) {
-
             return false;
           }
@@ -14303,6 +18119,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -14313,5 +18128,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.MethodDescriptorProto) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -14327,6 +18142,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public boolean hasName() {
+      public boolean hasName() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
@@ -14334,6 +18148,5 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public java.lang.String getName() {
+      public java.lang.String getName() {
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
@@ -14352,10 +18165,9 @@
        * <code>optional string name = 1;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getNameBytes() {
         java.lang.Object ref = name_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -14404,25 +18216,23 @@
       private java.lang.Object inputType_ = "";
       /**
-       * <code>optional string input_type = 2;</code>
-       *
        * <pre>
        * Input and output type names.  These are resolved in the same way as
        * FieldDescriptorProto.type_name, but must refer to a message type.
        * </pre>
-       */
-      @Override
-	public boolean hasInputType() {
+       *
+       * <code>optional string input_type = 2;</code>
+       */
+      public boolean hasInputType() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
       /**
-       * <code>optional string input_type = 2;</code>
-       *
        * <pre>
        * Input and output type names.  These are resolved in the same way as
        * FieldDescriptorProto.type_name, but must refer to a message type.
        * </pre>
-       */
-      @Override
-	public java.lang.String getInputType() {
+       *
+       * <code>optional string input_type = 2;</code>
+       */
+      public java.lang.String getInputType() {
         java.lang.Object ref = inputType_;
         if (!(ref instanceof java.lang.String)) {
@@ -14439,17 +18249,16 @@
       }
       /**
-       * <code>optional string input_type = 2;</code>
-       *
        * <pre>
        * Input and output type names.  These are resolved in the same way as
        * FieldDescriptorProto.type_name, but must refer to a message type.
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
+       *
+       * <code>optional string input_type = 2;</code>
+       */
+      public com.google.protobuf.ByteString
           getInputTypeBytes() {
         java.lang.Object ref = inputType_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -14461,10 +18270,10 @@
       }
       /**
-       * <code>optional string input_type = 2;</code>
-       *
        * <pre>
        * Input and output type names.  These are resolved in the same way as
        * FieldDescriptorProto.type_name, but must refer to a message type.
        * </pre>
+       *
+       * <code>optional string input_type = 2;</code>
        */
       public Builder setInputType(
@@ -14479,10 +18288,10 @@
       }
       /**
-       * <code>optional string input_type = 2;</code>
-       *
        * <pre>
        * Input and output type names.  These are resolved in the same way as
        * FieldDescriptorProto.type_name, but must refer to a message type.
        * </pre>
+       *
+       * <code>optional string input_type = 2;</code>
        */
       public Builder clearInputType() {
@@ -14493,10 +18302,10 @@
       }
       /**
-       * <code>optional string input_type = 2;</code>
-       *
        * <pre>
        * Input and output type names.  These are resolved in the same way as
        * FieldDescriptorProto.type_name, but must refer to a message type.
        * </pre>
+       *
+       * <code>optional string input_type = 2;</code>
        */
       public Builder setInputTypeBytes(
@@ -14515,6 +18324,5 @@
        * <code>optional string output_type = 3;</code>
        */
-      @Override
-	public boolean hasOutputType() {
+      public boolean hasOutputType() {
         return ((bitField0_ & 0x00000004) == 0x00000004);
       }
@@ -14522,6 +18330,5 @@
        * <code>optional string output_type = 3;</code>
        */
-      @Override
-	public java.lang.String getOutputType() {
+      public java.lang.String getOutputType() {
         java.lang.Object ref = outputType_;
         if (!(ref instanceof java.lang.String)) {
@@ -14540,10 +18347,9 @@
        * <code>optional string output_type = 3;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getOutputTypeBytes() {
         java.lang.Object ref = outputType_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -14590,12 +18396,11 @@
       }
 
-      private com.google.protobuf.DescriptorProtos.MethodOptions options_ = com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance();
-      private com.google.protobuf.SingleFieldBuilder<
+      private com.google.protobuf.DescriptorProtos.MethodOptions options_ = null;
+      private com.google.protobuf.SingleFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.MethodOptions, com.google.protobuf.DescriptorProtos.MethodOptions.Builder, com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder> optionsBuilder_;
       /**
        * <code>optional .google.protobuf.MethodOptions options = 4;</code>
        */
-      @Override
-	public boolean hasOptions() {
+      public boolean hasOptions() {
         return ((bitField0_ & 0x00000008) == 0x00000008);
       }
@@ -14603,8 +18408,7 @@
        * <code>optional .google.protobuf.MethodOptions options = 4;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.MethodOptions getOptions() {
+      public com.google.protobuf.DescriptorProtos.MethodOptions getOptions() {
         if (optionsBuilder_ == null) {
-          return options_;
+          return options_ == null ? com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance() : options_;
         } else {
           return optionsBuilder_.getMessage();
@@ -14647,4 +18451,5 @@
         if (optionsBuilder_ == null) {
           if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              options_ != null &&
               options_ != com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance()) {
             options_ =
@@ -14665,5 +18470,5 @@
       public Builder clearOptions() {
         if (optionsBuilder_ == null) {
-          options_ = com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance();
+          options_ = null;
           onChanged();
         } else {
@@ -14684,10 +18489,10 @@
        * <code>optional .google.protobuf.MethodOptions options = 4;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder getOptionsOrBuilder() {
+      public com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder getOptionsOrBuilder() {
         if (optionsBuilder_ != null) {
           return optionsBuilder_.getMessageOrBuilder();
         } else {
-          return options_;
+          return options_ == null ?
+              com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance() : options_;
         }
       }
@@ -14695,9 +18500,10 @@
        * <code>optional .google.protobuf.MethodOptions options = 4;</code>
        */
-      private com.google.protobuf.SingleFieldBuilder<
-          com.google.protobuf.DescriptorProtos.MethodOptions, com.google.protobuf.DescriptorProtos.MethodOptions.Builder, com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder>
+      private com.google.protobuf.SingleFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.MethodOptions, com.google.protobuf.DescriptorProtos.MethodOptions.Builder, com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder> 
           getOptionsFieldBuilder() {
         if (optionsBuilder_ == null) {
-          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<>(
+          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.MethodOptions, com.google.protobuf.DescriptorProtos.MethodOptions.Builder, com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder>(
                   getOptions(),
                   getParentForChildren(),
@@ -14708,23 +18514,154 @@
       }
 
+      private boolean clientStreaming_ ;
+      /**
+       * <pre>
+       * Identifies if client streams multiple client messages
+       * </pre>
+       *
+       * <code>optional bool client_streaming = 5 [default = false];</code>
+       */
+      public boolean hasClientStreaming() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <pre>
+       * Identifies if client streams multiple client messages
+       * </pre>
+       *
+       * <code>optional bool client_streaming = 5 [default = false];</code>
+       */
+      public boolean getClientStreaming() {
+        return clientStreaming_;
+      }
+      /**
+       * <pre>
+       * Identifies if client streams multiple client messages
+       * </pre>
+       *
+       * <code>optional bool client_streaming = 5 [default = false];</code>
+       */
+      public Builder setClientStreaming(boolean value) {
+        bitField0_ |= 0x00000010;
+        clientStreaming_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Identifies if client streams multiple client messages
+       * </pre>
+       *
+       * <code>optional bool client_streaming = 5 [default = false];</code>
+       */
+      public Builder clearClientStreaming() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        clientStreaming_ = false;
+        onChanged();
+        return this;
+      }
+
+      private boolean serverStreaming_ ;
+      /**
+       * <pre>
+       * Identifies if server streams multiple server messages
+       * </pre>
+       *
+       * <code>optional bool server_streaming = 6 [default = false];</code>
+       */
+      public boolean hasServerStreaming() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <pre>
+       * Identifies if server streams multiple server messages
+       * </pre>
+       *
+       * <code>optional bool server_streaming = 6 [default = false];</code>
+       */
+      public boolean getServerStreaming() {
+        return serverStreaming_;
+      }
+      /**
+       * <pre>
+       * Identifies if server streams multiple server messages
+       * </pre>
+       *
+       * <code>optional bool server_streaming = 6 [default = false];</code>
+       */
+      public Builder setServerStreaming(boolean value) {
+        bitField0_ |= 0x00000020;
+        serverStreaming_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Identifies if server streams multiple server messages
+       * </pre>
+       *
+       * <code>optional bool server_streaming = 6 [default = false];</code>
+       */
+      public Builder clearServerStreaming() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        serverStreaming_ = false;
+        onChanged();
+        return this;
+      }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
       // @@protoc_insertion_point(builder_scope:google.protobuf.MethodDescriptorProto)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.MethodDescriptorProto)
+    private static final com.google.protobuf.DescriptorProtos.MethodDescriptorProto DEFAULT_INSTANCE;
     static {
-      defaultInstance = new MethodDescriptorProto(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.MethodDescriptorProto)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.MethodDescriptorProto();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<MethodDescriptorProto>
+        PARSER = new com.google.protobuf.AbstractParser<MethodDescriptorProto>() {
+      public MethodDescriptorProto parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new MethodDescriptorProto(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<MethodDescriptorProto> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<MethodDescriptorProto> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
   public interface FileOptionsOrBuilder extends
       // @@protoc_insertion_point(interface_extends:google.protobuf.FileOptions)
-      com.google.protobuf.GeneratedMessage.
+      com.google.protobuf.GeneratedMessageV3.
           ExtendableMessageOrBuilder<FileOptions> {
 
     /**
-     * <code>optional string java_package = 1;</code>
-     *
      * <pre>
      * Sets the Java package where classes generated from this .proto will be
@@ -14733,9 +18670,9 @@
      * domain names.
      * </pre>
+     *
+     * <code>optional string java_package = 1;</code>
      */
     boolean hasJavaPackage();
     /**
-     * <code>optional string java_package = 1;</code>
-     *
      * <pre>
      * Sets the Java package where classes generated from this .proto will be
@@ -14744,9 +18681,9 @@
      * domain names.
      * </pre>
+     *
+     * <code>optional string java_package = 1;</code>
      */
     java.lang.String getJavaPackage();
     /**
-     * <code>optional string java_package = 1;</code>
-     *
      * <pre>
      * Sets the Java package where classes generated from this .proto will be
@@ -14755,4 +18692,6 @@
      * domain names.
      * </pre>
+     *
+     * <code>optional string java_package = 1;</code>
      */
     com.google.protobuf.ByteString
@@ -14760,6 +18699,4 @@
 
     /**
-     * <code>optional string java_outer_classname = 8;</code>
-     *
      * <pre>
      * If set, all the classes from the .proto file are wrapped in a single
@@ -14769,9 +18706,9 @@
      * explicitly choose the class name).
      * </pre>
+     *
+     * <code>optional string java_outer_classname = 8;</code>
      */
     boolean hasJavaOuterClassname();
     /**
-     * <code>optional string java_outer_classname = 8;</code>
-     *
      * <pre>
      * If set, all the classes from the .proto file are wrapped in a single
@@ -14781,9 +18718,9 @@
      * explicitly choose the class name).
      * </pre>
+     *
+     * <code>optional string java_outer_classname = 8;</code>
      */
     java.lang.String getJavaOuterClassname();
     /**
-     * <code>optional string java_outer_classname = 8;</code>
-     *
      * <pre>
      * If set, all the classes from the .proto file are wrapped in a single
@@ -14793,4 +18730,6 @@
      * explicitly choose the class name).
      * </pre>
+     *
+     * <code>optional string java_outer_classname = 8;</code>
      */
     com.google.protobuf.ByteString
@@ -14798,6 +18737,4 @@
 
     /**
-     * <code>optional bool java_multiple_files = 10 [default = false];</code>
-     *
      * <pre>
      * If set true, then the Java code generator will generate a separate .java
@@ -14808,9 +18745,9 @@
      * top-level extensions defined in the file.
      * </pre>
+     *
+     * <code>optional bool java_multiple_files = 10 [default = false];</code>
      */
     boolean hasJavaMultipleFiles();
     /**
-     * <code>optional bool java_multiple_files = 10 [default = false];</code>
-     *
      * <pre>
      * If set true, then the Java code generator will generate a separate .java
@@ -14821,45 +18758,27 @@
      * top-level extensions defined in the file.
      * </pre>
+     *
+     * <code>optional bool java_multiple_files = 10 [default = false];</code>
      */
     boolean getJavaMultipleFiles();
 
     /**
-     * <code>optional bool java_generate_equals_and_hash = 20 [default = false];</code>
+     * <pre>
+     * This option does nothing.
+     * </pre>
      *
+     * <code>optional bool java_generate_equals_and_hash = 20 [deprecated = true];</code>
+     */
+    @java.lang.Deprecated boolean hasJavaGenerateEqualsAndHash();
+    /**
      * <pre>
-     * If set true, then the Java code generator will generate equals() and
-     * hashCode() methods for all messages defined in the .proto file.
-     * - In the full runtime, this is purely a speed optimization, as the
-     * AbstractMessage base class includes reflection-based implementations of
-     * these methods.
-     *- In the lite runtime, setting this option changes the semantics of
-     * equals() and hashCode() to more closely match those of the full runtime;
-     * the generated methods compute their results based on field values rather
-     * than object identity. (Implementations should not assume that hashcodes
-     * will be consistent across runtimes or versions of the protocol compiler.)
+     * This option does nothing.
      * </pre>
-     */
-    boolean hasJavaGenerateEqualsAndHash();
-    /**
-     * <code>optional bool java_generate_equals_and_hash = 20 [default = false];</code>
      *
-     * <pre>
-     * If set true, then the Java code generator will generate equals() and
-     * hashCode() methods for all messages defined in the .proto file.
-     * - In the full runtime, this is purely a speed optimization, as the
-     * AbstractMessage base class includes reflection-based implementations of
-     * these methods.
-     *- In the lite runtime, setting this option changes the semantics of
-     * equals() and hashCode() to more closely match those of the full runtime;
-     * the generated methods compute their results based on field values rather
-     * than object identity. (Implementations should not assume that hashcodes
-     * will be consistent across runtimes or versions of the protocol compiler.)
-     * </pre>
-     */
-    boolean getJavaGenerateEqualsAndHash();
-
-    /**
-     * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
-     *
+     * <code>optional bool java_generate_equals_and_hash = 20 [deprecated = true];</code>
+     */
+    @java.lang.Deprecated boolean getJavaGenerateEqualsAndHash();
+
+    /**
      * <pre>
      * If set true, then the Java2 code generator will generate code that
@@ -14870,9 +18789,9 @@
      * This option has no effect on when used with the lite runtime.
      * </pre>
+     *
+     * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
      */
     boolean hasJavaStringCheckUtf8();
     /**
-     * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
-     *
      * <pre>
      * If set true, then the Java2 code generator will generate code that
@@ -14883,4 +18802,6 @@
      * This option has no effect on when used with the lite runtime.
      * </pre>
+     *
+     * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
      */
     boolean getJavaStringCheckUtf8();
@@ -14896,28 +18817,37 @@
 
     /**
-     * <code>optional string go_package = 11;</code>
-     *
      * <pre>
      * Sets the Go package where structs generated from this .proto will be
-     * placed.  There is no default.
+     * placed. If omitted, the Go package will be derived from the following:
+     *   - The basename of the package import path, if provided.
+     *   - Otherwise, the package statement in the .proto file, if present.
+     *   - Otherwise, the basename of the .proto file, without extension.
      * </pre>
+     *
+     * <code>optional string go_package = 11;</code>
      */
     boolean hasGoPackage();
     /**
-     * <code>optional string go_package = 11;</code>
-     *
      * <pre>
      * Sets the Go package where structs generated from this .proto will be
-     * placed.  There is no default.
+     * placed. If omitted, the Go package will be derived from the following:
+     *   - The basename of the package import path, if provided.
+     *   - Otherwise, the package statement in the .proto file, if present.
+     *   - Otherwise, the basename of the .proto file, without extension.
      * </pre>
+     *
+     * <code>optional string go_package = 11;</code>
      */
     java.lang.String getGoPackage();
     /**
-     * <code>optional string go_package = 11;</code>
-     *
      * <pre>
      * Sets the Go package where structs generated from this .proto will be
-     * placed.  There is no default.
+     * placed. If omitted, the Go package will be derived from the following:
+     *   - The basename of the package import path, if provided.
+     *   - Otherwise, the package statement in the .proto file, if present.
+     *   - Otherwise, the basename of the .proto file, without extension.
      * </pre>
+     *
+     * <code>optional string go_package = 11;</code>
      */
     com.google.protobuf.ByteString
@@ -14925,6 +18855,4 @@
 
     /**
-     * <code>optional bool cc_generic_services = 16 [default = false];</code>
-     *
      * <pre>
      * Should generic services be generated in each language?  "Generic" services
@@ -14932,5 +18860,5 @@
      * main code generators in each language (without additional plugins).
      * Generic services were the only kind of service generation supported by
-     * early versions of proto2.
+     * early versions of google.protobuf.
      * Generic services are now considered deprecated in favor of using plugins
      * that generate code specific to your particular RPC system.  Therefore,
@@ -14938,9 +18866,9 @@
      * explicitly set them to true.
      * </pre>
+     *
+     * <code>optional bool cc_generic_services = 16 [default = false];</code>
      */
     boolean hasCcGenericServices();
     /**
-     * <code>optional bool cc_generic_services = 16 [default = false];</code>
-     *
      * <pre>
      * Should generic services be generated in each language?  "Generic" services
@@ -14948,5 +18876,5 @@
      * main code generators in each language (without additional plugins).
      * Generic services were the only kind of service generation supported by
-     * early versions of proto2.
+     * early versions of google.protobuf.
      * Generic services are now considered deprecated in favor of using plugins
      * that generate code specific to your particular RPC system.  Therefore,
@@ -14954,4 +18882,6 @@
      * explicitly set them to true.
      * </pre>
+     *
+     * <code>optional bool cc_generic_services = 16 [default = false];</code>
      */
     boolean getCcGenericServices();
@@ -14976,6 +18906,13 @@
 
     /**
-     * <code>optional bool deprecated = 23 [default = false];</code>
-     *
+     * <code>optional bool php_generic_services = 42 [default = false];</code>
+     */
+    boolean hasPhpGenericServices();
+    /**
+     * <code>optional bool php_generic_services = 42 [default = false];</code>
+     */
+    boolean getPhpGenericServices();
+
+    /**
      * <pre>
      * Is this file deprecated?
@@ -14984,9 +18921,9 @@
      * least, this is a formalization for deprecating files.
      * </pre>
+     *
+     * <code>optional bool deprecated = 23 [default = false];</code>
      */
     boolean hasDeprecated();
     /**
-     * <code>optional bool deprecated = 23 [default = false];</code>
-     *
      * <pre>
      * Is this file deprecated?
@@ -14995,47 +18932,219 @@
      * least, this is a formalization for deprecating files.
      * </pre>
+     *
+     * <code>optional bool deprecated = 23 [default = false];</code>
      */
     boolean getDeprecated();
 
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     * <pre>
+     * Enables the use of arenas for the proto messages in this file. This applies
+     * only to generated classes for C++.
+     * </pre>
      *
+     * <code>optional bool cc_enable_arenas = 31 [default = false];</code>
+     */
+    boolean hasCcEnableArenas();
+    /**
+     * <pre>
+     * Enables the use of arenas for the proto messages in this file. This applies
+     * only to generated classes for C++.
+     * </pre>
+     *
+     * <code>optional bool cc_enable_arenas = 31 [default = false];</code>
+     */
+    boolean getCcEnableArenas();
+
+    /**
+     * <pre>
+     * Sets the objective c class prefix which is prepended to all objective c
+     * generated classes from this .proto. There is no default.
+     * </pre>
+     *
+     * <code>optional string objc_class_prefix = 36;</code>
+     */
+    boolean hasObjcClassPrefix();
+    /**
+     * <pre>
+     * Sets the objective c class prefix which is prepended to all objective c
+     * generated classes from this .proto. There is no default.
+     * </pre>
+     *
+     * <code>optional string objc_class_prefix = 36;</code>
+     */
+    java.lang.String getObjcClassPrefix();
+    /**
+     * <pre>
+     * Sets the objective c class prefix which is prepended to all objective c
+     * generated classes from this .proto. There is no default.
+     * </pre>
+     *
+     * <code>optional string objc_class_prefix = 36;</code>
+     */
+    com.google.protobuf.ByteString
+        getObjcClassPrefixBytes();
+
+    /**
+     * <pre>
+     * Namespace for generated classes; defaults to the package.
+     * </pre>
+     *
+     * <code>optional string csharp_namespace = 37;</code>
+     */
+    boolean hasCsharpNamespace();
+    /**
+     * <pre>
+     * Namespace for generated classes; defaults to the package.
+     * </pre>
+     *
+     * <code>optional string csharp_namespace = 37;</code>
+     */
+    java.lang.String getCsharpNamespace();
+    /**
+     * <pre>
+     * Namespace for generated classes; defaults to the package.
+     * </pre>
+     *
+     * <code>optional string csharp_namespace = 37;</code>
+     */
+    com.google.protobuf.ByteString
+        getCsharpNamespaceBytes();
+
+    /**
+     * <pre>
+     * By default Swift generators will take the proto package and CamelCase it
+     * replacing '.' with underscore and use that to prefix the types/symbols
+     * defined. When this options is provided, they will use this value instead
+     * to prefix the types/symbols defined.
+     * </pre>
+     *
+     * <code>optional string swift_prefix = 39;</code>
+     */
+    boolean hasSwiftPrefix();
+    /**
+     * <pre>
+     * By default Swift generators will take the proto package and CamelCase it
+     * replacing '.' with underscore and use that to prefix the types/symbols
+     * defined. When this options is provided, they will use this value instead
+     * to prefix the types/symbols defined.
+     * </pre>
+     *
+     * <code>optional string swift_prefix = 39;</code>
+     */
+    java.lang.String getSwiftPrefix();
+    /**
+     * <pre>
+     * By default Swift generators will take the proto package and CamelCase it
+     * replacing '.' with underscore and use that to prefix the types/symbols
+     * defined. When this options is provided, they will use this value instead
+     * to prefix the types/symbols defined.
+     * </pre>
+     *
+     * <code>optional string swift_prefix = 39;</code>
+     */
+    com.google.protobuf.ByteString
+        getSwiftPrefixBytes();
+
+    /**
+     * <pre>
+     * Sets the php class prefix which is prepended to all php generated classes
+     * from this .proto. Default is empty.
+     * </pre>
+     *
+     * <code>optional string php_class_prefix = 40;</code>
+     */
+    boolean hasPhpClassPrefix();
+    /**
+     * <pre>
+     * Sets the php class prefix which is prepended to all php generated classes
+     * from this .proto. Default is empty.
+     * </pre>
+     *
+     * <code>optional string php_class_prefix = 40;</code>
+     */
+    java.lang.String getPhpClassPrefix();
+    /**
+     * <pre>
+     * Sets the php class prefix which is prepended to all php generated classes
+     * from this .proto. Default is empty.
+     * </pre>
+     *
+     * <code>optional string php_class_prefix = 40;</code>
+     */
+    com.google.protobuf.ByteString
+        getPhpClassPrefixBytes();
+
+    /**
+     * <pre>
+     * Use this option to change the namespace of php generated classes. Default
+     * is empty. When this option is empty, the package name will be used for
+     * determining the namespace.
+     * </pre>
+     *
+     * <code>optional string php_namespace = 41;</code>
+     */
+    boolean hasPhpNamespace();
+    /**
+     * <pre>
+     * Use this option to change the namespace of php generated classes. Default
+     * is empty. When this option is empty, the package name will be used for
+     * determining the namespace.
+     * </pre>
+     *
+     * <code>optional string php_namespace = 41;</code>
+     */
+    java.lang.String getPhpNamespace();
+    /**
+     * <pre>
+     * Use this option to change the namespace of php generated classes. Default
+     * is empty. When this option is empty, the package name will be used for
+     * determining the namespace.
+     * </pre>
+     *
+     * <code>optional string php_namespace = 41;</code>
+     */
+    com.google.protobuf.ByteString
+        getPhpNamespaceBytes();
+
+    /**
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> 
         getUninterpretedOptionList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     int getUninterpretedOptionCount();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
@@ -15045,30 +19154,39 @@
    * Protobuf type {@code google.protobuf.FileOptions}
    */
-  public static final class FileOptions extends
-      com.google.protobuf.GeneratedMessage.ExtendableMessage<
+  public  static final class FileOptions extends
+      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
         FileOptions> implements
       // @@protoc_insertion_point(message_implements:google.protobuf.FileOptions)
       FileOptionsOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use FileOptions.newBuilder() to construct.
-    private FileOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder<com.google.protobuf.DescriptorProtos.FileOptions, ?> builder) {
+    private FileOptions(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<com.google.protobuf.DescriptorProtos.FileOptions, ?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private FileOptions(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final FileOptions defaultInstance;
-    public static FileOptions getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public FileOptions getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private FileOptions() {
+      javaPackage_ = "";
+      javaOuterClassname_ = "";
+      javaMultipleFiles_ = false;
+      javaGenerateEqualsAndHash_ = false;
+      javaStringCheckUtf8_ = false;
+      optimizeFor_ = 1;
+      goPackage_ = "";
+      ccGenericServices_ = false;
+      javaGenericServices_ = false;
+      pyGenericServices_ = false;
+      phpGenericServices_ = false;
+      deprecated_ = false;
+      ccEnableArenas_ = false;
+      objcClassPrefix_ = "";
+      csharpNamespace_ = "";
+      swiftPrefix_ = "";
+      phpClassPrefix_ = "";
+      phpNamespace_ = "";
+      uninterpretedOption_ = java.util.Collections.emptyList();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -15077,5 +19195,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -15090,6 +19208,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -15115,5 +19233,5 @@
               } else {
                 bitField0_ |= 0x00000020;
-                optimizeFor_ = value;
+                optimizeFor_ = rawValue;
               }
               break;
@@ -15151,5 +19269,5 @@
             }
             case 184: {
-              bitField0_ |= 0x00000400;
+              bitField0_ |= 0x00000800;
               deprecated_ = input.readBool();
               break;
@@ -15160,10 +19278,51 @@
               break;
             }
+            case 248: {
+              bitField0_ |= 0x00001000;
+              ccEnableArenas_ = input.readBool();
+              break;
+            }
+            case 290: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00002000;
+              objcClassPrefix_ = bs;
+              break;
+            }
+            case 298: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00004000;
+              csharpNamespace_ = bs;
+              break;
+            }
+            case 314: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00008000;
+              swiftPrefix_ = bs;
+              break;
+            }
+            case 322: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00010000;
+              phpClassPrefix_ = bs;
+              break;
+            }
+            case 330: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00020000;
+              phpNamespace_ = bs;
+              break;
+            }
+            case 336: {
+              bitField0_ |= 0x00000400;
+              phpGenericServices_ = input.readBool();
+              break;
+            }
             case 7994: {
-              if (!((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
-                uninterpretedOption_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000800;
+              if (!((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
+                uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
+                mutable_bitField0_ |= 0x00040000;
               }
-              uninterpretedOption_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
+              uninterpretedOption_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
               break;
             }
@@ -15174,7 +19333,7 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
+        if (((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
           uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
         }
@@ -15188,6 +19347,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_fieldAccessorTable
@@ -15196,85 +19354,78 @@
     }
 
-    public static com.google.protobuf.Parser<FileOptions> PARSER =
-        new com.google.protobuf.AbstractParser<FileOptions>() {
-      @Override
-	public FileOptions parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new FileOptions(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<FileOptions> getParserForType() {
-      return PARSER;
-    }
-
-    /**
-     * Protobuf enum {@code google.protobuf.FileOptions.OptimizeMode}
-     *
+    /**
      * <pre>
      * Generated classes can be optimized for speed or code size.
      * </pre>
+     *
+     * Protobuf enum {@code google.protobuf.FileOptions.OptimizeMode}
      */
     public enum OptimizeMode
         implements com.google.protobuf.ProtocolMessageEnum {
       /**
+       * <pre>
+       * Generate complete code for parsing, serialization,
+       * </pre>
+       *
        * <code>SPEED = 1;</code>
-       *
+       */
+      SPEED(1),
+      /**
+       * <pre>
+       * etc.
+       * </pre>
+       *
+       * <code>CODE_SIZE = 2;</code>
+       */
+      CODE_SIZE(2),
+      /**
+       * <pre>
+       * Generate code using MessageLite and the lite runtime.
+       * </pre>
+       *
+       * <code>LITE_RUNTIME = 3;</code>
+       */
+      LITE_RUNTIME(3),
+      ;
+
+      /**
        * <pre>
        * Generate complete code for parsing, serialization,
        * </pre>
-       */
-      SPEED(0, 1),
-      /**
+       *
+       * <code>SPEED = 1;</code>
+       */
+      public static final int SPEED_VALUE = 1;
+      /**
+       * <pre>
+       * etc.
+       * </pre>
+       *
        * <code>CODE_SIZE = 2;</code>
-       *
-       * <pre>
-       * etc.
-       * </pre>
-       */
-      CODE_SIZE(1, 2),
-      /**
+       */
+      public static final int CODE_SIZE_VALUE = 2;
+      /**
+       * <pre>
+       * Generate code using MessageLite and the lite runtime.
+       * </pre>
+       *
        * <code>LITE_RUNTIME = 3;</code>
-       *
-       * <pre>
-       * Generate code using MessageLite and the lite runtime.
-       * </pre>
-       */
-      LITE_RUNTIME(2, 3),
-      ;
-
-      /**
-       * <code>SPEED = 1;</code>
-       *
-       * <pre>
-       * Generate complete code for parsing, serialization,
-       * </pre>
-       */
-      public static final int SPEED_VALUE = 1;
-      /**
-       * <code>CODE_SIZE = 2;</code>
-       *
-       * <pre>
-       * etc.
-       * </pre>
-       */
-      public static final int CODE_SIZE_VALUE = 2;
-      /**
-       * <code>LITE_RUNTIME = 3;</code>
-       *
-       * <pre>
-       * Generate code using MessageLite and the lite runtime.
-       * </pre>
        */
       public static final int LITE_RUNTIME_VALUE = 3;
 
 
-      @Override
-	public final int getNumber() { return value; }
-
+      public final int getNumber() {
+        return value;
+      }
+
+      /**
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
       public static OptimizeMode valueOf(int value) {
+        return forNumber(value);
+      }
+
+      public static OptimizeMode forNumber(int value) {
         switch (value) {
           case 1: return SPEED;
@@ -15289,20 +19440,17 @@
         return internalValueMap;
       }
-      private static com.google.protobuf.Internal.EnumLiteMap<OptimizeMode>
-          internalValueMap =
+      private static final com.google.protobuf.Internal.EnumLiteMap<
+          OptimizeMode> internalValueMap =
             new com.google.protobuf.Internal.EnumLiteMap<OptimizeMode>() {
-              @Override
-			public OptimizeMode findValueByNumber(int number) {
-                return OptimizeMode.valueOf(number);
+              public OptimizeMode findValueByNumber(int number) {
+                return OptimizeMode.forNumber(number);
               }
             };
 
-      @Override
-	public final com.google.protobuf.Descriptors.EnumValueDescriptor
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
           getValueDescriptor() {
-        return getDescriptor().getValues().get(index);
-      }
-      @Override
-	public final com.google.protobuf.Descriptors.EnumDescriptor
+        return getDescriptor().getValues().get(ordinal());
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptorForType() {
         return getDescriptor();
@@ -15324,9 +19472,7 @@
       }
 
-      private final int index;
       private final int value;
 
-      private OptimizeMode(int index, int value) {
-        this.index = index;
+      private OptimizeMode(int value) {
         this.value = value;
       }
@@ -15337,8 +19483,6 @@
     private int bitField0_;
     public static final int JAVA_PACKAGE_FIELD_NUMBER = 1;
-    private java.lang.Object javaPackage_;
-    /**
-     * <code>optional string java_package = 1;</code>
-     *
+    private volatile java.lang.Object javaPackage_;
+    /**
      * <pre>
      * Sets the Java package where classes generated from this .proto will be
@@ -15347,12 +19491,11 @@
      * domain names.
      * </pre>
-     */
-    @Override
-	public boolean hasJavaPackage() {
+     *
+     * <code>optional string java_package = 1;</code>
+     */
+    public boolean hasJavaPackage() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
     /**
-     * <code>optional string java_package = 1;</code>
-     *
      * <pre>
      * Sets the Java package where classes generated from this .proto will be
@@ -15361,12 +19504,13 @@
      * domain names.
      * </pre>
-     */
-    @Override
-	public java.lang.String getJavaPackage() {
+     *
+     * <code>optional string java_package = 1;</code>
+     */
+    public java.lang.String getJavaPackage() {
       java.lang.Object ref = javaPackage_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -15378,6 +19522,4 @@
     }
     /**
-     * <code>optional string java_package = 1;</code>
-     *
      * <pre>
      * Sets the Java package where classes generated from this .proto will be
@@ -15386,11 +19528,12 @@
      * domain names.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
+     *
+     * <code>optional string java_package = 1;</code>
+     */
+    public com.google.protobuf.ByteString
         getJavaPackageBytes() {
       java.lang.Object ref = javaPackage_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -15403,8 +19546,6 @@
 
     public static final int JAVA_OUTER_CLASSNAME_FIELD_NUMBER = 8;
-    private java.lang.Object javaOuterClassname_;
-    /**
-     * <code>optional string java_outer_classname = 8;</code>
-     *
+    private volatile java.lang.Object javaOuterClassname_;
+    /**
      * <pre>
      * If set, all the classes from the .proto file are wrapped in a single
@@ -15414,12 +19555,11 @@
      * explicitly choose the class name).
      * </pre>
-     */
-    @Override
-	public boolean hasJavaOuterClassname() {
+     *
+     * <code>optional string java_outer_classname = 8;</code>
+     */
+    public boolean hasJavaOuterClassname() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
     /**
-     * <code>optional string java_outer_classname = 8;</code>
-     *
      * <pre>
      * If set, all the classes from the .proto file are wrapped in a single
@@ -15429,12 +19569,13 @@
      * explicitly choose the class name).
      * </pre>
-     */
-    @Override
-	public java.lang.String getJavaOuterClassname() {
+     *
+     * <code>optional string java_outer_classname = 8;</code>
+     */
+    public java.lang.String getJavaOuterClassname() {
       java.lang.Object ref = javaOuterClassname_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -15446,6 +19587,4 @@
     }
     /**
-     * <code>optional string java_outer_classname = 8;</code>
-     *
      * <pre>
      * If set, all the classes from the .proto file are wrapped in a single
@@ -15455,11 +19594,12 @@
      * explicitly choose the class name).
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
+     *
+     * <code>optional string java_outer_classname = 8;</code>
+     */
+    public com.google.protobuf.ByteString
         getJavaOuterClassnameBytes() {
       java.lang.Object ref = javaOuterClassname_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -15474,6 +19614,4 @@
     private boolean javaMultipleFiles_;
     /**
-     * <code>optional bool java_multiple_files = 10 [default = false];</code>
-     *
      * <pre>
      * If set true, then the Java code generator will generate a separate .java
@@ -15484,12 +19622,11 @@
      * top-level extensions defined in the file.
      * </pre>
-     */
-    @Override
-	public boolean hasJavaMultipleFiles() {
+     *
+     * <code>optional bool java_multiple_files = 10 [default = false];</code>
+     */
+    public boolean hasJavaMultipleFiles() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
     /**
-     * <code>optional bool java_multiple_files = 10 [default = false];</code>
-     *
      * <pre>
      * If set true, then the Java code generator will generate a separate .java
@@ -15500,7 +19637,8 @@
      * top-level extensions defined in the file.
      * </pre>
-     */
-    @Override
-	public boolean getJavaMultipleFiles() {
+     *
+     * <code>optional bool java_multiple_files = 10 [default = false];</code>
+     */
+    public boolean getJavaMultipleFiles() {
       return javaMultipleFiles_;
     }
@@ -15509,41 +19647,21 @@
     private boolean javaGenerateEqualsAndHash_;
     /**
-     * <code>optional bool java_generate_equals_and_hash = 20 [default = false];</code>
+     * <pre>
+     * This option does nothing.
+     * </pre>
      *
+     * <code>optional bool java_generate_equals_and_hash = 20 [deprecated = true];</code>
+     */
+    @java.lang.Deprecated public boolean hasJavaGenerateEqualsAndHash() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
      * <pre>
-     * If set true, then the Java code generator will generate equals() and
-     * hashCode() methods for all messages defined in the .proto file.
-     * - In the full runtime, this is purely a speed optimization, as the
-     * AbstractMessage base class includes reflection-based implementations of
-     * these methods.
-     *- In the lite runtime, setting this option changes the semantics of
-     * equals() and hashCode() to more closely match those of the full runtime;
-     * the generated methods compute their results based on field values rather
-     * than object identity. (Implementations should not assume that hashcodes
-     * will be consistent across runtimes or versions of the protocol compiler.)
+     * This option does nothing.
      * </pre>
-     */
-    @Override
-	public boolean hasJavaGenerateEqualsAndHash() {
-      return ((bitField0_ & 0x00000008) == 0x00000008);
-    }
-    /**
-     * <code>optional bool java_generate_equals_and_hash = 20 [default = false];</code>
      *
-     * <pre>
-     * If set true, then the Java code generator will generate equals() and
-     * hashCode() methods for all messages defined in the .proto file.
-     * - In the full runtime, this is purely a speed optimization, as the
-     * AbstractMessage base class includes reflection-based implementations of
-     * these methods.
-     *- In the lite runtime, setting this option changes the semantics of
-     * equals() and hashCode() to more closely match those of the full runtime;
-     * the generated methods compute their results based on field values rather
-     * than object identity. (Implementations should not assume that hashcodes
-     * will be consistent across runtimes or versions of the protocol compiler.)
-     * </pre>
-     */
-    @Override
-	public boolean getJavaGenerateEqualsAndHash() {
+     * <code>optional bool java_generate_equals_and_hash = 20 [deprecated = true];</code>
+     */
+    @java.lang.Deprecated public boolean getJavaGenerateEqualsAndHash() {
       return javaGenerateEqualsAndHash_;
     }
@@ -15552,6 +19670,4 @@
     private boolean javaStringCheckUtf8_;
     /**
-     * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
-     *
      * <pre>
      * If set true, then the Java2 code generator will generate code that
@@ -15562,12 +19678,11 @@
      * This option has no effect on when used with the lite runtime.
      * </pre>
-     */
-    @Override
-	public boolean hasJavaStringCheckUtf8() {
+     *
+     * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
+     */
+    public boolean hasJavaStringCheckUtf8() {
       return ((bitField0_ & 0x00000010) == 0x00000010);
     }
     /**
-     * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
-     *
      * <pre>
      * If set true, then the Java2 code generator will generate code that
@@ -15578,17 +19693,17 @@
      * This option has no effect on when used with the lite runtime.
      * </pre>
-     */
-    @Override
-	public boolean getJavaStringCheckUtf8() {
+     *
+     * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
+     */
+    public boolean getJavaStringCheckUtf8() {
       return javaStringCheckUtf8_;
     }
 
     public static final int OPTIMIZE_FOR_FIELD_NUMBER = 9;
-    private com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode optimizeFor_;
+    private int optimizeFor_;
     /**
      * <code>optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];</code>
      */
-    @Override
-	public boolean hasOptimizeFor() {
+    public boolean hasOptimizeFor() {
       return ((bitField0_ & 0x00000020) == 0x00000020);
     }
@@ -15596,38 +19711,42 @@
      * <code>optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor() {
-      return optimizeFor_;
+    public com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor() {
+      com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode result = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.valueOf(optimizeFor_);
+      return result == null ? com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED : result;
     }
 
     public static final int GO_PACKAGE_FIELD_NUMBER = 11;
-    private java.lang.Object goPackage_;
-    /**
-     * <code>optional string go_package = 11;</code>
-     *
+    private volatile java.lang.Object goPackage_;
+    /**
      * <pre>
      * Sets the Go package where structs generated from this .proto will be
-     * placed.  There is no default.
+     * placed. If omitted, the Go package will be derived from the following:
+     *   - The basename of the package import path, if provided.
+     *   - Otherwise, the package statement in the .proto file, if present.
+     *   - Otherwise, the basename of the .proto file, without extension.
      * </pre>
-     */
-    @Override
-	public boolean hasGoPackage() {
+     *
+     * <code>optional string go_package = 11;</code>
+     */
+    public boolean hasGoPackage() {
       return ((bitField0_ & 0x00000040) == 0x00000040);
     }
     /**
-     * <code>optional string go_package = 11;</code>
-     *
      * <pre>
      * Sets the Go package where structs generated from this .proto will be
-     * placed.  There is no default.
+     * placed. If omitted, the Go package will be derived from the following:
+     *   - The basename of the package import path, if provided.
+     *   - Otherwise, the package statement in the .proto file, if present.
+     *   - Otherwise, the basename of the .proto file, without extension.
      * </pre>
-     */
-    @Override
-	public java.lang.String getGoPackage() {
+     *
+     * <code>optional string go_package = 11;</code>
+     */
+    public java.lang.String getGoPackage() {
       java.lang.Object ref = goPackage_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -15639,17 +19758,19 @@
     }
     /**
-     * <code>optional string go_package = 11;</code>
-     *
      * <pre>
      * Sets the Go package where structs generated from this .proto will be
-     * placed.  There is no default.
+     * placed. If omitted, the Go package will be derived from the following:
+     *   - The basename of the package import path, if provided.
+     *   - Otherwise, the package statement in the .proto file, if present.
+     *   - Otherwise, the basename of the .proto file, without extension.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
+     *
+     * <code>optional string go_package = 11;</code>
+     */
+    public com.google.protobuf.ByteString
         getGoPackageBytes() {
       java.lang.Object ref = goPackage_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -15664,6 +19785,4 @@
     private boolean ccGenericServices_;
     /**
-     * <code>optional bool cc_generic_services = 16 [default = false];</code>
-     *
      * <pre>
      * Should generic services be generated in each language?  "Generic" services
@@ -15671,5 +19790,5 @@
      * main code generators in each language (without additional plugins).
      * Generic services were the only kind of service generation supported by
-     * early versions of proto2.
+     * early versions of google.protobuf.
      * Generic services are now considered deprecated in favor of using plugins
      * that generate code specific to your particular RPC system.  Therefore,
@@ -15677,12 +19796,11 @@
      * explicitly set them to true.
      * </pre>
-     */
-    @Override
-	public boolean hasCcGenericServices() {
+     *
+     * <code>optional bool cc_generic_services = 16 [default = false];</code>
+     */
+    public boolean hasCcGenericServices() {
       return ((bitField0_ & 0x00000080) == 0x00000080);
     }
     /**
-     * <code>optional bool cc_generic_services = 16 [default = false];</code>
-     *
      * <pre>
      * Should generic services be generated in each language?  "Generic" services
@@ -15690,5 +19808,5 @@
      * main code generators in each language (without additional plugins).
      * Generic services were the only kind of service generation supported by
-     * early versions of proto2.
+     * early versions of google.protobuf.
      * Generic services are now considered deprecated in favor of using plugins
      * that generate code specific to your particular RPC system.  Therefore,
@@ -15696,7 +19814,8 @@
      * explicitly set them to true.
      * </pre>
-     */
-    @Override
-	public boolean getCcGenericServices() {
+     *
+     * <code>optional bool cc_generic_services = 16 [default = false];</code>
+     */
+    public boolean getCcGenericServices() {
       return ccGenericServices_;
     }
@@ -15707,6 +19826,5 @@
      * <code>optional bool java_generic_services = 17 [default = false];</code>
      */
-    @Override
-	public boolean hasJavaGenericServices() {
+    public boolean hasJavaGenericServices() {
       return ((bitField0_ & 0x00000100) == 0x00000100);
     }
@@ -15714,6 +19832,5 @@
      * <code>optional bool java_generic_services = 17 [default = false];</code>
      */
-    @Override
-	public boolean getJavaGenericServices() {
+    public boolean getJavaGenericServices() {
       return javaGenericServices_;
     }
@@ -15724,6 +19841,5 @@
      * <code>optional bool py_generic_services = 18 [default = false];</code>
      */
-    @Override
-	public boolean hasPyGenericServices() {
+    public boolean hasPyGenericServices() {
       return ((bitField0_ & 0x00000200) == 0x00000200);
     }
@@ -15731,7 +19847,21 @@
      * <code>optional bool py_generic_services = 18 [default = false];</code>
      */
-    @Override
-	public boolean getPyGenericServices() {
+    public boolean getPyGenericServices() {
       return pyGenericServices_;
+    }
+
+    public static final int PHP_GENERIC_SERVICES_FIELD_NUMBER = 42;
+    private boolean phpGenericServices_;
+    /**
+     * <code>optional bool php_generic_services = 42 [default = false];</code>
+     */
+    public boolean hasPhpGenericServices() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional bool php_generic_services = 42 [default = false];</code>
+     */
+    public boolean getPhpGenericServices() {
+      return phpGenericServices_;
     }
 
@@ -15739,6 +19869,4 @@
     private boolean deprecated_;
     /**
-     * <code>optional bool deprecated = 23 [default = false];</code>
-     *
      * <pre>
      * Is this file deprecated?
@@ -15747,12 +19875,11 @@
      * least, this is a formalization for deprecating files.
      * </pre>
-     */
-    @Override
-	public boolean hasDeprecated() {
-      return ((bitField0_ & 0x00000400) == 0x00000400);
-    }
-    /**
+     *
      * <code>optional bool deprecated = 23 [default = false];</code>
-     *
+     */
+    public boolean hasDeprecated() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
      * <pre>
      * Is this file deprecated?
@@ -15761,8 +19888,325 @@
      * least, this is a formalization for deprecating files.
      * </pre>
-     */
-    @Override
-	public boolean getDeprecated() {
+     *
+     * <code>optional bool deprecated = 23 [default = false];</code>
+     */
+    public boolean getDeprecated() {
       return deprecated_;
+    }
+
+    public static final int CC_ENABLE_ARENAS_FIELD_NUMBER = 31;
+    private boolean ccEnableArenas_;
+    /**
+     * <pre>
+     * Enables the use of arenas for the proto messages in this file. This applies
+     * only to generated classes for C++.
+     * </pre>
+     *
+     * <code>optional bool cc_enable_arenas = 31 [default = false];</code>
+     */
+    public boolean hasCcEnableArenas() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <pre>
+     * Enables the use of arenas for the proto messages in this file. This applies
+     * only to generated classes for C++.
+     * </pre>
+     *
+     * <code>optional bool cc_enable_arenas = 31 [default = false];</code>
+     */
+    public boolean getCcEnableArenas() {
+      return ccEnableArenas_;
+    }
+
+    public static final int OBJC_CLASS_PREFIX_FIELD_NUMBER = 36;
+    private volatile java.lang.Object objcClassPrefix_;
+    /**
+     * <pre>
+     * Sets the objective c class prefix which is prepended to all objective c
+     * generated classes from this .proto. There is no default.
+     * </pre>
+     *
+     * <code>optional string objc_class_prefix = 36;</code>
+     */
+    public boolean hasObjcClassPrefix() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <pre>
+     * Sets the objective c class prefix which is prepended to all objective c
+     * generated classes from this .proto. There is no default.
+     * </pre>
+     *
+     * <code>optional string objc_class_prefix = 36;</code>
+     */
+    public java.lang.String getObjcClassPrefix() {
+      java.lang.Object ref = objcClassPrefix_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          objcClassPrefix_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     * Sets the objective c class prefix which is prepended to all objective c
+     * generated classes from this .proto. There is no default.
+     * </pre>
+     *
+     * <code>optional string objc_class_prefix = 36;</code>
+     */
+    public com.google.protobuf.ByteString
+        getObjcClassPrefixBytes() {
+      java.lang.Object ref = objcClassPrefix_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        objcClassPrefix_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int CSHARP_NAMESPACE_FIELD_NUMBER = 37;
+    private volatile java.lang.Object csharpNamespace_;
+    /**
+     * <pre>
+     * Namespace for generated classes; defaults to the package.
+     * </pre>
+     *
+     * <code>optional string csharp_namespace = 37;</code>
+     */
+    public boolean hasCsharpNamespace() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <pre>
+     * Namespace for generated classes; defaults to the package.
+     * </pre>
+     *
+     * <code>optional string csharp_namespace = 37;</code>
+     */
+    public java.lang.String getCsharpNamespace() {
+      java.lang.Object ref = csharpNamespace_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          csharpNamespace_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     * Namespace for generated classes; defaults to the package.
+     * </pre>
+     *
+     * <code>optional string csharp_namespace = 37;</code>
+     */
+    public com.google.protobuf.ByteString
+        getCsharpNamespaceBytes() {
+      java.lang.Object ref = csharpNamespace_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        csharpNamespace_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int SWIFT_PREFIX_FIELD_NUMBER = 39;
+    private volatile java.lang.Object swiftPrefix_;
+    /**
+     * <pre>
+     * By default Swift generators will take the proto package and CamelCase it
+     * replacing '.' with underscore and use that to prefix the types/symbols
+     * defined. When this options is provided, they will use this value instead
+     * to prefix the types/symbols defined.
+     * </pre>
+     *
+     * <code>optional string swift_prefix = 39;</code>
+     */
+    public boolean hasSwiftPrefix() {
+      return ((bitField0_ & 0x00008000) == 0x00008000);
+    }
+    /**
+     * <pre>
+     * By default Swift generators will take the proto package and CamelCase it
+     * replacing '.' with underscore and use that to prefix the types/symbols
+     * defined. When this options is provided, they will use this value instead
+     * to prefix the types/symbols defined.
+     * </pre>
+     *
+     * <code>optional string swift_prefix = 39;</code>
+     */
+    public java.lang.String getSwiftPrefix() {
+      java.lang.Object ref = swiftPrefix_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          swiftPrefix_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     * By default Swift generators will take the proto package and CamelCase it
+     * replacing '.' with underscore and use that to prefix the types/symbols
+     * defined. When this options is provided, they will use this value instead
+     * to prefix the types/symbols defined.
+     * </pre>
+     *
+     * <code>optional string swift_prefix = 39;</code>
+     */
+    public com.google.protobuf.ByteString
+        getSwiftPrefixBytes() {
+      java.lang.Object ref = swiftPrefix_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        swiftPrefix_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int PHP_CLASS_PREFIX_FIELD_NUMBER = 40;
+    private volatile java.lang.Object phpClassPrefix_;
+    /**
+     * <pre>
+     * Sets the php class prefix which is prepended to all php generated classes
+     * from this .proto. Default is empty.
+     * </pre>
+     *
+     * <code>optional string php_class_prefix = 40;</code>
+     */
+    public boolean hasPhpClassPrefix() {
+      return ((bitField0_ & 0x00010000) == 0x00010000);
+    }
+    /**
+     * <pre>
+     * Sets the php class prefix which is prepended to all php generated classes
+     * from this .proto. Default is empty.
+     * </pre>
+     *
+     * <code>optional string php_class_prefix = 40;</code>
+     */
+    public java.lang.String getPhpClassPrefix() {
+      java.lang.Object ref = phpClassPrefix_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          phpClassPrefix_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     * Sets the php class prefix which is prepended to all php generated classes
+     * from this .proto. Default is empty.
+     * </pre>
+     *
+     * <code>optional string php_class_prefix = 40;</code>
+     */
+    public com.google.protobuf.ByteString
+        getPhpClassPrefixBytes() {
+      java.lang.Object ref = phpClassPrefix_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        phpClassPrefix_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int PHP_NAMESPACE_FIELD_NUMBER = 41;
+    private volatile java.lang.Object phpNamespace_;
+    /**
+     * <pre>
+     * Use this option to change the namespace of php generated classes. Default
+     * is empty. When this option is empty, the package name will be used for
+     * determining the namespace.
+     * </pre>
+     *
+     * <code>optional string php_namespace = 41;</code>
+     */
+    public boolean hasPhpNamespace() {
+      return ((bitField0_ & 0x00020000) == 0x00020000);
+    }
+    /**
+     * <pre>
+     * Use this option to change the namespace of php generated classes. Default
+     * is empty. When this option is empty, the package name will be used for
+     * determining the namespace.
+     * </pre>
+     *
+     * <code>optional string php_namespace = 41;</code>
+     */
+    public java.lang.String getPhpNamespace() {
+      java.lang.Object ref = phpNamespace_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          phpNamespace_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     * Use this option to change the namespace of php generated classes. Default
+     * is empty. When this option is empty, the package name will be used for
+     * determining the namespace.
+     * </pre>
+     *
+     * <code>optional string php_namespace = 41;</code>
+     */
+    public com.google.protobuf.ByteString
+        getPhpNamespaceBytes() {
+      java.lang.Object ref = phpNamespace_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        phpNamespace_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
 
@@ -15770,78 +20214,58 @@
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public int getUninterpretedOptionCount() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public int getUninterpretedOptionCount() {
       return uninterpretedOption_.size();
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
       return uninterpretedOption_.get(index);
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
         int index) {
       return uninterpretedOption_.get(index);
     }
 
-    private void initFields() {
-      javaPackage_ = "";
-      javaOuterClassname_ = "";
-      javaMultipleFiles_ = false;
-      javaGenerateEqualsAndHash_ = false;
-      javaStringCheckUtf8_ = false;
-      optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED;
-      goPackage_ = "";
-      ccGenericServices_ = false;
-      javaGenericServices_ = false;
-      pyGenericServices_ = false;
-      deprecated_ = false;
-      uninterpretedOption_ = java.util.Collections.emptyList();
-    }
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -15862,19 +20286,17 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
-      com.google.protobuf.GeneratedMessage
-        .ExtendableMessage<com.google.protobuf.DescriptorProtos.FileOptions>.ExtensionWriter extensionWriter =
-          newExtensionWriter();
+      com.google.protobuf.GeneratedMessageV3
+        .ExtendableMessage<com.google.protobuf.DescriptorProtos.FileOptions>.ExtensionWriter
+          extensionWriter = newExtensionWriter();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(1, getJavaPackageBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, javaPackage_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(8, getJavaOuterClassnameBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, javaOuterClassname_);
       }
       if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        output.writeEnum(9, optimizeFor_.getNumber());
+        output.writeEnum(9, optimizeFor_);
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
@@ -15882,5 +20304,5 @@
       }
       if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        output.writeBytes(11, getGoPackageBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, goPackage_);
       }
       if (((bitField0_ & 0x00000080) == 0x00000080)) {
@@ -15896,5 +20318,5 @@
         output.writeBool(20, javaGenerateEqualsAndHash_);
       }
-      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
         output.writeBool(23, deprecated_);
       }
@@ -15902,29 +20324,46 @@
         output.writeBool(27, javaStringCheckUtf8_);
       }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeBool(31, ccEnableArenas_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 36, objcClassPrefix_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 37, csharpNamespace_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 39, swiftPrefix_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 40, phpClassPrefix_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 41, phpNamespace_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeBool(42, phpGenericServices_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         output.writeMessage(999, uninterpretedOption_.get(i));
       }
       extensionWriter.writeUntil(536870912, output);
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(1, getJavaPackageBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, javaPackage_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(8, getJavaOuterClassnameBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, javaOuterClassname_);
       }
       if (((bitField0_ & 0x00000020) == 0x00000020)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(9, optimizeFor_.getNumber());
+          .computeEnumSize(9, optimizeFor_);
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
@@ -15933,6 +20372,5 @@
       }
       if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(11, getGoPackageBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, goPackage_);
       }
       if (((bitField0_ & 0x00000080) == 0x00000080)) {
@@ -15952,5 +20390,5 @@
           .computeBoolSize(20, javaGenerateEqualsAndHash_);
       }
-      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
         size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(23, deprecated_);
@@ -15960,4 +20398,27 @@
           .computeBoolSize(27, javaStringCheckUtf8_);
       }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(31, ccEnableArenas_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(36, objcClassPrefix_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(37, csharpNamespace_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(39, swiftPrefix_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(40, phpClassPrefix_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(41, phpNamespace_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(42, phpGenericServices_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
@@ -15965,16 +20426,226 @@
       }
       size += extensionsSerializedSize();
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.FileOptions)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.FileOptions other = (com.google.protobuf.DescriptorProtos.FileOptions) obj;
+
+      boolean result = true;
+      result = result && (hasJavaPackage() == other.hasJavaPackage());
+      if (hasJavaPackage()) {
+        result = result && getJavaPackage()
+            .equals(other.getJavaPackage());
+      }
+      result = result && (hasJavaOuterClassname() == other.hasJavaOuterClassname());
+      if (hasJavaOuterClassname()) {
+        result = result && getJavaOuterClassname()
+            .equals(other.getJavaOuterClassname());
+      }
+      result = result && (hasJavaMultipleFiles() == other.hasJavaMultipleFiles());
+      if (hasJavaMultipleFiles()) {
+        result = result && (getJavaMultipleFiles()
+            == other.getJavaMultipleFiles());
+      }
+      result = result && (hasJavaGenerateEqualsAndHash() == other.hasJavaGenerateEqualsAndHash());
+      if (hasJavaGenerateEqualsAndHash()) {
+        result = result && (getJavaGenerateEqualsAndHash()
+            == other.getJavaGenerateEqualsAndHash());
+      }
+      result = result && (hasJavaStringCheckUtf8() == other.hasJavaStringCheckUtf8());
+      if (hasJavaStringCheckUtf8()) {
+        result = result && (getJavaStringCheckUtf8()
+            == other.getJavaStringCheckUtf8());
+      }
+      result = result && (hasOptimizeFor() == other.hasOptimizeFor());
+      if (hasOptimizeFor()) {
+        result = result && optimizeFor_ == other.optimizeFor_;
+      }
+      result = result && (hasGoPackage() == other.hasGoPackage());
+      if (hasGoPackage()) {
+        result = result && getGoPackage()
+            .equals(other.getGoPackage());
+      }
+      result = result && (hasCcGenericServices() == other.hasCcGenericServices());
+      if (hasCcGenericServices()) {
+        result = result && (getCcGenericServices()
+            == other.getCcGenericServices());
+      }
+      result = result && (hasJavaGenericServices() == other.hasJavaGenericServices());
+      if (hasJavaGenericServices()) {
+        result = result && (getJavaGenericServices()
+            == other.getJavaGenericServices());
+      }
+      result = result && (hasPyGenericServices() == other.hasPyGenericServices());
+      if (hasPyGenericServices()) {
+        result = result && (getPyGenericServices()
+            == other.getPyGenericServices());
+      }
+      result = result && (hasPhpGenericServices() == other.hasPhpGenericServices());
+      if (hasPhpGenericServices()) {
+        result = result && (getPhpGenericServices()
+            == other.getPhpGenericServices());
+      }
+      result = result && (hasDeprecated() == other.hasDeprecated());
+      if (hasDeprecated()) {
+        result = result && (getDeprecated()
+            == other.getDeprecated());
+      }
+      result = result && (hasCcEnableArenas() == other.hasCcEnableArenas());
+      if (hasCcEnableArenas()) {
+        result = result && (getCcEnableArenas()
+            == other.getCcEnableArenas());
+      }
+      result = result && (hasObjcClassPrefix() == other.hasObjcClassPrefix());
+      if (hasObjcClassPrefix()) {
+        result = result && getObjcClassPrefix()
+            .equals(other.getObjcClassPrefix());
+      }
+      result = result && (hasCsharpNamespace() == other.hasCsharpNamespace());
+      if (hasCsharpNamespace()) {
+        result = result && getCsharpNamespace()
+            .equals(other.getCsharpNamespace());
+      }
+      result = result && (hasSwiftPrefix() == other.hasSwiftPrefix());
+      if (hasSwiftPrefix()) {
+        result = result && getSwiftPrefix()
+            .equals(other.getSwiftPrefix());
+      }
+      result = result && (hasPhpClassPrefix() == other.hasPhpClassPrefix());
+      if (hasPhpClassPrefix()) {
+        result = result && getPhpClassPrefix()
+            .equals(other.getPhpClassPrefix());
+      }
+      result = result && (hasPhpNamespace() == other.hasPhpNamespace());
+      if (hasPhpNamespace()) {
+        result = result && getPhpNamespace()
+            .equals(other.getPhpNamespace());
+      }
+      result = result && getUninterpretedOptionList()
+          .equals(other.getUninterpretedOptionList());
+      result = result && unknownFields.equals(other.unknownFields);
+      result = result &&
+          getExtensionFields().equals(other.getExtensionFields());
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasJavaPackage()) {
+        hash = (37 * hash) + JAVA_PACKAGE_FIELD_NUMBER;
+        hash = (53 * hash) + getJavaPackage().hashCode();
+      }
+      if (hasJavaOuterClassname()) {
+        hash = (37 * hash) + JAVA_OUTER_CLASSNAME_FIELD_NUMBER;
+        hash = (53 * hash) + getJavaOuterClassname().hashCode();
+      }
+      if (hasJavaMultipleFiles()) {
+        hash = (37 * hash) + JAVA_MULTIPLE_FILES_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getJavaMultipleFiles());
+      }
+      if (hasJavaGenerateEqualsAndHash()) {
+        hash = (37 * hash) + JAVA_GENERATE_EQUALS_AND_HASH_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getJavaGenerateEqualsAndHash());
+      }
+      if (hasJavaStringCheckUtf8()) {
+        hash = (37 * hash) + JAVA_STRING_CHECK_UTF8_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getJavaStringCheckUtf8());
+      }
+      if (hasOptimizeFor()) {
+        hash = (37 * hash) + OPTIMIZE_FOR_FIELD_NUMBER;
+        hash = (53 * hash) + optimizeFor_;
+      }
+      if (hasGoPackage()) {
+        hash = (37 * hash) + GO_PACKAGE_FIELD_NUMBER;
+        hash = (53 * hash) + getGoPackage().hashCode();
+      }
+      if (hasCcGenericServices()) {
+        hash = (37 * hash) + CC_GENERIC_SERVICES_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getCcGenericServices());
+      }
+      if (hasJavaGenericServices()) {
+        hash = (37 * hash) + JAVA_GENERIC_SERVICES_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getJavaGenericServices());
+      }
+      if (hasPyGenericServices()) {
+        hash = (37 * hash) + PY_GENERIC_SERVICES_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getPyGenericServices());
+      }
+      if (hasPhpGenericServices()) {
+        hash = (37 * hash) + PHP_GENERIC_SERVICES_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getPhpGenericServices());
+      }
+      if (hasDeprecated()) {
+        hash = (37 * hash) + DEPRECATED_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getDeprecated());
+      }
+      if (hasCcEnableArenas()) {
+        hash = (37 * hash) + CC_ENABLE_ARENAS_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getCcEnableArenas());
+      }
+      if (hasObjcClassPrefix()) {
+        hash = (37 * hash) + OBJC_CLASS_PREFIX_FIELD_NUMBER;
+        hash = (53 * hash) + getObjcClassPrefix().hashCode();
+      }
+      if (hasCsharpNamespace()) {
+        hash = (37 * hash) + CSHARP_NAMESPACE_FIELD_NUMBER;
+        hash = (53 * hash) + getCsharpNamespace().hashCode();
+      }
+      if (hasSwiftPrefix()) {
+        hash = (37 * hash) + SWIFT_PREFIX_FIELD_NUMBER;
+        hash = (53 * hash) + getSwiftPrefix().hashCode();
+      }
+      if (hasPhpClassPrefix()) {
+        hash = (37 * hash) + PHP_CLASS_PREFIX_FIELD_NUMBER;
+        hash = (53 * hash) + getPhpClassPrefix().hashCode();
+      }
+      if (hasPhpNamespace()) {
+        hash = (37 * hash) + PHP_NAMESPACE_FIELD_NUMBER;
+        hash = (53 * hash) + getPhpNamespace().hashCode();
+      }
+      if (getUninterpretedOptionCount() > 0) {
+        hash = (37 * hash) + UNINTERPRETED_OPTION_FIELD_NUMBER;
+        hash = (53 * hash) + getUninterpretedOptionList().hashCode();
+      }
+      hash = hashFields(hash, getExtensionFields());
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
         com.google.protobuf.ByteString data)
@@ -16000,5 +20671,6 @@
     public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
@@ -16006,9 +20678,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.FileOptions parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FileOptions parseDelimitedFrom(
@@ -16016,10 +20690,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
@@ -16027,19 +20703,23 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FileOptions prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
@@ -16049,5 +20729,5 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
+        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
           com.google.protobuf.DescriptorProtos.FileOptions, Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.FileOptions)
@@ -16058,6 +20738,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_fieldAccessorTable
@@ -16072,19 +20751,15 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getUninterpretedOptionFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         javaPackage_ = "";
@@ -16098,5 +20773,5 @@
         javaStringCheckUtf8_ = false;
         bitField0_ = (bitField0_ & ~0x00000010);
-        optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED;
+        optimizeFor_ = 1;
         bitField0_ = (bitField0_ & ~0x00000020);
         goPackage_ = "";
@@ -16108,9 +20783,23 @@
         pyGenericServices_ = false;
         bitField0_ = (bitField0_ & ~0x00000200);
+        phpGenericServices_ = false;
+        bitField0_ = (bitField0_ & ~0x00000400);
         deprecated_ = false;
-        bitField0_ = (bitField0_ & ~0x00000400);
+        bitField0_ = (bitField0_ & ~0x00000800);
+        ccEnableArenas_ = false;
+        bitField0_ = (bitField0_ & ~0x00001000);
+        objcClassPrefix_ = "";
+        bitField0_ = (bitField0_ & ~0x00002000);
+        csharpNamespace_ = "";
+        bitField0_ = (bitField0_ & ~0x00004000);
+        swiftPrefix_ = "";
+        bitField0_ = (bitField0_ & ~0x00008000);
+        phpClassPrefix_ = "";
+        bitField0_ = (bitField0_ & ~0x00010000);
+        phpNamespace_ = "";
+        bitField0_ = (bitField0_ & ~0x00020000);
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000800);
+          bitField0_ = (bitField0_ & ~0x00040000);
         } else {
           uninterpretedOptionBuilder_.clear();
@@ -16119,22 +20808,14 @@
       }
 
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileOptions getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.FileOptions getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileOptions build() {
+      public com.google.protobuf.DescriptorProtos.FileOptions build() {
         com.google.protobuf.DescriptorProtos.FileOptions result = buildPartial();
         if (!result.isInitialized()) {
@@ -16144,6 +20825,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileOptions buildPartial() {
+      public com.google.protobuf.DescriptorProtos.FileOptions buildPartial() {
         com.google.protobuf.DescriptorProtos.FileOptions result = new com.google.protobuf.DescriptorProtos.FileOptions(this);
         int from_bitField0_ = bitField0_;
@@ -16192,9 +20872,37 @@
           to_bitField0_ |= 0x00000400;
         }
+        result.phpGenericServices_ = phpGenericServices_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
         result.deprecated_ = deprecated_;
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        result.ccEnableArenas_ = ccEnableArenas_;
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        result.objcClassPrefix_ = objcClassPrefix_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.csharpNamespace_ = csharpNamespace_;
+        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
+          to_bitField0_ |= 0x00008000;
+        }
+        result.swiftPrefix_ = swiftPrefix_;
+        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
+          to_bitField0_ |= 0x00010000;
+        }
+        result.phpClassPrefix_ = phpClassPrefix_;
+        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+          to_bitField0_ |= 0x00020000;
+        }
+        result.phpNamespace_ = phpNamespace_;
         if (uninterpretedOptionBuilder_ == null) {
-          if (((bitField0_ & 0x00000800) == 0x00000800)) {
+          if (((bitField0_ & 0x00040000) == 0x00040000)) {
             uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
-            bitField0_ = (bitField0_ & ~0x00000800);
+            bitField0_ = (bitField0_ & ~0x00040000);
           }
           result.uninterpretedOption_ = uninterpretedOption_;
@@ -16207,6 +20915,54 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.FileOptions, Type> extension,
+          Type value) {
+        return (Builder) super.setExtension(extension, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.FileOptions, java.util.List<Type>> extension,
+          int index, Type value) {
+        return (Builder) super.setExtension(extension, index, value);
+      }
+      public <Type> Builder addExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.FileOptions, java.util.List<Type>> extension,
+          Type value) {
+        return (Builder) super.addExtension(extension, value);
+      }
+      public <Type> Builder clearExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.FileOptions, ?> extension) {
+        return (Builder) super.clearExtension(extension);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.FileOptions) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.FileOptions)other);
@@ -16255,6 +21011,37 @@
           setPyGenericServices(other.getPyGenericServices());
         }
+        if (other.hasPhpGenericServices()) {
+          setPhpGenericServices(other.getPhpGenericServices());
+        }
         if (other.hasDeprecated()) {
           setDeprecated(other.getDeprecated());
+        }
+        if (other.hasCcEnableArenas()) {
+          setCcEnableArenas(other.getCcEnableArenas());
+        }
+        if (other.hasObjcClassPrefix()) {
+          bitField0_ |= 0x00002000;
+          objcClassPrefix_ = other.objcClassPrefix_;
+          onChanged();
+        }
+        if (other.hasCsharpNamespace()) {
+          bitField0_ |= 0x00004000;
+          csharpNamespace_ = other.csharpNamespace_;
+          onChanged();
+        }
+        if (other.hasSwiftPrefix()) {
+          bitField0_ |= 0x00008000;
+          swiftPrefix_ = other.swiftPrefix_;
+          onChanged();
+        }
+        if (other.hasPhpClassPrefix()) {
+          bitField0_ |= 0x00010000;
+          phpClassPrefix_ = other.phpClassPrefix_;
+          onChanged();
+        }
+        if (other.hasPhpNamespace()) {
+          bitField0_ |= 0x00020000;
+          phpNamespace_ = other.phpNamespace_;
+          onChanged();
         }
         if (uninterpretedOptionBuilder_ == null) {
@@ -16262,5 +21049,5 @@
             if (uninterpretedOption_.isEmpty()) {
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000800);
+              bitField0_ = (bitField0_ & ~0x00040000);
             } else {
               ensureUninterpretedOptionIsMutable();
@@ -16275,7 +21062,7 @@
               uninterpretedOptionBuilder_ = null;
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000800);
-              uninterpretedOptionBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              bitField0_ = (bitField0_ & ~0x00040000);
+              uninterpretedOptionBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getUninterpretedOptionFieldBuilder() : null;
             } else {
@@ -16285,18 +21072,16 @@
         }
         this.mergeExtensionFields(other);
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         for (int i = 0; i < getUninterpretedOptionCount(); i++) {
           if (!getUninterpretedOption(i).isInitialized()) {
-
             return false;
           }
         }
         if (!extensionsAreInitialized()) {
-
           return false;
         }
@@ -16304,6 +21089,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -16314,5 +21098,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.FileOptions) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -16326,6 +21110,4 @@
       private java.lang.Object javaPackage_ = "";
       /**
-       * <code>optional string java_package = 1;</code>
-       *
        * <pre>
        * Sets the Java package where classes generated from this .proto will be
@@ -16334,12 +21116,11 @@
        * domain names.
        * </pre>
-       */
-      @Override
-	public boolean hasJavaPackage() {
+       *
+       * <code>optional string java_package = 1;</code>
+       */
+      public boolean hasJavaPackage() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
       /**
-       * <code>optional string java_package = 1;</code>
-       *
        * <pre>
        * Sets the Java package where classes generated from this .proto will be
@@ -16348,7 +21129,8 @@
        * domain names.
        * </pre>
-       */
-      @Override
-	public java.lang.String getJavaPackage() {
+       *
+       * <code>optional string java_package = 1;</code>
+       */
+      public java.lang.String getJavaPackage() {
         java.lang.Object ref = javaPackage_;
         if (!(ref instanceof java.lang.String)) {
@@ -16365,6 +21147,4 @@
       }
       /**
-       * <code>optional string java_package = 1;</code>
-       *
        * <pre>
        * Sets the Java package where classes generated from this .proto will be
@@ -16373,11 +21153,12 @@
        * domain names.
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
+       *
+       * <code>optional string java_package = 1;</code>
+       */
+      public com.google.protobuf.ByteString
           getJavaPackageBytes() {
         java.lang.Object ref = javaPackage_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -16389,6 +21170,4 @@
       }
       /**
-       * <code>optional string java_package = 1;</code>
-       *
        * <pre>
        * Sets the Java package where classes generated from this .proto will be
@@ -16397,4 +21176,6 @@
        * domain names.
        * </pre>
+       *
+       * <code>optional string java_package = 1;</code>
        */
       public Builder setJavaPackage(
@@ -16409,6 +21190,4 @@
       }
       /**
-       * <code>optional string java_package = 1;</code>
-       *
        * <pre>
        * Sets the Java package where classes generated from this .proto will be
@@ -16417,4 +21196,6 @@
        * domain names.
        * </pre>
+       *
+       * <code>optional string java_package = 1;</code>
        */
       public Builder clearJavaPackage() {
@@ -16425,6 +21206,4 @@
       }
       /**
-       * <code>optional string java_package = 1;</code>
-       *
        * <pre>
        * Sets the Java package where classes generated from this .proto will be
@@ -16433,4 +21212,6 @@
        * domain names.
        * </pre>
+       *
+       * <code>optional string java_package = 1;</code>
        */
       public Builder setJavaPackageBytes(
@@ -16447,6 +21228,4 @@
       private java.lang.Object javaOuterClassname_ = "";
       /**
-       * <code>optional string java_outer_classname = 8;</code>
-       *
        * <pre>
        * If set, all the classes from the .proto file are wrapped in a single
@@ -16456,12 +21235,11 @@
        * explicitly choose the class name).
        * </pre>
-       */
-      @Override
-	public boolean hasJavaOuterClassname() {
+       *
+       * <code>optional string java_outer_classname = 8;</code>
+       */
+      public boolean hasJavaOuterClassname() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
       /**
-       * <code>optional string java_outer_classname = 8;</code>
-       *
        * <pre>
        * If set, all the classes from the .proto file are wrapped in a single
@@ -16471,7 +21249,8 @@
        * explicitly choose the class name).
        * </pre>
-       */
-      @Override
-	public java.lang.String getJavaOuterClassname() {
+       *
+       * <code>optional string java_outer_classname = 8;</code>
+       */
+      public java.lang.String getJavaOuterClassname() {
         java.lang.Object ref = javaOuterClassname_;
         if (!(ref instanceof java.lang.String)) {
@@ -16488,6 +21267,4 @@
       }
       /**
-       * <code>optional string java_outer_classname = 8;</code>
-       *
        * <pre>
        * If set, all the classes from the .proto file are wrapped in a single
@@ -16497,11 +21274,12 @@
        * explicitly choose the class name).
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
+       *
+       * <code>optional string java_outer_classname = 8;</code>
+       */
+      public com.google.protobuf.ByteString
           getJavaOuterClassnameBytes() {
         java.lang.Object ref = javaOuterClassname_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -16513,6 +21291,4 @@
       }
       /**
-       * <code>optional string java_outer_classname = 8;</code>
-       *
        * <pre>
        * If set, all the classes from the .proto file are wrapped in a single
@@ -16522,4 +21298,6 @@
        * explicitly choose the class name).
        * </pre>
+       *
+       * <code>optional string java_outer_classname = 8;</code>
        */
       public Builder setJavaOuterClassname(
@@ -16534,6 +21312,4 @@
       }
       /**
-       * <code>optional string java_outer_classname = 8;</code>
-       *
        * <pre>
        * If set, all the classes from the .proto file are wrapped in a single
@@ -16543,4 +21319,6 @@
        * explicitly choose the class name).
        * </pre>
+       *
+       * <code>optional string java_outer_classname = 8;</code>
        */
       public Builder clearJavaOuterClassname() {
@@ -16551,6 +21329,4 @@
       }
       /**
-       * <code>optional string java_outer_classname = 8;</code>
-       *
        * <pre>
        * If set, all the classes from the .proto file are wrapped in a single
@@ -16560,4 +21336,6 @@
        * explicitly choose the class name).
        * </pre>
+       *
+       * <code>optional string java_outer_classname = 8;</code>
        */
       public Builder setJavaOuterClassnameBytes(
@@ -16574,6 +21352,4 @@
       private boolean javaMultipleFiles_ ;
       /**
-       * <code>optional bool java_multiple_files = 10 [default = false];</code>
-       *
        * <pre>
        * If set true, then the Java code generator will generate a separate .java
@@ -16584,12 +21360,11 @@
        * top-level extensions defined in the file.
        * </pre>
-       */
-      @Override
-	public boolean hasJavaMultipleFiles() {
+       *
+       * <code>optional bool java_multiple_files = 10 [default = false];</code>
+       */
+      public boolean hasJavaMultipleFiles() {
         return ((bitField0_ & 0x00000004) == 0x00000004);
       }
       /**
-       * <code>optional bool java_multiple_files = 10 [default = false];</code>
-       *
        * <pre>
        * If set true, then the Java code generator will generate a separate .java
@@ -16600,12 +21375,11 @@
        * top-level extensions defined in the file.
        * </pre>
-       */
-      @Override
-	public boolean getJavaMultipleFiles() {
+       *
+       * <code>optional bool java_multiple_files = 10 [default = false];</code>
+       */
+      public boolean getJavaMultipleFiles() {
         return javaMultipleFiles_;
       }
       /**
-       * <code>optional bool java_multiple_files = 10 [default = false];</code>
-       *
        * <pre>
        * If set true, then the Java code generator will generate a separate .java
@@ -16616,4 +21390,6 @@
        * top-level extensions defined in the file.
        * </pre>
+       *
+       * <code>optional bool java_multiple_files = 10 [default = false];</code>
        */
       public Builder setJavaMultipleFiles(boolean value) {
@@ -16624,6 +21400,4 @@
       }
       /**
-       * <code>optional bool java_multiple_files = 10 [default = false];</code>
-       *
        * <pre>
        * If set true, then the Java code generator will generate a separate .java
@@ -16634,4 +21408,6 @@
        * top-level extensions defined in the file.
        * </pre>
+       *
+       * <code>optional bool java_multiple_files = 10 [default = false];</code>
        */
       public Builder clearJavaMultipleFiles() {
@@ -16644,60 +21420,31 @@
       private boolean javaGenerateEqualsAndHash_ ;
       /**
-       * <code>optional bool java_generate_equals_and_hash = 20 [default = false];</code>
-       *
-       * <pre>
-       * If set true, then the Java code generator will generate equals() and
-       * hashCode() methods for all messages defined in the .proto file.
-       * - In the full runtime, this is purely a speed optimization, as the
-       * AbstractMessage base class includes reflection-based implementations of
-       * these methods.
-       *- In the lite runtime, setting this option changes the semantics of
-       * equals() and hashCode() to more closely match those of the full runtime;
-       * the generated methods compute their results based on field values rather
-       * than object identity. (Implementations should not assume that hashcodes
-       * will be consistent across runtimes or versions of the protocol compiler.)
-       * </pre>
-       */
-      @Override
-	public boolean hasJavaGenerateEqualsAndHash() {
+       * <pre>
+       * This option does nothing.
+       * </pre>
+       *
+       * <code>optional bool java_generate_equals_and_hash = 20 [deprecated = true];</code>
+       */
+      @java.lang.Deprecated public boolean hasJavaGenerateEqualsAndHash() {
         return ((bitField0_ & 0x00000008) == 0x00000008);
       }
       /**
-       * <code>optional bool java_generate_equals_and_hash = 20 [default = false];</code>
-       *
-       * <pre>
-       * If set true, then the Java code generator will generate equals() and
-       * hashCode() methods for all messages defined in the .proto file.
-       * - In the full runtime, this is purely a speed optimization, as the
-       * AbstractMessage base class includes reflection-based implementations of
-       * these methods.
-       *- In the lite runtime, setting this option changes the semantics of
-       * equals() and hashCode() to more closely match those of the full runtime;
-       * the generated methods compute their results based on field values rather
-       * than object identity. (Implementations should not assume that hashcodes
-       * will be consistent across runtimes or versions of the protocol compiler.)
-       * </pre>
-       */
-      @Override
-	public boolean getJavaGenerateEqualsAndHash() {
+       * <pre>
+       * This option does nothing.
+       * </pre>
+       *
+       * <code>optional bool java_generate_equals_and_hash = 20 [deprecated = true];</code>
+       */
+      @java.lang.Deprecated public boolean getJavaGenerateEqualsAndHash() {
         return javaGenerateEqualsAndHash_;
       }
       /**
-       * <code>optional bool java_generate_equals_and_hash = 20 [default = false];</code>
-       *
-       * <pre>
-       * If set true, then the Java code generator will generate equals() and
-       * hashCode() methods for all messages defined in the .proto file.
-       * - In the full runtime, this is purely a speed optimization, as the
-       * AbstractMessage base class includes reflection-based implementations of
-       * these methods.
-       *- In the lite runtime, setting this option changes the semantics of
-       * equals() and hashCode() to more closely match those of the full runtime;
-       * the generated methods compute their results based on field values rather
-       * than object identity. (Implementations should not assume that hashcodes
-       * will be consistent across runtimes or versions of the protocol compiler.)
-       * </pre>
-       */
-      public Builder setJavaGenerateEqualsAndHash(boolean value) {
+       * <pre>
+       * This option does nothing.
+       * </pre>
+       *
+       * <code>optional bool java_generate_equals_and_hash = 20 [deprecated = true];</code>
+       */
+      @java.lang.Deprecated public Builder setJavaGenerateEqualsAndHash(boolean value) {
         bitField0_ |= 0x00000008;
         javaGenerateEqualsAndHash_ = value;
@@ -16706,20 +21453,11 @@
       }
       /**
-       * <code>optional bool java_generate_equals_and_hash = 20 [default = false];</code>
-       *
-       * <pre>
-       * If set true, then the Java code generator will generate equals() and
-       * hashCode() methods for all messages defined in the .proto file.
-       * - In the full runtime, this is purely a speed optimization, as the
-       * AbstractMessage base class includes reflection-based implementations of
-       * these methods.
-       *- In the lite runtime, setting this option changes the semantics of
-       * equals() and hashCode() to more closely match those of the full runtime;
-       * the generated methods compute their results based on field values rather
-       * than object identity. (Implementations should not assume that hashcodes
-       * will be consistent across runtimes or versions of the protocol compiler.)
-       * </pre>
-       */
-      public Builder clearJavaGenerateEqualsAndHash() {
+       * <pre>
+       * This option does nothing.
+       * </pre>
+       *
+       * <code>optional bool java_generate_equals_and_hash = 20 [deprecated = true];</code>
+       */
+      @java.lang.Deprecated public Builder clearJavaGenerateEqualsAndHash() {
         bitField0_ = (bitField0_ & ~0x00000008);
         javaGenerateEqualsAndHash_ = false;
@@ -16730,6 +21468,4 @@
       private boolean javaStringCheckUtf8_ ;
       /**
-       * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
-       *
        * <pre>
        * If set true, then the Java2 code generator will generate code that
@@ -16740,12 +21476,11 @@
        * This option has no effect on when used with the lite runtime.
        * </pre>
-       */
-      @Override
-	public boolean hasJavaStringCheckUtf8() {
+       *
+       * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
+       */
+      public boolean hasJavaStringCheckUtf8() {
         return ((bitField0_ & 0x00000010) == 0x00000010);
       }
       /**
-       * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
-       *
        * <pre>
        * If set true, then the Java2 code generator will generate code that
@@ -16756,12 +21491,11 @@
        * This option has no effect on when used with the lite runtime.
        * </pre>
-       */
-      @Override
-	public boolean getJavaStringCheckUtf8() {
+       *
+       * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
+       */
+      public boolean getJavaStringCheckUtf8() {
         return javaStringCheckUtf8_;
       }
       /**
-       * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
-       *
        * <pre>
        * If set true, then the Java2 code generator will generate code that
@@ -16772,4 +21506,6 @@
        * This option has no effect on when used with the lite runtime.
        * </pre>
+       *
+       * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
        */
       public Builder setJavaStringCheckUtf8(boolean value) {
@@ -16780,6 +21516,4 @@
       }
       /**
-       * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
-       *
        * <pre>
        * If set true, then the Java2 code generator will generate code that
@@ -16790,4 +21524,6 @@
        * This option has no effect on when used with the lite runtime.
        * </pre>
+       *
+       * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
        */
       public Builder clearJavaStringCheckUtf8() {
@@ -16798,10 +21534,9 @@
       }
 
-      private com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED;
+      private int optimizeFor_ = 1;
       /**
        * <code>optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];</code>
        */
-      @Override
-	public boolean hasOptimizeFor() {
+      public boolean hasOptimizeFor() {
         return ((bitField0_ & 0x00000020) == 0x00000020);
       }
@@ -16809,7 +21544,7 @@
        * <code>optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor() {
-        return optimizeFor_;
+      public com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor() {
+        com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode result = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.valueOf(optimizeFor_);
+        return result == null ? com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED : result;
       }
       /**
@@ -16821,5 +21556,5 @@
         }
         bitField0_ |= 0x00000020;
-        optimizeFor_ = value;
+        optimizeFor_ = value.getNumber();
         onChanged();
         return this;
@@ -16830,5 +21565,5 @@
       public Builder clearOptimizeFor() {
         bitField0_ = (bitField0_ & ~0x00000020);
-        optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED;
+        optimizeFor_ = 1;
         onChanged();
         return this;
@@ -16837,25 +21572,29 @@
       private java.lang.Object goPackage_ = "";
       /**
+       * <pre>
+       * Sets the Go package where structs generated from this .proto will be
+       * placed. If omitted, the Go package will be derived from the following:
+       *   - The basename of the package import path, if provided.
+       *   - Otherwise, the package statement in the .proto file, if present.
+       *   - Otherwise, the basename of the .proto file, without extension.
+       * </pre>
+       *
        * <code>optional string go_package = 11;</code>
-       *
+       */
+      public boolean hasGoPackage() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
        * <pre>
        * Sets the Go package where structs generated from this .proto will be
-       * placed.  There is no default.
-       * </pre>
-       */
-      @Override
-	public boolean hasGoPackage() {
-        return ((bitField0_ & 0x00000040) == 0x00000040);
-      }
-      /**
+       * placed. If omitted, the Go package will be derived from the following:
+       *   - The basename of the package import path, if provided.
+       *   - Otherwise, the package statement in the .proto file, if present.
+       *   - Otherwise, the basename of the .proto file, without extension.
+       * </pre>
+       *
        * <code>optional string go_package = 11;</code>
-       *
-       * <pre>
-       * Sets the Go package where structs generated from this .proto will be
-       * placed.  There is no default.
-       * </pre>
-       */
-      @Override
-	public java.lang.String getGoPackage() {
+       */
+      public java.lang.String getGoPackage() {
         java.lang.Object ref = goPackage_;
         if (!(ref instanceof java.lang.String)) {
@@ -16872,17 +21611,19 @@
       }
       /**
+       * <pre>
+       * Sets the Go package where structs generated from this .proto will be
+       * placed. If omitted, the Go package will be derived from the following:
+       *   - The basename of the package import path, if provided.
+       *   - Otherwise, the package statement in the .proto file, if present.
+       *   - Otherwise, the basename of the .proto file, without extension.
+       * </pre>
+       *
        * <code>optional string go_package = 11;</code>
-       *
-       * <pre>
-       * Sets the Go package where structs generated from this .proto will be
-       * placed.  There is no default.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
+       */
+      public com.google.protobuf.ByteString
           getGoPackageBytes() {
         java.lang.Object ref = goPackage_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -16894,10 +21635,13 @@
       }
       /**
+       * <pre>
+       * Sets the Go package where structs generated from this .proto will be
+       * placed. If omitted, the Go package will be derived from the following:
+       *   - The basename of the package import path, if provided.
+       *   - Otherwise, the package statement in the .proto file, if present.
+       *   - Otherwise, the basename of the .proto file, without extension.
+       * </pre>
+       *
        * <code>optional string go_package = 11;</code>
-       *
-       * <pre>
-       * Sets the Go package where structs generated from this .proto will be
-       * placed.  There is no default.
-       * </pre>
        */
       public Builder setGoPackage(
@@ -16912,10 +21656,13 @@
       }
       /**
+       * <pre>
+       * Sets the Go package where structs generated from this .proto will be
+       * placed. If omitted, the Go package will be derived from the following:
+       *   - The basename of the package import path, if provided.
+       *   - Otherwise, the package statement in the .proto file, if present.
+       *   - Otherwise, the basename of the .proto file, without extension.
+       * </pre>
+       *
        * <code>optional string go_package = 11;</code>
-       *
-       * <pre>
-       * Sets the Go package where structs generated from this .proto will be
-       * placed.  There is no default.
-       * </pre>
        */
       public Builder clearGoPackage() {
@@ -16926,10 +21673,13 @@
       }
       /**
+       * <pre>
+       * Sets the Go package where structs generated from this .proto will be
+       * placed. If omitted, the Go package will be derived from the following:
+       *   - The basename of the package import path, if provided.
+       *   - Otherwise, the package statement in the .proto file, if present.
+       *   - Otherwise, the basename of the .proto file, without extension.
+       * </pre>
+       *
        * <code>optional string go_package = 11;</code>
-       *
-       * <pre>
-       * Sets the Go package where structs generated from this .proto will be
-       * placed.  There is no default.
-       * </pre>
        */
       public Builder setGoPackageBytes(
@@ -16946,6 +21696,4 @@
       private boolean ccGenericServices_ ;
       /**
-       * <code>optional bool cc_generic_services = 16 [default = false];</code>
-       *
        * <pre>
        * Should generic services be generated in each language?  "Generic" services
@@ -16953,5 +21701,5 @@
        * main code generators in each language (without additional plugins).
        * Generic services were the only kind of service generation supported by
-       * early versions of proto2.
+       * early versions of google.protobuf.
        * Generic services are now considered deprecated in favor of using plugins
        * that generate code specific to your particular RPC system.  Therefore,
@@ -16959,12 +21707,11 @@
        * explicitly set them to true.
        * </pre>
-       */
-      @Override
-	public boolean hasCcGenericServices() {
+       *
+       * <code>optional bool cc_generic_services = 16 [default = false];</code>
+       */
+      public boolean hasCcGenericServices() {
         return ((bitField0_ & 0x00000080) == 0x00000080);
       }
       /**
-       * <code>optional bool cc_generic_services = 16 [default = false];</code>
-       *
        * <pre>
        * Should generic services be generated in each language?  "Generic" services
@@ -16972,5 +21719,5 @@
        * main code generators in each language (without additional plugins).
        * Generic services were the only kind of service generation supported by
-       * early versions of proto2.
+       * early versions of google.protobuf.
        * Generic services are now considered deprecated in favor of using plugins
        * that generate code specific to your particular RPC system.  Therefore,
@@ -16978,12 +21725,11 @@
        * explicitly set them to true.
        * </pre>
-       */
-      @Override
-	public boolean getCcGenericServices() {
+       *
+       * <code>optional bool cc_generic_services = 16 [default = false];</code>
+       */
+      public boolean getCcGenericServices() {
         return ccGenericServices_;
       }
       /**
-       * <code>optional bool cc_generic_services = 16 [default = false];</code>
-       *
        * <pre>
        * Should generic services be generated in each language?  "Generic" services
@@ -16991,5 +21737,5 @@
        * main code generators in each language (without additional plugins).
        * Generic services were the only kind of service generation supported by
-       * early versions of proto2.
+       * early versions of google.protobuf.
        * Generic services are now considered deprecated in favor of using plugins
        * that generate code specific to your particular RPC system.  Therefore,
@@ -16997,4 +21743,6 @@
        * explicitly set them to true.
        * </pre>
+       *
+       * <code>optional bool cc_generic_services = 16 [default = false];</code>
        */
       public Builder setCcGenericServices(boolean value) {
@@ -17005,6 +21753,4 @@
       }
       /**
-       * <code>optional bool cc_generic_services = 16 [default = false];</code>
-       *
        * <pre>
        * Should generic services be generated in each language?  "Generic" services
@@ -17012,5 +21758,5 @@
        * main code generators in each language (without additional plugins).
        * Generic services were the only kind of service generation supported by
-       * early versions of proto2.
+       * early versions of google.protobuf.
        * Generic services are now considered deprecated in favor of using plugins
        * that generate code specific to your particular RPC system.  Therefore,
@@ -17018,4 +21764,6 @@
        * explicitly set them to true.
        * </pre>
+       *
+       * <code>optional bool cc_generic_services = 16 [default = false];</code>
        */
       public Builder clearCcGenericServices() {
@@ -17030,6 +21778,5 @@
        * <code>optional bool java_generic_services = 17 [default = false];</code>
        */
-      @Override
-	public boolean hasJavaGenericServices() {
+      public boolean hasJavaGenericServices() {
         return ((bitField0_ & 0x00000100) == 0x00000100);
       }
@@ -17037,6 +21784,5 @@
        * <code>optional bool java_generic_services = 17 [default = false];</code>
        */
-      @Override
-	public boolean getJavaGenericServices() {
+      public boolean getJavaGenericServices() {
         return javaGenericServices_;
       }
@@ -17064,6 +21810,5 @@
        * <code>optional bool py_generic_services = 18 [default = false];</code>
        */
-      @Override
-	public boolean hasPyGenericServices() {
+      public boolean hasPyGenericServices() {
         return ((bitField0_ & 0x00000200) == 0x00000200);
       }
@@ -17071,6 +21816,5 @@
        * <code>optional bool py_generic_services = 18 [default = false];</code>
        */
-      @Override
-	public boolean getPyGenericServices() {
+      public boolean getPyGenericServices() {
         return pyGenericServices_;
       }
@@ -17094,8 +21838,38 @@
       }
 
+      private boolean phpGenericServices_ ;
+      /**
+       * <code>optional bool php_generic_services = 42 [default = false];</code>
+       */
+      public boolean hasPhpGenericServices() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional bool php_generic_services = 42 [default = false];</code>
+       */
+      public boolean getPhpGenericServices() {
+        return phpGenericServices_;
+      }
+      /**
+       * <code>optional bool php_generic_services = 42 [default = false];</code>
+       */
+      public Builder setPhpGenericServices(boolean value) {
+        bitField0_ |= 0x00000400;
+        phpGenericServices_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool php_generic_services = 42 [default = false];</code>
+       */
+      public Builder clearPhpGenericServices() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        phpGenericServices_ = false;
+        onChanged();
+        return this;
+      }
+
       private boolean deprecated_ ;
       /**
-       * <code>optional bool deprecated = 23 [default = false];</code>
-       *
        * <pre>
        * Is this file deprecated?
@@ -17104,12 +21878,11 @@
        * least, this is a formalization for deprecating files.
        * </pre>
-       */
-      @Override
-	public boolean hasDeprecated() {
-        return ((bitField0_ & 0x00000400) == 0x00000400);
-      }
-      /**
+       *
        * <code>optional bool deprecated = 23 [default = false];</code>
-       *
+       */
+      public boolean hasDeprecated() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
        * <pre>
        * Is this file deprecated?
@@ -17118,12 +21891,11 @@
        * least, this is a formalization for deprecating files.
        * </pre>
-       */
-      @Override
-	public boolean getDeprecated() {
+       *
+       * <code>optional bool deprecated = 23 [default = false];</code>
+       */
+      public boolean getDeprecated() {
         return deprecated_;
       }
       /**
-       * <code>optional bool deprecated = 23 [default = false];</code>
-       *
        * <pre>
        * Is this file deprecated?
@@ -17132,7 +21904,9 @@
        * least, this is a formalization for deprecating files.
        * </pre>
+       *
+       * <code>optional bool deprecated = 23 [default = false];</code>
        */
       public Builder setDeprecated(boolean value) {
-        bitField0_ |= 0x00000400;
+        bitField0_ |= 0x00000800;
         deprecated_ = value;
         onChanged();
@@ -17140,6 +21914,4 @@
       }
       /**
-       * <code>optional bool deprecated = 23 [default = false];</code>
-       *
        * <pre>
        * Is this file deprecated?
@@ -17148,8 +21920,604 @@
        * least, this is a formalization for deprecating files.
        * </pre>
+       *
+       * <code>optional bool deprecated = 23 [default = false];</code>
        */
       public Builder clearDeprecated() {
-        bitField0_ = (bitField0_ & ~0x00000400);
+        bitField0_ = (bitField0_ & ~0x00000800);
         deprecated_ = false;
+        onChanged();
+        return this;
+      }
+
+      private boolean ccEnableArenas_ ;
+      /**
+       * <pre>
+       * Enables the use of arenas for the proto messages in this file. This applies
+       * only to generated classes for C++.
+       * </pre>
+       *
+       * <code>optional bool cc_enable_arenas = 31 [default = false];</code>
+       */
+      public boolean hasCcEnableArenas() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <pre>
+       * Enables the use of arenas for the proto messages in this file. This applies
+       * only to generated classes for C++.
+       * </pre>
+       *
+       * <code>optional bool cc_enable_arenas = 31 [default = false];</code>
+       */
+      public boolean getCcEnableArenas() {
+        return ccEnableArenas_;
+      }
+      /**
+       * <pre>
+       * Enables the use of arenas for the proto messages in this file. This applies
+       * only to generated classes for C++.
+       * </pre>
+       *
+       * <code>optional bool cc_enable_arenas = 31 [default = false];</code>
+       */
+      public Builder setCcEnableArenas(boolean value) {
+        bitField0_ |= 0x00001000;
+        ccEnableArenas_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Enables the use of arenas for the proto messages in this file. This applies
+       * only to generated classes for C++.
+       * </pre>
+       *
+       * <code>optional bool cc_enable_arenas = 31 [default = false];</code>
+       */
+      public Builder clearCcEnableArenas() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        ccEnableArenas_ = false;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object objcClassPrefix_ = "";
+      /**
+       * <pre>
+       * Sets the objective c class prefix which is prepended to all objective c
+       * generated classes from this .proto. There is no default.
+       * </pre>
+       *
+       * <code>optional string objc_class_prefix = 36;</code>
+       */
+      public boolean hasObjcClassPrefix() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <pre>
+       * Sets the objective c class prefix which is prepended to all objective c
+       * generated classes from this .proto. There is no default.
+       * </pre>
+       *
+       * <code>optional string objc_class_prefix = 36;</code>
+       */
+      public java.lang.String getObjcClassPrefix() {
+        java.lang.Object ref = objcClassPrefix_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            objcClassPrefix_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       * Sets the objective c class prefix which is prepended to all objective c
+       * generated classes from this .proto. There is no default.
+       * </pre>
+       *
+       * <code>optional string objc_class_prefix = 36;</code>
+       */
+      public com.google.protobuf.ByteString
+          getObjcClassPrefixBytes() {
+        java.lang.Object ref = objcClassPrefix_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          objcClassPrefix_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       * Sets the objective c class prefix which is prepended to all objective c
+       * generated classes from this .proto. There is no default.
+       * </pre>
+       *
+       * <code>optional string objc_class_prefix = 36;</code>
+       */
+      public Builder setObjcClassPrefix(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00002000;
+        objcClassPrefix_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Sets the objective c class prefix which is prepended to all objective c
+       * generated classes from this .proto. There is no default.
+       * </pre>
+       *
+       * <code>optional string objc_class_prefix = 36;</code>
+       */
+      public Builder clearObjcClassPrefix() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        objcClassPrefix_ = getDefaultInstance().getObjcClassPrefix();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Sets the objective c class prefix which is prepended to all objective c
+       * generated classes from this .proto. There is no default.
+       * </pre>
+       *
+       * <code>optional string objc_class_prefix = 36;</code>
+       */
+      public Builder setObjcClassPrefixBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00002000;
+        objcClassPrefix_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object csharpNamespace_ = "";
+      /**
+       * <pre>
+       * Namespace for generated classes; defaults to the package.
+       * </pre>
+       *
+       * <code>optional string csharp_namespace = 37;</code>
+       */
+      public boolean hasCsharpNamespace() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <pre>
+       * Namespace for generated classes; defaults to the package.
+       * </pre>
+       *
+       * <code>optional string csharp_namespace = 37;</code>
+       */
+      public java.lang.String getCsharpNamespace() {
+        java.lang.Object ref = csharpNamespace_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            csharpNamespace_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       * Namespace for generated classes; defaults to the package.
+       * </pre>
+       *
+       * <code>optional string csharp_namespace = 37;</code>
+       */
+      public com.google.protobuf.ByteString
+          getCsharpNamespaceBytes() {
+        java.lang.Object ref = csharpNamespace_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          csharpNamespace_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       * Namespace for generated classes; defaults to the package.
+       * </pre>
+       *
+       * <code>optional string csharp_namespace = 37;</code>
+       */
+      public Builder setCsharpNamespace(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00004000;
+        csharpNamespace_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Namespace for generated classes; defaults to the package.
+       * </pre>
+       *
+       * <code>optional string csharp_namespace = 37;</code>
+       */
+      public Builder clearCsharpNamespace() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        csharpNamespace_ = getDefaultInstance().getCsharpNamespace();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Namespace for generated classes; defaults to the package.
+       * </pre>
+       *
+       * <code>optional string csharp_namespace = 37;</code>
+       */
+      public Builder setCsharpNamespaceBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00004000;
+        csharpNamespace_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object swiftPrefix_ = "";
+      /**
+       * <pre>
+       * By default Swift generators will take the proto package and CamelCase it
+       * replacing '.' with underscore and use that to prefix the types/symbols
+       * defined. When this options is provided, they will use this value instead
+       * to prefix the types/symbols defined.
+       * </pre>
+       *
+       * <code>optional string swift_prefix = 39;</code>
+       */
+      public boolean hasSwiftPrefix() {
+        return ((bitField0_ & 0x00008000) == 0x00008000);
+      }
+      /**
+       * <pre>
+       * By default Swift generators will take the proto package and CamelCase it
+       * replacing '.' with underscore and use that to prefix the types/symbols
+       * defined. When this options is provided, they will use this value instead
+       * to prefix the types/symbols defined.
+       * </pre>
+       *
+       * <code>optional string swift_prefix = 39;</code>
+       */
+      public java.lang.String getSwiftPrefix() {
+        java.lang.Object ref = swiftPrefix_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            swiftPrefix_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       * By default Swift generators will take the proto package and CamelCase it
+       * replacing '.' with underscore and use that to prefix the types/symbols
+       * defined. When this options is provided, they will use this value instead
+       * to prefix the types/symbols defined.
+       * </pre>
+       *
+       * <code>optional string swift_prefix = 39;</code>
+       */
+      public com.google.protobuf.ByteString
+          getSwiftPrefixBytes() {
+        java.lang.Object ref = swiftPrefix_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          swiftPrefix_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       * By default Swift generators will take the proto package and CamelCase it
+       * replacing '.' with underscore and use that to prefix the types/symbols
+       * defined. When this options is provided, they will use this value instead
+       * to prefix the types/symbols defined.
+       * </pre>
+       *
+       * <code>optional string swift_prefix = 39;</code>
+       */
+      public Builder setSwiftPrefix(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00008000;
+        swiftPrefix_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * By default Swift generators will take the proto package and CamelCase it
+       * replacing '.' with underscore and use that to prefix the types/symbols
+       * defined. When this options is provided, they will use this value instead
+       * to prefix the types/symbols defined.
+       * </pre>
+       *
+       * <code>optional string swift_prefix = 39;</code>
+       */
+      public Builder clearSwiftPrefix() {
+        bitField0_ = (bitField0_ & ~0x00008000);
+        swiftPrefix_ = getDefaultInstance().getSwiftPrefix();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * By default Swift generators will take the proto package and CamelCase it
+       * replacing '.' with underscore and use that to prefix the types/symbols
+       * defined. When this options is provided, they will use this value instead
+       * to prefix the types/symbols defined.
+       * </pre>
+       *
+       * <code>optional string swift_prefix = 39;</code>
+       */
+      public Builder setSwiftPrefixBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00008000;
+        swiftPrefix_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object phpClassPrefix_ = "";
+      /**
+       * <pre>
+       * Sets the php class prefix which is prepended to all php generated classes
+       * from this .proto. Default is empty.
+       * </pre>
+       *
+       * <code>optional string php_class_prefix = 40;</code>
+       */
+      public boolean hasPhpClassPrefix() {
+        return ((bitField0_ & 0x00010000) == 0x00010000);
+      }
+      /**
+       * <pre>
+       * Sets the php class prefix which is prepended to all php generated classes
+       * from this .proto. Default is empty.
+       * </pre>
+       *
+       * <code>optional string php_class_prefix = 40;</code>
+       */
+      public java.lang.String getPhpClassPrefix() {
+        java.lang.Object ref = phpClassPrefix_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            phpClassPrefix_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       * Sets the php class prefix which is prepended to all php generated classes
+       * from this .proto. Default is empty.
+       * </pre>
+       *
+       * <code>optional string php_class_prefix = 40;</code>
+       */
+      public com.google.protobuf.ByteString
+          getPhpClassPrefixBytes() {
+        java.lang.Object ref = phpClassPrefix_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          phpClassPrefix_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       * Sets the php class prefix which is prepended to all php generated classes
+       * from this .proto. Default is empty.
+       * </pre>
+       *
+       * <code>optional string php_class_prefix = 40;</code>
+       */
+      public Builder setPhpClassPrefix(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00010000;
+        phpClassPrefix_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Sets the php class prefix which is prepended to all php generated classes
+       * from this .proto. Default is empty.
+       * </pre>
+       *
+       * <code>optional string php_class_prefix = 40;</code>
+       */
+      public Builder clearPhpClassPrefix() {
+        bitField0_ = (bitField0_ & ~0x00010000);
+        phpClassPrefix_ = getDefaultInstance().getPhpClassPrefix();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Sets the php class prefix which is prepended to all php generated classes
+       * from this .proto. Default is empty.
+       * </pre>
+       *
+       * <code>optional string php_class_prefix = 40;</code>
+       */
+      public Builder setPhpClassPrefixBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00010000;
+        phpClassPrefix_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object phpNamespace_ = "";
+      /**
+       * <pre>
+       * Use this option to change the namespace of php generated classes. Default
+       * is empty. When this option is empty, the package name will be used for
+       * determining the namespace.
+       * </pre>
+       *
+       * <code>optional string php_namespace = 41;</code>
+       */
+      public boolean hasPhpNamespace() {
+        return ((bitField0_ & 0x00020000) == 0x00020000);
+      }
+      /**
+       * <pre>
+       * Use this option to change the namespace of php generated classes. Default
+       * is empty. When this option is empty, the package name will be used for
+       * determining the namespace.
+       * </pre>
+       *
+       * <code>optional string php_namespace = 41;</code>
+       */
+      public java.lang.String getPhpNamespace() {
+        java.lang.Object ref = phpNamespace_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            phpNamespace_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       * Use this option to change the namespace of php generated classes. Default
+       * is empty. When this option is empty, the package name will be used for
+       * determining the namespace.
+       * </pre>
+       *
+       * <code>optional string php_namespace = 41;</code>
+       */
+      public com.google.protobuf.ByteString
+          getPhpNamespaceBytes() {
+        java.lang.Object ref = phpNamespace_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          phpNamespace_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       * Use this option to change the namespace of php generated classes. Default
+       * is empty. When this option is empty, the package name will be used for
+       * determining the namespace.
+       * </pre>
+       *
+       * <code>optional string php_namespace = 41;</code>
+       */
+      public Builder setPhpNamespace(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00020000;
+        phpNamespace_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Use this option to change the namespace of php generated classes. Default
+       * is empty. When this option is empty, the package name will be used for
+       * determining the namespace.
+       * </pre>
+       *
+       * <code>optional string php_namespace = 41;</code>
+       */
+      public Builder clearPhpNamespace() {
+        bitField0_ = (bitField0_ & ~0x00020000);
+        phpNamespace_ = getDefaultInstance().getPhpNamespace();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Use this option to change the namespace of php generated classes. Default
+       * is empty. When this option is empty, the package name will be used for
+       * determining the namespace.
+       * </pre>
+       *
+       * <code>optional string php_namespace = 41;</code>
+       */
+      public Builder setPhpNamespaceBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00020000;
+        phpNamespace_ = value;
         onChanged();
         return this;
@@ -17159,22 +22527,21 @@
         java.util.Collections.emptyList();
       private void ensureUninterpretedOptionIsMutable() {
-        if (!((bitField0_ & 0x00000800) == 0x00000800)) {
-          uninterpretedOption_ = new java.util.ArrayList<>(uninterpretedOption_);
-          bitField0_ |= 0x00000800;
+        if (!((bitField0_ & 0x00040000) == 0x00040000)) {
+          uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
+          bitField0_ |= 0x00040000;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_;
 
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
         if (uninterpretedOptionBuilder_ == null) {
           return java.util.Collections.unmodifiableList(uninterpretedOption_);
@@ -17184,12 +22551,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public int getUninterpretedOptionCount() {
+       */
+      public int getUninterpretedOptionCount() {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.size();
@@ -17199,12 +22565,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.get(index);
@@ -17214,9 +22579,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -17235,9 +22600,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -17253,9 +22618,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
@@ -17273,9 +22638,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -17294,9 +22659,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -17312,9 +22677,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -17330,9 +22695,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addAllUninterpretedOption(
@@ -17349,14 +22714,14 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder clearUninterpretedOption() {
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000800);
+          bitField0_ = (bitField0_ & ~0x00040000);
           onChanged();
         } else {
@@ -17366,9 +22731,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder removeUninterpretedOption(int index) {
@@ -17383,9 +22748,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder(
@@ -17394,12 +22759,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
           int index) {
         if (uninterpretedOptionBuilder_ == null) {
@@ -17409,12 +22773,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
            getUninterpretedOptionOrBuilderList() {
         if (uninterpretedOptionBuilder_ != null) {
@@ -17425,9 +22788,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() {
@@ -17436,9 +22799,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder(
@@ -17448,21 +22811,22 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> 
            getUninterpretedOptionBuilderList() {
         return getUninterpretedOptionFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
           getUninterpretedOptionFieldBuilder() {
         if (uninterpretedOptionBuilder_ == null) {
-          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
-                  ((bitField0_ & 0x00000800) == 0x00000800),
+                  ((bitField0_ & 0x00040000) == 0x00040000),
                   getParentForChildren(),
                   isClean());
@@ -17471,24 +22835,59 @@
         return uninterpretedOptionBuilder_;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.FileOptions)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.FileOptions)
+    private static final com.google.protobuf.DescriptorProtos.FileOptions DEFAULT_INSTANCE;
     static {
-      defaultInstance = new FileOptions(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.FileOptions)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.FileOptions();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.FileOptions getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<FileOptions>
+        PARSER = new com.google.protobuf.AbstractParser<FileOptions>() {
+      public FileOptions parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new FileOptions(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<FileOptions> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<FileOptions> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.FileOptions getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
   public interface MessageOptionsOrBuilder extends
       // @@protoc_insertion_point(interface_extends:google.protobuf.MessageOptions)
-      com.google.protobuf.GeneratedMessage.
+      com.google.protobuf.GeneratedMessageV3.
           ExtendableMessageOrBuilder<MessageOptions> {
 
     /**
-     * <code>optional bool message_set_wire_format = 1 [default = false];</code>
-     *
      * <pre>
      * Set true to use the old proto1 MessageSet wire format for extensions.
@@ -17508,9 +22907,9 @@
      * the protocol compiler.
      * </pre>
+     *
+     * <code>optional bool message_set_wire_format = 1 [default = false];</code>
      */
     boolean hasMessageSetWireFormat();
     /**
-     * <code>optional bool message_set_wire_format = 1 [default = false];</code>
-     *
      * <pre>
      * Set true to use the old proto1 MessageSet wire format for extensions.
@@ -17530,10 +22929,10 @@
      * the protocol compiler.
      * </pre>
+     *
+     * <code>optional bool message_set_wire_format = 1 [default = false];</code>
      */
     boolean getMessageSetWireFormat();
 
     /**
-     * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
-     *
      * <pre>
      * Disables the generation of the standard "descriptor()" accessor, which can
@@ -17541,9 +22940,9 @@
      * from proto1 easier; new code should avoid fields named "descriptor".
      * </pre>
+     *
+     * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
      */
     boolean hasNoStandardDescriptorAccessor();
     /**
-     * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
-     *
      * <pre>
      * Disables the generation of the standard "descriptor()" accessor, which can
@@ -17551,10 +22950,10 @@
      * from proto1 easier; new code should avoid fields named "descriptor".
      * </pre>
+     *
+     * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
      */
     boolean getNoStandardDescriptorAccessor();
 
     /**
-     * <code>optional bool deprecated = 3 [default = false];</code>
-     *
      * <pre>
      * Is this message deprecated?
@@ -17563,9 +22962,9 @@
      * this is a formalization for deprecating messages.
      * </pre>
+     *
+     * <code>optional bool deprecated = 3 [default = false];</code>
      */
     boolean hasDeprecated();
     /**
-     * <code>optional bool deprecated = 3 [default = false];</code>
-     *
      * <pre>
      * Is this message deprecated?
@@ -17574,47 +22973,100 @@
      * this is a formalization for deprecating messages.
      * </pre>
+     *
+     * <code>optional bool deprecated = 3 [default = false];</code>
      */
     boolean getDeprecated();
 
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     * <pre>
+     * Whether the message is an automatically generated map entry type for the
+     * maps field.
+     * For maps fields:
+     *     map&lt;KeyType, ValueType&gt; map_field = 1;
+     * The parsed descriptor looks like:
+     *     message MapFieldEntry {
+     *         option map_entry = true;
+     *         optional KeyType key = 1;
+     *         optional ValueType value = 2;
+     *     }
+     *     repeated MapFieldEntry map_field = 1;
+     * Implementations may choose not to generate the map_entry=true message, but
+     * use a native map in the target language to hold the keys and values.
+     * The reflection APIs in such implementions still need to work as
+     * if the field is a repeated message field.
+     * NOTE: Do not set the option in .proto files. Always use the maps syntax
+     * instead. The option should only be implicitly set by the proto compiler
+     * parser.
+     * </pre>
      *
+     * <code>optional bool map_entry = 7;</code>
+     */
+    boolean hasMapEntry();
+    /**
+     * <pre>
+     * Whether the message is an automatically generated map entry type for the
+     * maps field.
+     * For maps fields:
+     *     map&lt;KeyType, ValueType&gt; map_field = 1;
+     * The parsed descriptor looks like:
+     *     message MapFieldEntry {
+     *         option map_entry = true;
+     *         optional KeyType key = 1;
+     *         optional ValueType value = 2;
+     *     }
+     *     repeated MapFieldEntry map_field = 1;
+     * Implementations may choose not to generate the map_entry=true message, but
+     * use a native map in the target language to hold the keys and values.
+     * The reflection APIs in such implementions still need to work as
+     * if the field is a repeated message field.
+     * NOTE: Do not set the option in .proto files. Always use the maps syntax
+     * instead. The option should only be implicitly set by the proto compiler
+     * parser.
+     * </pre>
+     *
+     * <code>optional bool map_entry = 7;</code>
+     */
+    boolean getMapEntry();
+
+    /**
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> 
         getUninterpretedOptionList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     int getUninterpretedOptionCount();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
@@ -17624,30 +23076,25 @@
    * Protobuf type {@code google.protobuf.MessageOptions}
    */
-  public static final class MessageOptions extends
-      com.google.protobuf.GeneratedMessage.ExtendableMessage<
+  public  static final class MessageOptions extends
+      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
         MessageOptions> implements
       // @@protoc_insertion_point(message_implements:google.protobuf.MessageOptions)
       MessageOptionsOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use MessageOptions.newBuilder() to construct.
-    private MessageOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder<com.google.protobuf.DescriptorProtos.MessageOptions, ?> builder) {
+    private MessageOptions(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<com.google.protobuf.DescriptorProtos.MessageOptions, ?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private MessageOptions(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final MessageOptions defaultInstance;
-    public static MessageOptions getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public MessageOptions getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private MessageOptions() {
+      messageSetWireFormat_ = false;
+      noStandardDescriptorAccessor_ = false;
+      deprecated_ = false;
+      mapEntry_ = false;
+      uninterpretedOption_ = java.util.Collections.emptyList();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -17656,5 +23103,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -17669,6 +23116,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -17690,10 +23137,16 @@
               break;
             }
+            case 56: {
+              bitField0_ |= 0x00000008;
+              mapEntry_ = input.readBool();
+              break;
+            }
             case 7994: {
-              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
-                uninterpretedOption_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000008;
+              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
+                mutable_bitField0_ |= 0x00000010;
               }
-              uninterpretedOption_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
+              uninterpretedOption_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
               break;
             }
@@ -17704,7 +23157,7 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
           uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
         }
@@ -17718,6 +23171,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_fieldAccessorTable
@@ -17726,26 +23178,8 @@
     }
 
-    public static com.google.protobuf.Parser<MessageOptions> PARSER =
-        new com.google.protobuf.AbstractParser<MessageOptions>() {
-      @Override
-	public MessageOptions parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new MessageOptions(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<MessageOptions> getParserForType() {
-      return PARSER;
-    }
-
     private int bitField0_;
     public static final int MESSAGE_SET_WIRE_FORMAT_FIELD_NUMBER = 1;
     private boolean messageSetWireFormat_;
     /**
-     * <code>optional bool message_set_wire_format = 1 [default = false];</code>
-     *
      * <pre>
      * Set true to use the old proto1 MessageSet wire format for extensions.
@@ -17765,12 +23199,11 @@
      * the protocol compiler.
      * </pre>
-     */
-    @Override
-	public boolean hasMessageSetWireFormat() {
+     *
+     * <code>optional bool message_set_wire_format = 1 [default = false];</code>
+     */
+    public boolean hasMessageSetWireFormat() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
     /**
-     * <code>optional bool message_set_wire_format = 1 [default = false];</code>
-     *
      * <pre>
      * Set true to use the old proto1 MessageSet wire format for extensions.
@@ -17790,7 +23223,8 @@
      * the protocol compiler.
      * </pre>
-     */
-    @Override
-	public boolean getMessageSetWireFormat() {
+     *
+     * <code>optional bool message_set_wire_format = 1 [default = false];</code>
+     */
+    public boolean getMessageSetWireFormat() {
       return messageSetWireFormat_;
     }
@@ -17799,6 +23233,4 @@
     private boolean noStandardDescriptorAccessor_;
     /**
-     * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
-     *
      * <pre>
      * Disables the generation of the standard "descriptor()" accessor, which can
@@ -17806,12 +23238,11 @@
      * from proto1 easier; new code should avoid fields named "descriptor".
      * </pre>
-     */
-    @Override
-	public boolean hasNoStandardDescriptorAccessor() {
+     *
+     * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
+     */
+    public boolean hasNoStandardDescriptorAccessor() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
     /**
-     * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
-     *
      * <pre>
      * Disables the generation of the standard "descriptor()" accessor, which can
@@ -17819,7 +23250,8 @@
      * from proto1 easier; new code should avoid fields named "descriptor".
      * </pre>
-     */
-    @Override
-	public boolean getNoStandardDescriptorAccessor() {
+     *
+     * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
+     */
+    public boolean getNoStandardDescriptorAccessor() {
       return noStandardDescriptorAccessor_;
     }
@@ -17828,6 +23260,4 @@
     private boolean deprecated_;
     /**
-     * <code>optional bool deprecated = 3 [default = false];</code>
-     *
      * <pre>
      * Is this message deprecated?
@@ -17836,12 +23266,11 @@
      * this is a formalization for deprecating messages.
      * </pre>
-     */
-    @Override
-	public boolean hasDeprecated() {
+     *
+     * <code>optional bool deprecated = 3 [default = false];</code>
+     */
+    public boolean hasDeprecated() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
     /**
-     * <code>optional bool deprecated = 3 [default = false];</code>
-     *
      * <pre>
      * Is this message deprecated?
@@ -17850,8 +23279,66 @@
      * this is a formalization for deprecating messages.
      * </pre>
-     */
-    @Override
-	public boolean getDeprecated() {
+     *
+     * <code>optional bool deprecated = 3 [default = false];</code>
+     */
+    public boolean getDeprecated() {
       return deprecated_;
+    }
+
+    public static final int MAP_ENTRY_FIELD_NUMBER = 7;
+    private boolean mapEntry_;
+    /**
+     * <pre>
+     * Whether the message is an automatically generated map entry type for the
+     * maps field.
+     * For maps fields:
+     *     map&lt;KeyType, ValueType&gt; map_field = 1;
+     * The parsed descriptor looks like:
+     *     message MapFieldEntry {
+     *         option map_entry = true;
+     *         optional KeyType key = 1;
+     *         optional ValueType value = 2;
+     *     }
+     *     repeated MapFieldEntry map_field = 1;
+     * Implementations may choose not to generate the map_entry=true message, but
+     * use a native map in the target language to hold the keys and values.
+     * The reflection APIs in such implementions still need to work as
+     * if the field is a repeated message field.
+     * NOTE: Do not set the option in .proto files. Always use the maps syntax
+     * instead. The option should only be implicitly set by the proto compiler
+     * parser.
+     * </pre>
+     *
+     * <code>optional bool map_entry = 7;</code>
+     */
+    public boolean hasMapEntry() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <pre>
+     * Whether the message is an automatically generated map entry type for the
+     * maps field.
+     * For maps fields:
+     *     map&lt;KeyType, ValueType&gt; map_field = 1;
+     * The parsed descriptor looks like:
+     *     message MapFieldEntry {
+     *         option map_entry = true;
+     *         optional KeyType key = 1;
+     *         optional ValueType value = 2;
+     *     }
+     *     repeated MapFieldEntry map_field = 1;
+     * Implementations may choose not to generate the map_entry=true message, but
+     * use a native map in the target language to hold the keys and values.
+     * The reflection APIs in such implementions still need to work as
+     * if the field is a repeated message field.
+     * NOTE: Do not set the option in .proto files. Always use the maps syntax
+     * instead. The option should only be implicitly set by the proto compiler
+     * parser.
+     * </pre>
+     *
+     * <code>optional bool map_entry = 7;</code>
+     */
+    public boolean getMapEntry() {
+      return mapEntry_;
     }
 
@@ -17859,70 +23346,58 @@
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public int getUninterpretedOptionCount() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public int getUninterpretedOptionCount() {
       return uninterpretedOption_.size();
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
       return uninterpretedOption_.get(index);
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
         int index) {
       return uninterpretedOption_.get(index);
     }
 
-    private void initFields() {
-      messageSetWireFormat_ = false;
-      noStandardDescriptorAccessor_ = false;
-      deprecated_ = false;
-      uninterpretedOption_ = java.util.Collections.emptyList();
-    }
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -17943,11 +23418,9 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
-      com.google.protobuf.GeneratedMessage
-        .ExtendableMessage<com.google.protobuf.DescriptorProtos.MessageOptions>.ExtensionWriter extensionWriter =
-          newExtensionWriter();
+      com.google.protobuf.GeneratedMessageV3
+        .ExtendableMessage<com.google.protobuf.DescriptorProtos.MessageOptions>.ExtensionWriter
+          extensionWriter = newExtensionWriter();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeBool(1, messageSetWireFormat_);
@@ -17959,15 +23432,16 @@
         output.writeBool(3, deprecated_);
       }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBool(7, mapEntry_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         output.writeMessage(999, uninterpretedOption_.get(i));
       }
       extensionWriter.writeUntil(536870912, output);
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
@@ -17985,4 +23459,8 @@
           .computeBoolSize(3, deprecated_);
       }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(7, mapEntry_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
@@ -17990,16 +23468,96 @@
       }
       size += extensionsSerializedSize();
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.MessageOptions)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.MessageOptions other = (com.google.protobuf.DescriptorProtos.MessageOptions) obj;
+
+      boolean result = true;
+      result = result && (hasMessageSetWireFormat() == other.hasMessageSetWireFormat());
+      if (hasMessageSetWireFormat()) {
+        result = result && (getMessageSetWireFormat()
+            == other.getMessageSetWireFormat());
+      }
+      result = result && (hasNoStandardDescriptorAccessor() == other.hasNoStandardDescriptorAccessor());
+      if (hasNoStandardDescriptorAccessor()) {
+        result = result && (getNoStandardDescriptorAccessor()
+            == other.getNoStandardDescriptorAccessor());
+      }
+      result = result && (hasDeprecated() == other.hasDeprecated());
+      if (hasDeprecated()) {
+        result = result && (getDeprecated()
+            == other.getDeprecated());
+      }
+      result = result && (hasMapEntry() == other.hasMapEntry());
+      if (hasMapEntry()) {
+        result = result && (getMapEntry()
+            == other.getMapEntry());
+      }
+      result = result && getUninterpretedOptionList()
+          .equals(other.getUninterpretedOptionList());
+      result = result && unknownFields.equals(other.unknownFields);
+      result = result &&
+          getExtensionFields().equals(other.getExtensionFields());
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasMessageSetWireFormat()) {
+        hash = (37 * hash) + MESSAGE_SET_WIRE_FORMAT_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getMessageSetWireFormat());
+      }
+      if (hasNoStandardDescriptorAccessor()) {
+        hash = (37 * hash) + NO_STANDARD_DESCRIPTOR_ACCESSOR_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getNoStandardDescriptorAccessor());
+      }
+      if (hasDeprecated()) {
+        hash = (37 * hash) + DEPRECATED_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getDeprecated());
+      }
+      if (hasMapEntry()) {
+        hash = (37 * hash) + MAP_ENTRY_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getMapEntry());
+      }
+      if (getUninterpretedOptionCount() > 0) {
+        hash = (37 * hash) + UNINTERPRETED_OPTION_FIELD_NUMBER;
+        hash = (53 * hash) + getUninterpretedOptionList().hashCode();
+      }
+      hash = hashFields(hash, getExtensionFields());
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
         com.google.protobuf.ByteString data)
@@ -18025,5 +23583,6 @@
     public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
@@ -18031,9 +23590,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.MessageOptions parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.MessageOptions parseDelimitedFrom(
@@ -18041,10 +23602,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
@@ -18052,19 +23615,23 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.MessageOptions prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
@@ -18074,5 +23641,5 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
+        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
           com.google.protobuf.DescriptorProtos.MessageOptions, Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.MessageOptions)
@@ -18083,6 +23650,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_fieldAccessorTable
@@ -18097,19 +23663,15 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getUninterpretedOptionFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         messageSetWireFormat_ = false;
@@ -18119,7 +23681,9 @@
         deprecated_ = false;
         bitField0_ = (bitField0_ & ~0x00000004);
+        mapEntry_ = false;
+        bitField0_ = (bitField0_ & ~0x00000008);
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000008);
+          bitField0_ = (bitField0_ & ~0x00000010);
         } else {
           uninterpretedOptionBuilder_.clear();
@@ -18128,22 +23692,14 @@
       }
 
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.MessageOptions getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.MessageOptions getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.MessageOptions build() {
+      public com.google.protobuf.DescriptorProtos.MessageOptions build() {
         com.google.protobuf.DescriptorProtos.MessageOptions result = buildPartial();
         if (!result.isInitialized()) {
@@ -18153,6 +23709,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.MessageOptions buildPartial() {
+      public com.google.protobuf.DescriptorProtos.MessageOptions buildPartial() {
         com.google.protobuf.DescriptorProtos.MessageOptions result = new com.google.protobuf.DescriptorProtos.MessageOptions(this);
         int from_bitField0_ = bitField0_;
@@ -18170,8 +23725,12 @@
         }
         result.deprecated_ = deprecated_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.mapEntry_ = mapEntry_;
         if (uninterpretedOptionBuilder_ == null) {
-          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          if (((bitField0_ & 0x00000010) == 0x00000010)) {
             uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
-            bitField0_ = (bitField0_ & ~0x00000008);
+            bitField0_ = (bitField0_ & ~0x00000010);
           }
           result.uninterpretedOption_ = uninterpretedOption_;
@@ -18184,6 +23743,54 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.MessageOptions, Type> extension,
+          Type value) {
+        return (Builder) super.setExtension(extension, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.MessageOptions, java.util.List<Type>> extension,
+          int index, Type value) {
+        return (Builder) super.setExtension(extension, index, value);
+      }
+      public <Type> Builder addExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.MessageOptions, java.util.List<Type>> extension,
+          Type value) {
+        return (Builder) super.addExtension(extension, value);
+      }
+      public <Type> Builder clearExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.MessageOptions, ?> extension) {
+        return (Builder) super.clearExtension(extension);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.MessageOptions) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.MessageOptions)other);
@@ -18205,9 +23812,12 @@
           setDeprecated(other.getDeprecated());
         }
+        if (other.hasMapEntry()) {
+          setMapEntry(other.getMapEntry());
+        }
         if (uninterpretedOptionBuilder_ == null) {
           if (!other.uninterpretedOption_.isEmpty()) {
             if (uninterpretedOption_.isEmpty()) {
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000008);
+              bitField0_ = (bitField0_ & ~0x00000010);
             } else {
               ensureUninterpretedOptionIsMutable();
@@ -18222,7 +23832,7 @@
               uninterpretedOptionBuilder_ = null;
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000008);
-              uninterpretedOptionBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              bitField0_ = (bitField0_ & ~0x00000010);
+              uninterpretedOptionBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getUninterpretedOptionFieldBuilder() : null;
             } else {
@@ -18232,18 +23842,16 @@
         }
         this.mergeExtensionFields(other);
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         for (int i = 0; i < getUninterpretedOptionCount(); i++) {
           if (!getUninterpretedOption(i).isInitialized()) {
-
             return false;
           }
         }
         if (!extensionsAreInitialized()) {
-
           return false;
         }
@@ -18251,6 +23859,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -18261,5 +23868,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.MessageOptions) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -18273,6 +23880,4 @@
       private boolean messageSetWireFormat_ ;
       /**
-       * <code>optional bool message_set_wire_format = 1 [default = false];</code>
-       *
        * <pre>
        * Set true to use the old proto1 MessageSet wire format for extensions.
@@ -18292,12 +23897,11 @@
        * the protocol compiler.
        * </pre>
-       */
-      @Override
-	public boolean hasMessageSetWireFormat() {
+       *
+       * <code>optional bool message_set_wire_format = 1 [default = false];</code>
+       */
+      public boolean hasMessageSetWireFormat() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
       /**
-       * <code>optional bool message_set_wire_format = 1 [default = false];</code>
-       *
        * <pre>
        * Set true to use the old proto1 MessageSet wire format for extensions.
@@ -18317,12 +23921,11 @@
        * the protocol compiler.
        * </pre>
-       */
-      @Override
-	public boolean getMessageSetWireFormat() {
+       *
+       * <code>optional bool message_set_wire_format = 1 [default = false];</code>
+       */
+      public boolean getMessageSetWireFormat() {
         return messageSetWireFormat_;
       }
       /**
-       * <code>optional bool message_set_wire_format = 1 [default = false];</code>
-       *
        * <pre>
        * Set true to use the old proto1 MessageSet wire format for extensions.
@@ -18342,4 +23945,6 @@
        * the protocol compiler.
        * </pre>
+       *
+       * <code>optional bool message_set_wire_format = 1 [default = false];</code>
        */
       public Builder setMessageSetWireFormat(boolean value) {
@@ -18350,6 +23955,4 @@
       }
       /**
-       * <code>optional bool message_set_wire_format = 1 [default = false];</code>
-       *
        * <pre>
        * Set true to use the old proto1 MessageSet wire format for extensions.
@@ -18369,4 +23972,6 @@
        * the protocol compiler.
        * </pre>
+       *
+       * <code>optional bool message_set_wire_format = 1 [default = false];</code>
        */
       public Builder clearMessageSetWireFormat() {
@@ -18379,6 +23984,4 @@
       private boolean noStandardDescriptorAccessor_ ;
       /**
-       * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
-       *
        * <pre>
        * Disables the generation of the standard "descriptor()" accessor, which can
@@ -18386,12 +23989,11 @@
        * from proto1 easier; new code should avoid fields named "descriptor".
        * </pre>
-       */
-      @Override
-	public boolean hasNoStandardDescriptorAccessor() {
+       *
+       * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
+       */
+      public boolean hasNoStandardDescriptorAccessor() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
       /**
-       * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
-       *
        * <pre>
        * Disables the generation of the standard "descriptor()" accessor, which can
@@ -18399,12 +24001,11 @@
        * from proto1 easier; new code should avoid fields named "descriptor".
        * </pre>
-       */
-      @Override
-	public boolean getNoStandardDescriptorAccessor() {
+       *
+       * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
+       */
+      public boolean getNoStandardDescriptorAccessor() {
         return noStandardDescriptorAccessor_;
       }
       /**
-       * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
-       *
        * <pre>
        * Disables the generation of the standard "descriptor()" accessor, which can
@@ -18412,4 +24013,6 @@
        * from proto1 easier; new code should avoid fields named "descriptor".
        * </pre>
+       *
+       * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
        */
       public Builder setNoStandardDescriptorAccessor(boolean value) {
@@ -18420,6 +24023,4 @@
       }
       /**
-       * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
-       *
        * <pre>
        * Disables the generation of the standard "descriptor()" accessor, which can
@@ -18427,4 +24028,6 @@
        * from proto1 easier; new code should avoid fields named "descriptor".
        * </pre>
+       *
+       * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
        */
       public Builder clearNoStandardDescriptorAccessor() {
@@ -18437,6 +24040,4 @@
       private boolean deprecated_ ;
       /**
-       * <code>optional bool deprecated = 3 [default = false];</code>
-       *
        * <pre>
        * Is this message deprecated?
@@ -18445,12 +24046,11 @@
        * this is a formalization for deprecating messages.
        * </pre>
-       */
-      @Override
-	public boolean hasDeprecated() {
+       *
+       * <code>optional bool deprecated = 3 [default = false];</code>
+       */
+      public boolean hasDeprecated() {
         return ((bitField0_ & 0x00000004) == 0x00000004);
       }
       /**
-       * <code>optional bool deprecated = 3 [default = false];</code>
-       *
        * <pre>
        * Is this message deprecated?
@@ -18459,12 +24059,11 @@
        * this is a formalization for deprecating messages.
        * </pre>
-       */
-      @Override
-	public boolean getDeprecated() {
+       *
+       * <code>optional bool deprecated = 3 [default = false];</code>
+       */
+      public boolean getDeprecated() {
         return deprecated_;
       }
       /**
-       * <code>optional bool deprecated = 3 [default = false];</code>
-       *
        * <pre>
        * Is this message deprecated?
@@ -18473,4 +24072,6 @@
        * this is a formalization for deprecating messages.
        * </pre>
+       *
+       * <code>optional bool deprecated = 3 [default = false];</code>
        */
       public Builder setDeprecated(boolean value) {
@@ -18481,6 +24082,4 @@
       }
       /**
-       * <code>optional bool deprecated = 3 [default = false];</code>
-       *
        * <pre>
        * Is this message deprecated?
@@ -18489,4 +24088,6 @@
        * this is a formalization for deprecating messages.
        * </pre>
+       *
+       * <code>optional bool deprecated = 3 [default = false];</code>
        */
       public Builder clearDeprecated() {
@@ -18497,25 +24098,140 @@
       }
 
+      private boolean mapEntry_ ;
+      /**
+       * <pre>
+       * Whether the message is an automatically generated map entry type for the
+       * maps field.
+       * For maps fields:
+       *     map&lt;KeyType, ValueType&gt; map_field = 1;
+       * The parsed descriptor looks like:
+       *     message MapFieldEntry {
+       *         option map_entry = true;
+       *         optional KeyType key = 1;
+       *         optional ValueType value = 2;
+       *     }
+       *     repeated MapFieldEntry map_field = 1;
+       * Implementations may choose not to generate the map_entry=true message, but
+       * use a native map in the target language to hold the keys and values.
+       * The reflection APIs in such implementions still need to work as
+       * if the field is a repeated message field.
+       * NOTE: Do not set the option in .proto files. Always use the maps syntax
+       * instead. The option should only be implicitly set by the proto compiler
+       * parser.
+       * </pre>
+       *
+       * <code>optional bool map_entry = 7;</code>
+       */
+      public boolean hasMapEntry() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <pre>
+       * Whether the message is an automatically generated map entry type for the
+       * maps field.
+       * For maps fields:
+       *     map&lt;KeyType, ValueType&gt; map_field = 1;
+       * The parsed descriptor looks like:
+       *     message MapFieldEntry {
+       *         option map_entry = true;
+       *         optional KeyType key = 1;
+       *         optional ValueType value = 2;
+       *     }
+       *     repeated MapFieldEntry map_field = 1;
+       * Implementations may choose not to generate the map_entry=true message, but
+       * use a native map in the target language to hold the keys and values.
+       * The reflection APIs in such implementions still need to work as
+       * if the field is a repeated message field.
+       * NOTE: Do not set the option in .proto files. Always use the maps syntax
+       * instead. The option should only be implicitly set by the proto compiler
+       * parser.
+       * </pre>
+       *
+       * <code>optional bool map_entry = 7;</code>
+       */
+      public boolean getMapEntry() {
+        return mapEntry_;
+      }
+      /**
+       * <pre>
+       * Whether the message is an automatically generated map entry type for the
+       * maps field.
+       * For maps fields:
+       *     map&lt;KeyType, ValueType&gt; map_field = 1;
+       * The parsed descriptor looks like:
+       *     message MapFieldEntry {
+       *         option map_entry = true;
+       *         optional KeyType key = 1;
+       *         optional ValueType value = 2;
+       *     }
+       *     repeated MapFieldEntry map_field = 1;
+       * Implementations may choose not to generate the map_entry=true message, but
+       * use a native map in the target language to hold the keys and values.
+       * The reflection APIs in such implementions still need to work as
+       * if the field is a repeated message field.
+       * NOTE: Do not set the option in .proto files. Always use the maps syntax
+       * instead. The option should only be implicitly set by the proto compiler
+       * parser.
+       * </pre>
+       *
+       * <code>optional bool map_entry = 7;</code>
+       */
+      public Builder setMapEntry(boolean value) {
+        bitField0_ |= 0x00000008;
+        mapEntry_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Whether the message is an automatically generated map entry type for the
+       * maps field.
+       * For maps fields:
+       *     map&lt;KeyType, ValueType&gt; map_field = 1;
+       * The parsed descriptor looks like:
+       *     message MapFieldEntry {
+       *         option map_entry = true;
+       *         optional KeyType key = 1;
+       *         optional ValueType value = 2;
+       *     }
+       *     repeated MapFieldEntry map_field = 1;
+       * Implementations may choose not to generate the map_entry=true message, but
+       * use a native map in the target language to hold the keys and values.
+       * The reflection APIs in such implementions still need to work as
+       * if the field is a repeated message field.
+       * NOTE: Do not set the option in .proto files. Always use the maps syntax
+       * instead. The option should only be implicitly set by the proto compiler
+       * parser.
+       * </pre>
+       *
+       * <code>optional bool map_entry = 7;</code>
+       */
+      public Builder clearMapEntry() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        mapEntry_ = false;
+        onChanged();
+        return this;
+      }
+
       private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
         java.util.Collections.emptyList();
       private void ensureUninterpretedOptionIsMutable() {
-        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
-          uninterpretedOption_ = new java.util.ArrayList<>(uninterpretedOption_);
-          bitField0_ |= 0x00000008;
+        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+          uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
+          bitField0_ |= 0x00000010;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_;
 
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
         if (uninterpretedOptionBuilder_ == null) {
           return java.util.Collections.unmodifiableList(uninterpretedOption_);
@@ -18525,12 +24241,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public int getUninterpretedOptionCount() {
+       */
+      public int getUninterpretedOptionCount() {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.size();
@@ -18540,12 +24255,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.get(index);
@@ -18555,9 +24269,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -18576,9 +24290,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -18594,9 +24308,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
@@ -18614,9 +24328,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -18635,9 +24349,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -18653,9 +24367,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -18671,9 +24385,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addAllUninterpretedOption(
@@ -18690,14 +24404,14 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder clearUninterpretedOption() {
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000008);
+          bitField0_ = (bitField0_ & ~0x00000010);
           onChanged();
         } else {
@@ -18707,9 +24421,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder removeUninterpretedOption(int index) {
@@ -18724,9 +24438,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder(
@@ -18735,12 +24449,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
           int index) {
         if (uninterpretedOptionBuilder_ == null) {
@@ -18750,12 +24463,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
            getUninterpretedOptionOrBuilderList() {
         if (uninterpretedOptionBuilder_ != null) {
@@ -18766,9 +24478,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() {
@@ -18777,9 +24489,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder(
@@ -18789,21 +24501,22 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> 
            getUninterpretedOptionBuilderList() {
         return getUninterpretedOptionFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
           getUninterpretedOptionFieldBuilder() {
         if (uninterpretedOptionBuilder_ == null) {
-          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
-                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  ((bitField0_ & 0x00000010) == 0x00000010),
                   getParentForChildren(),
                   isClean());
@@ -18812,24 +24525,59 @@
         return uninterpretedOptionBuilder_;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.MessageOptions)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.MessageOptions)
+    private static final com.google.protobuf.DescriptorProtos.MessageOptions DEFAULT_INSTANCE;
     static {
-      defaultInstance = new MessageOptions(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.MessageOptions)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.MessageOptions();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.MessageOptions getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<MessageOptions>
+        PARSER = new com.google.protobuf.AbstractParser<MessageOptions>() {
+      public MessageOptions parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new MessageOptions(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<MessageOptions> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<MessageOptions> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.MessageOptions getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
   public interface FieldOptionsOrBuilder extends
       // @@protoc_insertion_point(interface_extends:google.protobuf.FieldOptions)
-      com.google.protobuf.GeneratedMessage.
+      com.google.protobuf.GeneratedMessageV3.
           ExtendableMessageOrBuilder<FieldOptions> {
 
     /**
-     * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
-     *
      * <pre>
      * The ctype option instructs the C++ code generator to use a different
@@ -18838,9 +24586,9 @@
      * release -- sorry, we'll try to include it in a future version!
      * </pre>
+     *
+     * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
      */
     boolean hasCtype();
     /**
-     * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
-     *
      * <pre>
      * The ctype option instructs the C++ code generator to use a different
@@ -18849,33 +24597,70 @@
      * release -- sorry, we'll try to include it in a future version!
      * </pre>
+     *
+     * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
      */
     com.google.protobuf.DescriptorProtos.FieldOptions.CType getCtype();
 
     /**
-     * <code>optional bool packed = 2;</code>
-     *
      * <pre>
      * The packed option can be enabled for repeated primitive fields to enable
      * a more efficient representation on the wire. Rather than repeatedly
      * writing the tag and type for each element, the entire array is encoded as
-     * a single length-delimited blob.
+     * a single length-delimited blob. In proto3, only explicit setting it to
+     * false will avoid using packed encoding.
      * </pre>
+     *
+     * <code>optional bool packed = 2;</code>
      */
     boolean hasPacked();
     /**
-     * <code>optional bool packed = 2;</code>
-     *
      * <pre>
      * The packed option can be enabled for repeated primitive fields to enable
      * a more efficient representation on the wire. Rather than repeatedly
      * writing the tag and type for each element, the entire array is encoded as
-     * a single length-delimited blob.
+     * a single length-delimited blob. In proto3, only explicit setting it to
+     * false will avoid using packed encoding.
      * </pre>
+     *
+     * <code>optional bool packed = 2;</code>
      */
     boolean getPacked();
 
     /**
-     * <code>optional bool lazy = 5 [default = false];</code>
+     * <pre>
+     * The jstype option determines the JavaScript type used for values of the
+     * field.  The option is permitted only for 64 bit integral and fixed types
+     * (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
+     * is represented as JavaScript string, which avoids loss of precision that
+     * can happen when a large value is converted to a floating point JavaScript.
+     * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+     * use the JavaScript "number" type.  The behavior of the default option
+     * JS_NORMAL is implementation dependent.
+     * This option is an enum to permit additional types to be added, e.g.
+     * goog.math.Integer.
+     * </pre>
      *
+     * <code>optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];</code>
+     */
+    boolean hasJstype();
+    /**
+     * <pre>
+     * The jstype option determines the JavaScript type used for values of the
+     * field.  The option is permitted only for 64 bit integral and fixed types
+     * (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
+     * is represented as JavaScript string, which avoids loss of precision that
+     * can happen when a large value is converted to a floating point JavaScript.
+     * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+     * use the JavaScript "number" type.  The behavior of the default option
+     * JS_NORMAL is implementation dependent.
+     * This option is an enum to permit additional types to be added, e.g.
+     * goog.math.Integer.
+     * </pre>
+     *
+     * <code>optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];</code>
+     */
+    com.google.protobuf.DescriptorProtos.FieldOptions.JSType getJstype();
+
+    /**
      * <pre>
      * Should this field be parsed lazily?  Lazy applies only to message-type
@@ -18894,5 +24679,5 @@
      * to require exclusive access.
      * Note that implementations may choose not to check required fields within
-     * a lazy sub-message.  That is, calling IsInitialized() on the outher message
+     * a lazy sub-message.  That is, calling IsInitialized() on the outer message
      * may return true even if the inner message has missing required fields.
      * This is necessary because otherwise the inner message would have to be
@@ -18904,9 +24689,9 @@
      * been parsed.
      * </pre>
+     *
+     * <code>optional bool lazy = 5 [default = false];</code>
      */
     boolean hasLazy();
     /**
-     * <code>optional bool lazy = 5 [default = false];</code>
-     *
      * <pre>
      * Should this field be parsed lazily?  Lazy applies only to message-type
@@ -18925,5 +24710,5 @@
      * to require exclusive access.
      * Note that implementations may choose not to check required fields within
-     * a lazy sub-message.  That is, calling IsInitialized() on the outher message
+     * a lazy sub-message.  That is, calling IsInitialized() on the outer message
      * may return true even if the inner message has missing required fields.
      * This is necessary because otherwise the inner message would have to be
@@ -18935,10 +24720,10 @@
      * been parsed.
      * </pre>
+     *
+     * <code>optional bool lazy = 5 [default = false];</code>
      */
     boolean getLazy();
 
     /**
-     * <code>optional bool deprecated = 3 [default = false];</code>
-     *
      * <pre>
      * Is this field deprecated?
@@ -18947,9 +24732,9 @@
      * is a formalization for deprecating fields.
      * </pre>
+     *
+     * <code>optional bool deprecated = 3 [default = false];</code>
      */
     boolean hasDeprecated();
     /**
-     * <code>optional bool deprecated = 3 [default = false];</code>
-     *
      * <pre>
      * Is this field deprecated?
@@ -18958,123 +24743,66 @@
      * is a formalization for deprecating fields.
      * </pre>
+     *
+     * <code>optional bool deprecated = 3 [default = false];</code>
      */
     boolean getDeprecated();
 
     /**
-     * <code>optional string experimental_map_key = 9;</code>
-     *
-     * <pre>
-     * EXPERIMENTAL.  DO NOT USE.
-     * For "map" fields, the name of the field in the enclosed type that
-     * is the key for this map.  For example, suppose we have:
-     *   message Item {
-     *     required string name = 1;
-     *     required string value = 2;
-     *   }
-     *   message Config {
-     *     repeated Item items = 1 [experimental_map_key="name"];
-     *   }
-     * In this situation, the map key for Item will be set to "name".
-     * TODO: Fully-implement this, then remove the "experimental_" prefix.
-     * </pre>
-     */
-    boolean hasExperimentalMapKey();
-    /**
-     * <code>optional string experimental_map_key = 9;</code>
-     *
-     * <pre>
-     * EXPERIMENTAL.  DO NOT USE.
-     * For "map" fields, the name of the field in the enclosed type that
-     * is the key for this map.  For example, suppose we have:
-     *   message Item {
-     *     required string name = 1;
-     *     required string value = 2;
-     *   }
-     *   message Config {
-     *     repeated Item items = 1 [experimental_map_key="name"];
-     *   }
-     * In this situation, the map key for Item will be set to "name".
-     * TODO: Fully-implement this, then remove the "experimental_" prefix.
-     * </pre>
-     */
-    java.lang.String getExperimentalMapKey();
-    /**
-     * <code>optional string experimental_map_key = 9;</code>
-     *
-     * <pre>
-     * EXPERIMENTAL.  DO NOT USE.
-     * For "map" fields, the name of the field in the enclosed type that
-     * is the key for this map.  For example, suppose we have:
-     *   message Item {
-     *     required string name = 1;
-     *     required string value = 2;
-     *   }
-     *   message Config {
-     *     repeated Item items = 1 [experimental_map_key="name"];
-     *   }
-     * In this situation, the map key for Item will be set to "name".
-     * TODO: Fully-implement this, then remove the "experimental_" prefix.
-     * </pre>
-     */
-    com.google.protobuf.ByteString
-        getExperimentalMapKeyBytes();
-
-    /**
-     * <code>optional bool weak = 10 [default = false];</code>
-     *
      * <pre>
      * For Google-internal migration only. Do not use.
      * </pre>
+     *
+     * <code>optional bool weak = 10 [default = false];</code>
      */
     boolean hasWeak();
     /**
-     * <code>optional bool weak = 10 [default = false];</code>
-     *
      * <pre>
      * For Google-internal migration only. Do not use.
      * </pre>
+     *
+     * <code>optional bool weak = 10 [default = false];</code>
      */
     boolean getWeak();
 
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> 
         getUninterpretedOptionList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     int getUninterpretedOptionCount();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
@@ -19084,30 +24812,27 @@
    * Protobuf type {@code google.protobuf.FieldOptions}
    */
-  public static final class FieldOptions extends
-      com.google.protobuf.GeneratedMessage.ExtendableMessage<
+  public  static final class FieldOptions extends
+      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
         FieldOptions> implements
       // @@protoc_insertion_point(message_implements:google.protobuf.FieldOptions)
       FieldOptionsOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use FieldOptions.newBuilder() to construct.
-    private FieldOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder<com.google.protobuf.DescriptorProtos.FieldOptions, ?> builder) {
+    private FieldOptions(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<com.google.protobuf.DescriptorProtos.FieldOptions, ?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private FieldOptions(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final FieldOptions defaultInstance;
-    public static FieldOptions getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public FieldOptions getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private FieldOptions() {
+      ctype_ = 0;
+      packed_ = false;
+      jstype_ = 0;
+      lazy_ = false;
+      deprecated_ = false;
+      weak_ = false;
+      uninterpretedOption_ = java.util.Collections.emptyList();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -19116,5 +24841,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -19129,6 +24854,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -19142,5 +24867,5 @@
               } else {
                 bitField0_ |= 0x00000001;
-                ctype_ = value;
+                ctype_ = rawValue;
               }
               break;
@@ -19152,17 +24877,22 @@
             }
             case 24: {
-              bitField0_ |= 0x00000008;
+              bitField0_ |= 0x00000010;
               deprecated_ = input.readBool();
               break;
             }
             case 40: {
-              bitField0_ |= 0x00000004;
+              bitField0_ |= 0x00000008;
               lazy_ = input.readBool();
               break;
             }
-            case 74: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000010;
-              experimentalMapKey_ = bs;
+            case 48: {
+              int rawValue = input.readEnum();
+              com.google.protobuf.DescriptorProtos.FieldOptions.JSType value = com.google.protobuf.DescriptorProtos.FieldOptions.JSType.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(6, rawValue);
+              } else {
+                bitField0_ |= 0x00000004;
+                jstype_ = rawValue;
+              }
               break;
             }
@@ -19174,8 +24904,9 @@
             case 7994: {
               if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
-                uninterpretedOption_ = new java.util.ArrayList<>();
+                uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
                 mutable_bitField0_ |= 0x00000040;
               }
-              uninterpretedOption_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
+              uninterpretedOption_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
               break;
             }
@@ -19186,5 +24917,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
@@ -19200,6 +24931,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldOptions_fieldAccessorTable
@@ -19208,20 +24938,4 @@
     }
 
-    public static com.google.protobuf.Parser<FieldOptions> PARSER =
-        new com.google.protobuf.AbstractParser<FieldOptions>() {
-      @Override
-	public FieldOptions parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new FieldOptions(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<FieldOptions> getParserForType() {
-      return PARSER;
-    }
-
     /**
      * Protobuf enum {@code google.protobuf.FieldOptions.CType}
@@ -19230,43 +24944,52 @@
         implements com.google.protobuf.ProtocolMessageEnum {
       /**
+       * <pre>
+       * Default mode.
+       * </pre>
+       *
        * <code>STRING = 0;</code>
-       *
+       */
+      STRING(0),
+      /**
+       * <code>CORD = 1;</code>
+       */
+      CORD(1),
+      /**
+       * <code>STRING_PIECE = 2;</code>
+       */
+      STRING_PIECE(2),
+      ;
+
+      /**
        * <pre>
        * Default mode.
        * </pre>
-       */
-      STRING(0, 0),
+       *
+       * <code>STRING = 0;</code>
+       */
+      public static final int STRING_VALUE = 0;
       /**
        * <code>CORD = 1;</code>
        */
-      CORD(1, 1),
+      public static final int CORD_VALUE = 1;
       /**
        * <code>STRING_PIECE = 2;</code>
        */
-      STRING_PIECE(2, 2),
-      ;
-
-      /**
-       * <code>STRING = 0;</code>
-       *
-       * <pre>
-       * Default mode.
-       * </pre>
-       */
-      public static final int STRING_VALUE = 0;
-      /**
-       * <code>CORD = 1;</code>
-       */
-      public static final int CORD_VALUE = 1;
-      /**
-       * <code>STRING_PIECE = 2;</code>
-       */
       public static final int STRING_PIECE_VALUE = 2;
 
 
-      @Override
-	public final int getNumber() { return value; }
-
+      public final int getNumber() {
+        return value;
+      }
+
+      /**
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
       public static CType valueOf(int value) {
+        return forNumber(value);
+      }
+
+      public static CType forNumber(int value) {
         switch (value) {
           case 0: return STRING;
@@ -19281,20 +25004,17 @@
         return internalValueMap;
       }
-      private static com.google.protobuf.Internal.EnumLiteMap<CType>
-          internalValueMap =
+      private static final com.google.protobuf.Internal.EnumLiteMap<
+          CType> internalValueMap =
             new com.google.protobuf.Internal.EnumLiteMap<CType>() {
-              @Override
-			public CType findValueByNumber(int number) {
-                return CType.valueOf(number);
+              public CType findValueByNumber(int number) {
+                return CType.forNumber(number);
               }
             };
 
-      @Override
-	public final com.google.protobuf.Descriptors.EnumValueDescriptor
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
           getValueDescriptor() {
-        return getDescriptor().getValues().get(index);
-      }
-      @Override
-	public final com.google.protobuf.Descriptors.EnumDescriptor
+        return getDescriptor().getValues().get(ordinal());
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
           getDescriptorForType() {
         return getDescriptor();
@@ -19316,21 +25036,140 @@
       }
 
-      private final int index;
       private final int value;
 
-      private CType(int index, int value) {
-        this.index = index;
+      private CType(int value) {
         this.value = value;
       }
 
       // @@protoc_insertion_point(enum_scope:google.protobuf.FieldOptions.CType)
+    }
+
+    /**
+     * Protobuf enum {@code google.protobuf.FieldOptions.JSType}
+     */
+    public enum JSType
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <pre>
+       * Use the default type.
+       * </pre>
+       *
+       * <code>JS_NORMAL = 0;</code>
+       */
+      JS_NORMAL(0),
+      /**
+       * <pre>
+       * Use JavaScript strings.
+       * </pre>
+       *
+       * <code>JS_STRING = 1;</code>
+       */
+      JS_STRING(1),
+      /**
+       * <pre>
+       * Use JavaScript numbers.
+       * </pre>
+       *
+       * <code>JS_NUMBER = 2;</code>
+       */
+      JS_NUMBER(2),
+      ;
+
+      /**
+       * <pre>
+       * Use the default type.
+       * </pre>
+       *
+       * <code>JS_NORMAL = 0;</code>
+       */
+      public static final int JS_NORMAL_VALUE = 0;
+      /**
+       * <pre>
+       * Use JavaScript strings.
+       * </pre>
+       *
+       * <code>JS_STRING = 1;</code>
+       */
+      public static final int JS_STRING_VALUE = 1;
+      /**
+       * <pre>
+       * Use JavaScript numbers.
+       * </pre>
+       *
+       * <code>JS_NUMBER = 2;</code>
+       */
+      public static final int JS_NUMBER_VALUE = 2;
+
+
+      public final int getNumber() {
+        return value;
+      }
+
+      /**
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
+      public static JSType valueOf(int value) {
+        return forNumber(value);
+      }
+
+      public static JSType forNumber(int value) {
+        switch (value) {
+          case 0: return JS_NORMAL;
+          case 1: return JS_STRING;
+          case 2: return JS_NUMBER;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<JSType>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static final com.google.protobuf.Internal.EnumLiteMap<
+          JSType> internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<JSType>() {
+              public JSType findValueByNumber(int number) {
+                return JSType.forNumber(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(ordinal());
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return com.google.protobuf.DescriptorProtos.FieldOptions.getDescriptor().getEnumTypes().get(1);
+      }
+
+      private static final JSType[] VALUES = values();
+
+      public static JSType valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int value;
+
+      private JSType(int value) {
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:google.protobuf.FieldOptions.JSType)
     }
 
     private int bitField0_;
     public static final int CTYPE_FIELD_NUMBER = 1;
-    private com.google.protobuf.DescriptorProtos.FieldOptions.CType ctype_;
-    /**
-     * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
-     *
+    private int ctype_;
+    /**
      * <pre>
      * The ctype option instructs the C++ code generator to use a different
@@ -19339,12 +25178,11 @@
      * release -- sorry, we'll try to include it in a future version!
      * </pre>
-     */
-    @Override
-	public boolean hasCtype() {
+     *
+     * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
+     */
+    public boolean hasCtype() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
     /**
-     * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
-     *
      * <pre>
      * The ctype option instructs the C++ code generator to use a different
@@ -19353,8 +25191,10 @@
      * release -- sorry, we'll try to include it in a future version!
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.FieldOptions.CType getCtype() {
-      return ctype_;
+     *
+     * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
+     */
+    public com.google.protobuf.DescriptorProtos.FieldOptions.CType getCtype() {
+      com.google.protobuf.DescriptorProtos.FieldOptions.CType result = com.google.protobuf.DescriptorProtos.FieldOptions.CType.valueOf(ctype_);
+      return result == null ? com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING : result;
     }
 
@@ -19362,30 +25202,72 @@
     private boolean packed_;
     /**
-     * <code>optional bool packed = 2;</code>
-     *
      * <pre>
      * The packed option can be enabled for repeated primitive fields to enable
      * a more efficient representation on the wire. Rather than repeatedly
      * writing the tag and type for each element, the entire array is encoded as
-     * a single length-delimited blob.
+     * a single length-delimited blob. In proto3, only explicit setting it to
+     * false will avoid using packed encoding.
      * </pre>
-     */
-    @Override
-	public boolean hasPacked() {
+     *
+     * <code>optional bool packed = 2;</code>
+     */
+    public boolean hasPacked() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
     /**
-     * <code>optional bool packed = 2;</code>
-     *
      * <pre>
      * The packed option can be enabled for repeated primitive fields to enable
      * a more efficient representation on the wire. Rather than repeatedly
      * writing the tag and type for each element, the entire array is encoded as
-     * a single length-delimited blob.
+     * a single length-delimited blob. In proto3, only explicit setting it to
+     * false will avoid using packed encoding.
      * </pre>
-     */
-    @Override
-	public boolean getPacked() {
+     *
+     * <code>optional bool packed = 2;</code>
+     */
+    public boolean getPacked() {
       return packed_;
+    }
+
+    public static final int JSTYPE_FIELD_NUMBER = 6;
+    private int jstype_;
+    /**
+     * <pre>
+     * The jstype option determines the JavaScript type used for values of the
+     * field.  The option is permitted only for 64 bit integral and fixed types
+     * (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
+     * is represented as JavaScript string, which avoids loss of precision that
+     * can happen when a large value is converted to a floating point JavaScript.
+     * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+     * use the JavaScript "number" type.  The behavior of the default option
+     * JS_NORMAL is implementation dependent.
+     * This option is an enum to permit additional types to be added, e.g.
+     * goog.math.Integer.
+     * </pre>
+     *
+     * <code>optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];</code>
+     */
+    public boolean hasJstype() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <pre>
+     * The jstype option determines the JavaScript type used for values of the
+     * field.  The option is permitted only for 64 bit integral and fixed types
+     * (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
+     * is represented as JavaScript string, which avoids loss of precision that
+     * can happen when a large value is converted to a floating point JavaScript.
+     * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+     * use the JavaScript "number" type.  The behavior of the default option
+     * JS_NORMAL is implementation dependent.
+     * This option is an enum to permit additional types to be added, e.g.
+     * goog.math.Integer.
+     * </pre>
+     *
+     * <code>optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];</code>
+     */
+    public com.google.protobuf.DescriptorProtos.FieldOptions.JSType getJstype() {
+      com.google.protobuf.DescriptorProtos.FieldOptions.JSType result = com.google.protobuf.DescriptorProtos.FieldOptions.JSType.valueOf(jstype_);
+      return result == null ? com.google.protobuf.DescriptorProtos.FieldOptions.JSType.JS_NORMAL : result;
     }
 
@@ -19393,6 +25275,4 @@
     private boolean lazy_;
     /**
-     * <code>optional bool lazy = 5 [default = false];</code>
-     *
      * <pre>
      * Should this field be parsed lazily?  Lazy applies only to message-type
@@ -19411,5 +25291,5 @@
      * to require exclusive access.
      * Note that implementations may choose not to check required fields within
-     * a lazy sub-message.  That is, calling IsInitialized() on the outher message
+     * a lazy sub-message.  That is, calling IsInitialized() on the outer message
      * may return true even if the inner message has missing required fields.
      * This is necessary because otherwise the inner message would have to be
@@ -19421,12 +25301,11 @@
      * been parsed.
      * </pre>
-     */
-    @Override
-	public boolean hasLazy() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
+     *
      * <code>optional bool lazy = 5 [default = false];</code>
-     *
+     */
+    public boolean hasLazy() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
      * <pre>
      * Should this field be parsed lazily?  Lazy applies only to message-type
@@ -19445,5 +25324,5 @@
      * to require exclusive access.
      * Note that implementations may choose not to check required fields within
-     * a lazy sub-message.  That is, calling IsInitialized() on the outher message
+     * a lazy sub-message.  That is, calling IsInitialized() on the outer message
      * may return true even if the inner message has missing required fields.
      * This is necessary because otherwise the inner message would have to be
@@ -19455,7 +25334,8 @@
      * been parsed.
      * </pre>
-     */
-    @Override
-	public boolean getLazy() {
+     *
+     * <code>optional bool lazy = 5 [default = false];</code>
+     */
+    public boolean getLazy() {
       return lazy_;
     }
@@ -19464,6 +25344,4 @@
     private boolean deprecated_;
     /**
-     * <code>optional bool deprecated = 3 [default = false];</code>
-     *
      * <pre>
      * Is this field deprecated?
@@ -19472,12 +25350,11 @@
      * is a formalization for deprecating fields.
      * </pre>
-     */
-    @Override
-	public boolean hasDeprecated() {
-      return ((bitField0_ & 0x00000008) == 0x00000008);
-    }
-    /**
+     *
      * <code>optional bool deprecated = 3 [default = false];</code>
-     *
+     */
+    public boolean hasDeprecated() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
      * <pre>
      * Is this field deprecated?
@@ -19486,98 +25363,9 @@
      * is a formalization for deprecating fields.
      * </pre>
-     */
-    @Override
-	public boolean getDeprecated() {
+     *
+     * <code>optional bool deprecated = 3 [default = false];</code>
+     */
+    public boolean getDeprecated() {
       return deprecated_;
-    }
-
-    public static final int EXPERIMENTAL_MAP_KEY_FIELD_NUMBER = 9;
-    private java.lang.Object experimentalMapKey_;
-    /**
-     * <code>optional string experimental_map_key = 9;</code>
-     *
-     * <pre>
-     * EXPERIMENTAL.  DO NOT USE.
-     * For "map" fields, the name of the field in the enclosed type that
-     * is the key for this map.  For example, suppose we have:
-     *   message Item {
-     *     required string name = 1;
-     *     required string value = 2;
-     *   }
-     *   message Config {
-     *     repeated Item items = 1 [experimental_map_key="name"];
-     *   }
-     * In this situation, the map key for Item will be set to "name".
-     * TODO: Fully-implement this, then remove the "experimental_" prefix.
-     * </pre>
-     */
-    @Override
-	public boolean hasExperimentalMapKey() {
-      return ((bitField0_ & 0x00000010) == 0x00000010);
-    }
-    /**
-     * <code>optional string experimental_map_key = 9;</code>
-     *
-     * <pre>
-     * EXPERIMENTAL.  DO NOT USE.
-     * For "map" fields, the name of the field in the enclosed type that
-     * is the key for this map.  For example, suppose we have:
-     *   message Item {
-     *     required string name = 1;
-     *     required string value = 2;
-     *   }
-     *   message Config {
-     *     repeated Item items = 1 [experimental_map_key="name"];
-     *   }
-     * In this situation, the map key for Item will be set to "name".
-     * TODO: Fully-implement this, then remove the "experimental_" prefix.
-     * </pre>
-     */
-    @Override
-	public java.lang.String getExperimentalMapKey() {
-      java.lang.Object ref = experimentalMapKey_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          experimentalMapKey_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string experimental_map_key = 9;</code>
-     *
-     * <pre>
-     * EXPERIMENTAL.  DO NOT USE.
-     * For "map" fields, the name of the field in the enclosed type that
-     * is the key for this map.  For example, suppose we have:
-     *   message Item {
-     *     required string name = 1;
-     *     required string value = 2;
-     *   }
-     *   message Config {
-     *     repeated Item items = 1 [experimental_map_key="name"];
-     *   }
-     * In this situation, the map key for Item will be set to "name".
-     * TODO: Fully-implement this, then remove the "experimental_" prefix.
-     * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
-        getExperimentalMapKeyBytes() {
-      java.lang.Object ref = experimentalMapKey_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        experimentalMapKey_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
     }
 
@@ -19585,23 +25373,21 @@
     private boolean weak_;
     /**
-     * <code>optional bool weak = 10 [default = false];</code>
-     *
      * <pre>
      * For Google-internal migration only. Do not use.
      * </pre>
-     */
-    @Override
-	public boolean hasWeak() {
+     *
+     * <code>optional bool weak = 10 [default = false];</code>
+     */
+    public boolean hasWeak() {
       return ((bitField0_ & 0x00000020) == 0x00000020);
     }
     /**
-     * <code>optional bool weak = 10 [default = false];</code>
-     *
      * <pre>
      * For Google-internal migration only. Do not use.
      * </pre>
-     */
-    @Override
-	public boolean getWeak() {
+     *
+     * <code>optional bool weak = 10 [default = false];</code>
+     */
+    public boolean getWeak() {
       return weak_;
     }
@@ -19610,73 +25396,58 @@
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public int getUninterpretedOptionCount() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public int getUninterpretedOptionCount() {
       return uninterpretedOption_.size();
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
       return uninterpretedOption_.get(index);
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
         int index) {
       return uninterpretedOption_.get(index);
     }
 
-    private void initFields() {
-      ctype_ = com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING;
-      packed_ = false;
-      lazy_ = false;
-      deprecated_ = false;
-      experimentalMapKey_ = "";
-      weak_ = false;
-      uninterpretedOption_ = java.util.Collections.emptyList();
-    }
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -19697,25 +25468,23 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
-      com.google.protobuf.GeneratedMessage
-        .ExtendableMessage<com.google.protobuf.DescriptorProtos.FieldOptions>.ExtensionWriter extensionWriter =
-          newExtensionWriter();
+      com.google.protobuf.GeneratedMessageV3
+        .ExtendableMessage<com.google.protobuf.DescriptorProtos.FieldOptions>.ExtensionWriter
+          extensionWriter = newExtensionWriter();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeEnum(1, ctype_.getNumber());
+        output.writeEnum(1, ctype_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
         output.writeBool(2, packed_);
       }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBool(3, deprecated_);
+      }
       if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        output.writeBool(3, deprecated_);
+        output.writeBool(5, lazy_);
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeBool(5, lazy_);
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        output.writeBytes(9, getExperimentalMapKeyBytes());
+        output.writeEnum(6, jstype_);
       }
       if (((bitField0_ & 0x00000020) == 0x00000020)) {
@@ -19726,11 +25495,9 @@
       }
       extensionWriter.writeUntil(536870912, output);
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
@@ -19738,5 +25505,5 @@
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(1, ctype_.getNumber());
+          .computeEnumSize(1, ctype_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
@@ -19744,15 +25511,15 @@
           .computeBoolSize(2, packed_);
       }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(3, deprecated_);
+      }
       if (((bitField0_ & 0x00000008) == 0x00000008)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(3, deprecated_);
+          .computeBoolSize(5, lazy_);
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(5, lazy_);
-      }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(9, getExperimentalMapKeyBytes());
+          .computeEnumSize(6, jstype_);
       }
       if (((bitField0_ & 0x00000020) == 0x00000020)) {
@@ -19765,16 +25532,112 @@
       }
       size += extensionsSerializedSize();
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.FieldOptions)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.FieldOptions other = (com.google.protobuf.DescriptorProtos.FieldOptions) obj;
+
+      boolean result = true;
+      result = result && (hasCtype() == other.hasCtype());
+      if (hasCtype()) {
+        result = result && ctype_ == other.ctype_;
+      }
+      result = result && (hasPacked() == other.hasPacked());
+      if (hasPacked()) {
+        result = result && (getPacked()
+            == other.getPacked());
+      }
+      result = result && (hasJstype() == other.hasJstype());
+      if (hasJstype()) {
+        result = result && jstype_ == other.jstype_;
+      }
+      result = result && (hasLazy() == other.hasLazy());
+      if (hasLazy()) {
+        result = result && (getLazy()
+            == other.getLazy());
+      }
+      result = result && (hasDeprecated() == other.hasDeprecated());
+      if (hasDeprecated()) {
+        result = result && (getDeprecated()
+            == other.getDeprecated());
+      }
+      result = result && (hasWeak() == other.hasWeak());
+      if (hasWeak()) {
+        result = result && (getWeak()
+            == other.getWeak());
+      }
+      result = result && getUninterpretedOptionList()
+          .equals(other.getUninterpretedOptionList());
+      result = result && unknownFields.equals(other.unknownFields);
+      result = result &&
+          getExtensionFields().equals(other.getExtensionFields());
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasCtype()) {
+        hash = (37 * hash) + CTYPE_FIELD_NUMBER;
+        hash = (53 * hash) + ctype_;
+      }
+      if (hasPacked()) {
+        hash = (37 * hash) + PACKED_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getPacked());
+      }
+      if (hasJstype()) {
+        hash = (37 * hash) + JSTYPE_FIELD_NUMBER;
+        hash = (53 * hash) + jstype_;
+      }
+      if (hasLazy()) {
+        hash = (37 * hash) + LAZY_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getLazy());
+      }
+      if (hasDeprecated()) {
+        hash = (37 * hash) + DEPRECATED_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getDeprecated());
+      }
+      if (hasWeak()) {
+        hash = (37 * hash) + WEAK_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getWeak());
+      }
+      if (getUninterpretedOptionCount() > 0) {
+        hash = (37 * hash) + UNINTERPRETED_OPTION_FIELD_NUMBER;
+        hash = (53 * hash) + getUninterpretedOptionList().hashCode();
+      }
+      hash = hashFields(hash, getExtensionFields());
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(
         com.google.protobuf.ByteString data)
@@ -19800,5 +25663,6 @@
     public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(
@@ -19806,9 +25670,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.FieldOptions parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FieldOptions parseDelimitedFrom(
@@ -19816,10 +25682,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(
@@ -19827,19 +25695,23 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FieldOptions prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
@@ -19849,5 +25721,5 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
+        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
           com.google.protobuf.DescriptorProtos.FieldOptions, Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.FieldOptions)
@@ -19858,6 +25730,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldOptions_fieldAccessorTable
@@ -19872,29 +25743,25 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getUninterpretedOptionFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
-        ctype_ = com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING;
+        ctype_ = 0;
         bitField0_ = (bitField0_ & ~0x00000001);
         packed_ = false;
         bitField0_ = (bitField0_ & ~0x00000002);
+        jstype_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
         lazy_ = false;
-        bitField0_ = (bitField0_ & ~0x00000004);
+        bitField0_ = (bitField0_ & ~0x00000008);
         deprecated_ = false;
-        bitField0_ = (bitField0_ & ~0x00000008);
-        experimentalMapKey_ = "";
         bitField0_ = (bitField0_ & ~0x00000010);
         weak_ = false;
@@ -19909,22 +25776,14 @@
       }
 
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldOptions_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldOptions getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.FieldOptions getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldOptions build() {
+      public com.google.protobuf.DescriptorProtos.FieldOptions build() {
         com.google.protobuf.DescriptorProtos.FieldOptions result = buildPartial();
         if (!result.isInitialized()) {
@@ -19934,6 +25793,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldOptions buildPartial() {
+      public com.google.protobuf.DescriptorProtos.FieldOptions buildPartial() {
         com.google.protobuf.DescriptorProtos.FieldOptions result = new com.google.protobuf.DescriptorProtos.FieldOptions(this);
         int from_bitField0_ = bitField0_;
@@ -19950,13 +25808,13 @@
           to_bitField0_ |= 0x00000004;
         }
-        result.lazy_ = lazy_;
+        result.jstype_ = jstype_;
         if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
           to_bitField0_ |= 0x00000008;
         }
-        result.deprecated_ = deprecated_;
+        result.lazy_ = lazy_;
         if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
           to_bitField0_ |= 0x00000010;
         }
-        result.experimentalMapKey_ = experimentalMapKey_;
+        result.deprecated_ = deprecated_;
         if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
           to_bitField0_ |= 0x00000020;
@@ -19977,6 +25835,54 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.FieldOptions, Type> extension,
+          Type value) {
+        return (Builder) super.setExtension(extension, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.FieldOptions, java.util.List<Type>> extension,
+          int index, Type value) {
+        return (Builder) super.setExtension(extension, index, value);
+      }
+      public <Type> Builder addExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.FieldOptions, java.util.List<Type>> extension,
+          Type value) {
+        return (Builder) super.addExtension(extension, value);
+      }
+      public <Type> Builder clearExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.FieldOptions, ?> extension) {
+        return (Builder) super.clearExtension(extension);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.FieldOptions) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.FieldOptions)other);
@@ -19995,4 +25901,7 @@
           setPacked(other.getPacked());
         }
+        if (other.hasJstype()) {
+          setJstype(other.getJstype());
+        }
         if (other.hasLazy()) {
           setLazy(other.getLazy());
@@ -20000,9 +25909,4 @@
         if (other.hasDeprecated()) {
           setDeprecated(other.getDeprecated());
-        }
-        if (other.hasExperimentalMapKey()) {
-          bitField0_ |= 0x00000010;
-          experimentalMapKey_ = other.experimentalMapKey_;
-          onChanged();
         }
         if (other.hasWeak()) {
@@ -20027,6 +25931,6 @@
               uninterpretedOption_ = other.uninterpretedOption_;
               bitField0_ = (bitField0_ & ~0x00000040);
-              uninterpretedOptionBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              uninterpretedOptionBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getUninterpretedOptionFieldBuilder() : null;
             } else {
@@ -20036,18 +25940,16 @@
         }
         this.mergeExtensionFields(other);
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         for (int i = 0; i < getUninterpretedOptionCount(); i++) {
           if (!getUninterpretedOption(i).isInitialized()) {
-
             return false;
           }
         }
         if (!extensionsAreInitialized()) {
-
           return false;
         }
@@ -20055,6 +25957,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -20065,5 +25966,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.FieldOptions) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -20075,8 +25976,6 @@
       private int bitField0_;
 
-      private com.google.protobuf.DescriptorProtos.FieldOptions.CType ctype_ = com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING;
-      /**
-       * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
-       *
+      private int ctype_ = 0;
+      /**
        * <pre>
        * The ctype option instructs the C++ code generator to use a different
@@ -20085,12 +25984,11 @@
        * release -- sorry, we'll try to include it in a future version!
        * </pre>
-       */
-      @Override
-	public boolean hasCtype() {
+       *
+       * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
+       */
+      public boolean hasCtype() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
       /**
-       * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
-       *
        * <pre>
        * The ctype option instructs the C++ code generator to use a different
@@ -20099,12 +25997,12 @@
        * release -- sorry, we'll try to include it in a future version!
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.FieldOptions.CType getCtype() {
-        return ctype_;
-      }
-      /**
+       *
        * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
-       *
+       */
+      public com.google.protobuf.DescriptorProtos.FieldOptions.CType getCtype() {
+        com.google.protobuf.DescriptorProtos.FieldOptions.CType result = com.google.protobuf.DescriptorProtos.FieldOptions.CType.valueOf(ctype_);
+        return result == null ? com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING : result;
+      }
+      /**
        * <pre>
        * The ctype option instructs the C++ code generator to use a different
@@ -20113,4 +26011,6 @@
        * release -- sorry, we'll try to include it in a future version!
        * </pre>
+       *
+       * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
        */
       public Builder setCtype(com.google.protobuf.DescriptorProtos.FieldOptions.CType value) {
@@ -20119,11 +26019,9 @@
         }
         bitField0_ |= 0x00000001;
-        ctype_ = value;
+        ctype_ = value.getNumber();
         onChanged();
         return this;
       }
       /**
-       * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
-       *
        * <pre>
        * The ctype option instructs the C++ code generator to use a different
@@ -20132,8 +26030,10 @@
        * release -- sorry, we'll try to include it in a future version!
        * </pre>
+       *
+       * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
        */
       public Builder clearCtype() {
         bitField0_ = (bitField0_ & ~0x00000001);
-        ctype_ = com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING;
+        ctype_ = 0;
         onChanged();
         return this;
@@ -20142,40 +26042,41 @@
       private boolean packed_ ;
       /**
-       * <code>optional bool packed = 2;</code>
-       *
        * <pre>
        * The packed option can be enabled for repeated primitive fields to enable
        * a more efficient representation on the wire. Rather than repeatedly
        * writing the tag and type for each element, the entire array is encoded as
-       * a single length-delimited blob.
-       * </pre>
-       */
-      @Override
-	public boolean hasPacked() {
+       * a single length-delimited blob. In proto3, only explicit setting it to
+       * false will avoid using packed encoding.
+       * </pre>
+       *
+       * <code>optional bool packed = 2;</code>
+       */
+      public boolean hasPacked() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
       /**
-       * <code>optional bool packed = 2;</code>
-       *
        * <pre>
        * The packed option can be enabled for repeated primitive fields to enable
        * a more efficient representation on the wire. Rather than repeatedly
        * writing the tag and type for each element, the entire array is encoded as
-       * a single length-delimited blob.
-       * </pre>
-       */
-      @Override
-	public boolean getPacked() {
+       * a single length-delimited blob. In proto3, only explicit setting it to
+       * false will avoid using packed encoding.
+       * </pre>
+       *
+       * <code>optional bool packed = 2;</code>
+       */
+      public boolean getPacked() {
         return packed_;
       }
       /**
-       * <code>optional bool packed = 2;</code>
-       *
        * <pre>
        * The packed option can be enabled for repeated primitive fields to enable
        * a more efficient representation on the wire. Rather than repeatedly
        * writing the tag and type for each element, the entire array is encoded as
-       * a single length-delimited blob.
-       * </pre>
+       * a single length-delimited blob. In proto3, only explicit setting it to
+       * false will avoid using packed encoding.
+       * </pre>
+       *
+       * <code>optional bool packed = 2;</code>
        */
       public Builder setPacked(boolean value) {
@@ -20186,12 +26087,13 @@
       }
       /**
-       * <code>optional bool packed = 2;</code>
-       *
        * <pre>
        * The packed option can be enabled for repeated primitive fields to enable
        * a more efficient representation on the wire. Rather than repeatedly
        * writing the tag and type for each element, the entire array is encoded as
-       * a single length-delimited blob.
-       * </pre>
+       * a single length-delimited blob. In proto3, only explicit setting it to
+       * false will avoid using packed encoding.
+       * </pre>
+       *
+       * <code>optional bool packed = 2;</code>
        */
       public Builder clearPacked() {
@@ -20202,8 +26104,94 @@
       }
 
+      private int jstype_ = 0;
+      /**
+       * <pre>
+       * The jstype option determines the JavaScript type used for values of the
+       * field.  The option is permitted only for 64 bit integral and fixed types
+       * (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
+       * is represented as JavaScript string, which avoids loss of precision that
+       * can happen when a large value is converted to a floating point JavaScript.
+       * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+       * use the JavaScript "number" type.  The behavior of the default option
+       * JS_NORMAL is implementation dependent.
+       * This option is an enum to permit additional types to be added, e.g.
+       * goog.math.Integer.
+       * </pre>
+       *
+       * <code>optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];</code>
+       */
+      public boolean hasJstype() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <pre>
+       * The jstype option determines the JavaScript type used for values of the
+       * field.  The option is permitted only for 64 bit integral and fixed types
+       * (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
+       * is represented as JavaScript string, which avoids loss of precision that
+       * can happen when a large value is converted to a floating point JavaScript.
+       * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+       * use the JavaScript "number" type.  The behavior of the default option
+       * JS_NORMAL is implementation dependent.
+       * This option is an enum to permit additional types to be added, e.g.
+       * goog.math.Integer.
+       * </pre>
+       *
+       * <code>optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];</code>
+       */
+      public com.google.protobuf.DescriptorProtos.FieldOptions.JSType getJstype() {
+        com.google.protobuf.DescriptorProtos.FieldOptions.JSType result = com.google.protobuf.DescriptorProtos.FieldOptions.JSType.valueOf(jstype_);
+        return result == null ? com.google.protobuf.DescriptorProtos.FieldOptions.JSType.JS_NORMAL : result;
+      }
+      /**
+       * <pre>
+       * The jstype option determines the JavaScript type used for values of the
+       * field.  The option is permitted only for 64 bit integral and fixed types
+       * (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
+       * is represented as JavaScript string, which avoids loss of precision that
+       * can happen when a large value is converted to a floating point JavaScript.
+       * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+       * use the JavaScript "number" type.  The behavior of the default option
+       * JS_NORMAL is implementation dependent.
+       * This option is an enum to permit additional types to be added, e.g.
+       * goog.math.Integer.
+       * </pre>
+       *
+       * <code>optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];</code>
+       */
+      public Builder setJstype(com.google.protobuf.DescriptorProtos.FieldOptions.JSType value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000004;
+        jstype_ = value.getNumber();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * The jstype option determines the JavaScript type used for values of the
+       * field.  The option is permitted only for 64 bit integral and fixed types
+       * (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
+       * is represented as JavaScript string, which avoids loss of precision that
+       * can happen when a large value is converted to a floating point JavaScript.
+       * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+       * use the JavaScript "number" type.  The behavior of the default option
+       * JS_NORMAL is implementation dependent.
+       * This option is an enum to permit additional types to be added, e.g.
+       * goog.math.Integer.
+       * </pre>
+       *
+       * <code>optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];</code>
+       */
+      public Builder clearJstype() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        jstype_ = 0;
+        onChanged();
+        return this;
+      }
+
       private boolean lazy_ ;
       /**
-       * <code>optional bool lazy = 5 [default = false];</code>
-       *
        * <pre>
        * Should this field be parsed lazily?  Lazy applies only to message-type
@@ -20222,5 +26210,5 @@
        * to require exclusive access.
        * Note that implementations may choose not to check required fields within
-       * a lazy sub-message.  That is, calling IsInitialized() on the outher message
+       * a lazy sub-message.  That is, calling IsInitialized() on the outer message
        * may return true even if the inner message has missing required fields.
        * This is necessary because otherwise the inner message would have to be
@@ -20232,12 +26220,11 @@
        * been parsed.
        * </pre>
-       */
-      @Override
-	public boolean hasLazy() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
+       *
        * <code>optional bool lazy = 5 [default = false];</code>
-       *
+       */
+      public boolean hasLazy() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
        * <pre>
        * Should this field be parsed lazily?  Lazy applies only to message-type
@@ -20256,5 +26243,5 @@
        * to require exclusive access.
        * Note that implementations may choose not to check required fields within
-       * a lazy sub-message.  That is, calling IsInitialized() on the outher message
+       * a lazy sub-message.  That is, calling IsInitialized() on the outer message
        * may return true even if the inner message has missing required fields.
        * This is necessary because otherwise the inner message would have to be
@@ -20266,12 +26253,11 @@
        * been parsed.
        * </pre>
-       */
-      @Override
-	public boolean getLazy() {
+       *
+       * <code>optional bool lazy = 5 [default = false];</code>
+       */
+      public boolean getLazy() {
         return lazy_;
       }
       /**
-       * <code>optional bool lazy = 5 [default = false];</code>
-       *
        * <pre>
        * Should this field be parsed lazily?  Lazy applies only to message-type
@@ -20290,5 +26276,5 @@
        * to require exclusive access.
        * Note that implementations may choose not to check required fields within
-       * a lazy sub-message.  That is, calling IsInitialized() on the outher message
+       * a lazy sub-message.  That is, calling IsInitialized() on the outer message
        * may return true even if the inner message has missing required fields.
        * This is necessary because otherwise the inner message would have to be
@@ -20300,7 +26286,9 @@
        * been parsed.
        * </pre>
+       *
+       * <code>optional bool lazy = 5 [default = false];</code>
        */
       public Builder setLazy(boolean value) {
-        bitField0_ |= 0x00000004;
+        bitField0_ |= 0x00000008;
         lazy_ = value;
         onChanged();
@@ -20308,6 +26296,4 @@
       }
       /**
-       * <code>optional bool lazy = 5 [default = false];</code>
-       *
        * <pre>
        * Should this field be parsed lazily?  Lazy applies only to message-type
@@ -20326,5 +26312,5 @@
        * to require exclusive access.
        * Note that implementations may choose not to check required fields within
-       * a lazy sub-message.  That is, calling IsInitialized() on the outher message
+       * a lazy sub-message.  That is, calling IsInitialized() on the outer message
        * may return true even if the inner message has missing required fields.
        * This is necessary because otherwise the inner message would have to be
@@ -20336,7 +26322,9 @@
        * been parsed.
        * </pre>
+       *
+       * <code>optional bool lazy = 5 [default = false];</code>
        */
       public Builder clearLazy() {
-        bitField0_ = (bitField0_ & ~0x00000004);
+        bitField0_ = (bitField0_ & ~0x00000008);
         lazy_ = false;
         onChanged();
@@ -20346,6 +26334,4 @@
       private boolean deprecated_ ;
       /**
-       * <code>optional bool deprecated = 3 [default = false];</code>
-       *
        * <pre>
        * Is this field deprecated?
@@ -20354,12 +26340,11 @@
        * is a formalization for deprecating fields.
        * </pre>
-       */
-      @Override
-	public boolean hasDeprecated() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
+       *
        * <code>optional bool deprecated = 3 [default = false];</code>
-       *
+       */
+      public boolean hasDeprecated() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
        * <pre>
        * Is this field deprecated?
@@ -20368,12 +26353,11 @@
        * is a formalization for deprecating fields.
        * </pre>
-       */
-      @Override
-	public boolean getDeprecated() {
+       *
+       * <code>optional bool deprecated = 3 [default = false];</code>
+       */
+      public boolean getDeprecated() {
         return deprecated_;
       }
       /**
-       * <code>optional bool deprecated = 3 [default = false];</code>
-       *
        * <pre>
        * Is this field deprecated?
@@ -20382,7 +26366,9 @@
        * is a formalization for deprecating fields.
        * </pre>
+       *
+       * <code>optional bool deprecated = 3 [default = false];</code>
        */
       public Builder setDeprecated(boolean value) {
-        bitField0_ |= 0x00000008;
+        bitField0_ |= 0x00000010;
         deprecated_ = value;
         onChanged();
@@ -20390,6 +26376,4 @@
       }
       /**
-       * <code>optional bool deprecated = 3 [default = false];</code>
-       *
        * <pre>
        * Is this field deprecated?
@@ -20398,7 +26382,9 @@
        * is a formalization for deprecating fields.
        * </pre>
+       *
+       * <code>optional bool deprecated = 3 [default = false];</code>
        */
       public Builder clearDeprecated() {
-        bitField0_ = (bitField0_ & ~0x00000008);
+        bitField0_ = (bitField0_ & ~0x00000010);
         deprecated_ = false;
         onChanged();
@@ -20406,202 +26392,31 @@
       }
 
-      private java.lang.Object experimentalMapKey_ = "";
-      /**
-       * <code>optional string experimental_map_key = 9;</code>
-       *
-       * <pre>
-       * EXPERIMENTAL.  DO NOT USE.
-       * For "map" fields, the name of the field in the enclosed type that
-       * is the key for this map.  For example, suppose we have:
-       *   message Item {
-       *     required string name = 1;
-       *     required string value = 2;
-       *   }
-       *   message Config {
-       *     repeated Item items = 1 [experimental_map_key="name"];
-       *   }
-       * In this situation, the map key for Item will be set to "name".
-       * TODO: Fully-implement this, then remove the "experimental_" prefix.
-       * </pre>
-       */
-      @Override
-	public boolean hasExperimentalMapKey() {
-        return ((bitField0_ & 0x00000010) == 0x00000010);
-      }
-      /**
-       * <code>optional string experimental_map_key = 9;</code>
-       *
-       * <pre>
-       * EXPERIMENTAL.  DO NOT USE.
-       * For "map" fields, the name of the field in the enclosed type that
-       * is the key for this map.  For example, suppose we have:
-       *   message Item {
-       *     required string name = 1;
-       *     required string value = 2;
-       *   }
-       *   message Config {
-       *     repeated Item items = 1 [experimental_map_key="name"];
-       *   }
-       * In this situation, the map key for Item will be set to "name".
-       * TODO: Fully-implement this, then remove the "experimental_" prefix.
-       * </pre>
-       */
-      @Override
-	public java.lang.String getExperimentalMapKey() {
-        java.lang.Object ref = experimentalMapKey_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            experimentalMapKey_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string experimental_map_key = 9;</code>
-       *
-       * <pre>
-       * EXPERIMENTAL.  DO NOT USE.
-       * For "map" fields, the name of the field in the enclosed type that
-       * is the key for this map.  For example, suppose we have:
-       *   message Item {
-       *     required string name = 1;
-       *     required string value = 2;
-       *   }
-       *   message Config {
-       *     repeated Item items = 1 [experimental_map_key="name"];
-       *   }
-       * In this situation, the map key for Item will be set to "name".
-       * TODO: Fully-implement this, then remove the "experimental_" prefix.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
-          getExperimentalMapKeyBytes() {
-        java.lang.Object ref = experimentalMapKey_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          experimentalMapKey_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string experimental_map_key = 9;</code>
-       *
-       * <pre>
-       * EXPERIMENTAL.  DO NOT USE.
-       * For "map" fields, the name of the field in the enclosed type that
-       * is the key for this map.  For example, suppose we have:
-       *   message Item {
-       *     required string name = 1;
-       *     required string value = 2;
-       *   }
-       *   message Config {
-       *     repeated Item items = 1 [experimental_map_key="name"];
-       *   }
-       * In this situation, the map key for Item will be set to "name".
-       * TODO: Fully-implement this, then remove the "experimental_" prefix.
-       * </pre>
-       */
-      public Builder setExperimentalMapKey(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000010;
-        experimentalMapKey_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string experimental_map_key = 9;</code>
-       *
-       * <pre>
-       * EXPERIMENTAL.  DO NOT USE.
-       * For "map" fields, the name of the field in the enclosed type that
-       * is the key for this map.  For example, suppose we have:
-       *   message Item {
-       *     required string name = 1;
-       *     required string value = 2;
-       *   }
-       *   message Config {
-       *     repeated Item items = 1 [experimental_map_key="name"];
-       *   }
-       * In this situation, the map key for Item will be set to "name".
-       * TODO: Fully-implement this, then remove the "experimental_" prefix.
-       * </pre>
-       */
-      public Builder clearExperimentalMapKey() {
-        bitField0_ = (bitField0_ & ~0x00000010);
-        experimentalMapKey_ = getDefaultInstance().getExperimentalMapKey();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string experimental_map_key = 9;</code>
-       *
-       * <pre>
-       * EXPERIMENTAL.  DO NOT USE.
-       * For "map" fields, the name of the field in the enclosed type that
-       * is the key for this map.  For example, suppose we have:
-       *   message Item {
-       *     required string name = 1;
-       *     required string value = 2;
-       *   }
-       *   message Config {
-       *     repeated Item items = 1 [experimental_map_key="name"];
-       *   }
-       * In this situation, the map key for Item will be set to "name".
-       * TODO: Fully-implement this, then remove the "experimental_" prefix.
-       * </pre>
-       */
-      public Builder setExperimentalMapKeyBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000010;
-        experimentalMapKey_ = value;
-        onChanged();
-        return this;
-      }
-
       private boolean weak_ ;
       /**
+       * <pre>
+       * For Google-internal migration only. Do not use.
+       * </pre>
+       *
        * <code>optional bool weak = 10 [default = false];</code>
-       *
+       */
+      public boolean hasWeak() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
        * <pre>
        * For Google-internal migration only. Do not use.
        * </pre>
-       */
-      @Override
-	public boolean hasWeak() {
-        return ((bitField0_ & 0x00000020) == 0x00000020);
-      }
-      /**
+       *
        * <code>optional bool weak = 10 [default = false];</code>
-       *
+       */
+      public boolean getWeak() {
+        return weak_;
+      }
+      /**
        * <pre>
        * For Google-internal migration only. Do not use.
        * </pre>
-       */
-      @Override
-	public boolean getWeak() {
-        return weak_;
-      }
-      /**
+       *
        * <code>optional bool weak = 10 [default = false];</code>
-       *
-       * <pre>
-       * For Google-internal migration only. Do not use.
-       * </pre>
        */
       public Builder setWeak(boolean value) {
@@ -20612,9 +26427,9 @@
       }
       /**
+       * <pre>
+       * For Google-internal migration only. Do not use.
+       * </pre>
+       *
        * <code>optional bool weak = 10 [default = false];</code>
-       *
-       * <pre>
-       * For Google-internal migration only. Do not use.
-       * </pre>
        */
       public Builder clearWeak() {
@@ -20629,21 +26444,20 @@
       private void ensureUninterpretedOptionIsMutable() {
         if (!((bitField0_ & 0x00000040) == 0x00000040)) {
-          uninterpretedOption_ = new java.util.ArrayList<>(uninterpretedOption_);
+          uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
           bitField0_ |= 0x00000040;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_;
 
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
         if (uninterpretedOptionBuilder_ == null) {
           return java.util.Collections.unmodifiableList(uninterpretedOption_);
@@ -20653,12 +26467,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public int getUninterpretedOptionCount() {
+       */
+      public int getUninterpretedOptionCount() {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.size();
@@ -20668,12 +26481,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.get(index);
@@ -20683,9 +26495,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -20704,9 +26516,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -20722,9 +26534,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
@@ -20742,9 +26554,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -20763,9 +26575,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -20781,9 +26593,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -20799,9 +26611,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addAllUninterpretedOption(
@@ -20818,9 +26630,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder clearUninterpretedOption() {
@@ -20835,9 +26647,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder removeUninterpretedOption(int index) {
@@ -20852,9 +26664,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder(
@@ -20863,12 +26675,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
           int index) {
         if (uninterpretedOptionBuilder_ == null) {
@@ -20878,12 +26689,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
            getUninterpretedOptionOrBuilderList() {
         if (uninterpretedOptionBuilder_ != null) {
@@ -20894,9 +26704,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() {
@@ -20905,9 +26715,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder(
@@ -20917,19 +26727,20 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> 
            getUninterpretedOptionBuilderList() {
         return getUninterpretedOptionFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
           getUninterpretedOptionFieldBuilder() {
         if (uninterpretedOptionBuilder_ == null) {
-          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
                   ((bitField0_ & 0x00000040) == 0x00000040),
@@ -20940,103 +26751,98 @@
         return uninterpretedOptionBuilder_;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.FieldOptions)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.FieldOptions)
+    private static final com.google.protobuf.DescriptorProtos.FieldOptions DEFAULT_INSTANCE;
     static {
-      defaultInstance = new FieldOptions(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.FieldOptions)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.FieldOptions();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.FieldOptions getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<FieldOptions>
+        PARSER = new com.google.protobuf.AbstractParser<FieldOptions>() {
+      public FieldOptions parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new FieldOptions(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<FieldOptions> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<FieldOptions> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.FieldOptions getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
-  public interface EnumOptionsOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:google.protobuf.EnumOptions)
-      com.google.protobuf.GeneratedMessage.
-          ExtendableMessageOrBuilder<EnumOptions> {
-
-    /**
-     * <code>optional bool allow_alias = 2;</code>
-     *
-     * <pre>
-     * Set this option to true to allow mapping different tag names to the same
-     * value.
-     * </pre>
-     */
-    boolean hasAllowAlias();
-    /**
-     * <code>optional bool allow_alias = 2;</code>
-     *
-     * <pre>
-     * Set this option to true to allow mapping different tag names to the same
-     * value.
-     * </pre>
-     */
-    boolean getAllowAlias();
-
-    /**
-     * <code>optional bool deprecated = 3 [default = false];</code>
-     *
-     * <pre>
-     * Is this enum deprecated?
-     * Depending on the target platform, this can emit Deprecated annotations
-     * for the enum, or it will be completely ignored; in the very least, this
-     * is a formalization for deprecating enums.
-     * </pre>
-     */
-    boolean hasDeprecated();
-    /**
-     * <code>optional bool deprecated = 3 [default = false];</code>
-     *
-     * <pre>
-     * Is this enum deprecated?
-     * Depending on the target platform, this can emit Deprecated annotations
-     * for the enum, or it will be completely ignored; in the very least, this
-     * is a formalization for deprecating enums.
-     * </pre>
-     */
-    boolean getDeprecated();
-
-    /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
+  public interface OneofOptionsOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.OneofOptions)
+      com.google.protobuf.GeneratedMessageV3.
+          ExtendableMessageOrBuilder<OneofOptions> {
+
+    /**
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> 
         getUninterpretedOptionList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     int getUninterpretedOptionCount();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
@@ -21044,39 +26850,30 @@
   }
   /**
-   * Protobuf type {@code google.protobuf.EnumOptions}
+   * Protobuf type {@code google.protobuf.OneofOptions}
    */
-  public static final class EnumOptions extends
-      com.google.protobuf.GeneratedMessage.ExtendableMessage<
-        EnumOptions> implements
-      // @@protoc_insertion_point(message_implements:google.protobuf.EnumOptions)
-      EnumOptionsOrBuilder {
-    // Use EnumOptions.newBuilder() to construct.
-    private EnumOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder<com.google.protobuf.DescriptorProtos.EnumOptions, ?> builder) {
+  public  static final class OneofOptions extends
+      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
+        OneofOptions> implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.OneofOptions)
+      OneofOptionsOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use OneofOptions.newBuilder() to construct.
+    private OneofOptions(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<com.google.protobuf.DescriptorProtos.OneofOptions, ?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private EnumOptions(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final EnumOptions defaultInstance;
-    public static EnumOptions getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public EnumOptions getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private OneofOptions() {
+      uninterpretedOption_ = java.util.Collections.emptyList();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
-    private EnumOptions(
+    private OneofOptions(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -21091,6 +26888,969 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 7994: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              uninterpretedOption_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofOptions_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofOptions_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.google.protobuf.DescriptorProtos.OneofOptions.class, com.google.protobuf.DescriptorProtos.OneofOptions.Builder.class);
+    }
+
+    public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
+    private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+      return uninterpretedOption_;
+    }
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
+        getUninterpretedOptionOrBuilderList() {
+      return uninterpretedOption_;
+    }
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public int getUninterpretedOptionCount() {
+      return uninterpretedOption_.size();
+    }
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+      return uninterpretedOption_.get(index);
+    }
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+        int index) {
+      return uninterpretedOption_.get(index);
+    }
+
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      for (int i = 0; i < getUninterpretedOptionCount(); i++) {
+        if (!getUninterpretedOption(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (!extensionsAreInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      com.google.protobuf.GeneratedMessageV3
+        .ExtendableMessage<com.google.protobuf.DescriptorProtos.OneofOptions>.ExtensionWriter
+          extensionWriter = newExtensionWriter();
+      for (int i = 0; i < uninterpretedOption_.size(); i++) {
+        output.writeMessage(999, uninterpretedOption_.get(i));
+      }
+      extensionWriter.writeUntil(536870912, output);
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < uninterpretedOption_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(999, uninterpretedOption_.get(i));
+      }
+      size += extensionsSerializedSize();
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.OneofOptions)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.OneofOptions other = (com.google.protobuf.DescriptorProtos.OneofOptions) obj;
+
+      boolean result = true;
+      result = result && getUninterpretedOptionList()
+          .equals(other.getUninterpretedOptionList());
+      result = result && unknownFields.equals(other.unknownFields);
+      result = result &&
+          getExtensionFields().equals(other.getExtensionFields());
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (getUninterpretedOptionCount() > 0) {
+        hash = (37 * hash) + UNINTERPRETED_OPTION_FIELD_NUMBER;
+        hash = (53 * hash) + getUninterpretedOptionList().hashCode();
+      }
+      hash = hashFields(hash, getExtensionFields());
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.OneofOptions parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofOptions parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofOptions parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofOptions parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofOptions parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofOptions parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofOptions parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofOptions parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofOptions parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofOptions parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofOptions parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofOptions parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.OneofOptions prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code google.protobuf.OneofOptions}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
+          com.google.protobuf.DescriptorProtos.OneofOptions, Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.OneofOptions)
+        com.google.protobuf.DescriptorProtos.OneofOptionsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofOptions_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofOptions_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.google.protobuf.DescriptorProtos.OneofOptions.class, com.google.protobuf.DescriptorProtos.OneofOptions.Builder.class);
+      }
+
+      // Construct using com.google.protobuf.DescriptorProtos.OneofOptions.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+          getUninterpretedOptionFieldBuilder();
+        }
+      }
+      public Builder clear() {
+        super.clear();
+        if (uninterpretedOptionBuilder_ == null) {
+          uninterpretedOption_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          uninterpretedOptionBuilder_.clear();
+        }
+        return this;
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofOptions_descriptor;
+      }
+
+      public com.google.protobuf.DescriptorProtos.OneofOptions getDefaultInstanceForType() {
+        return com.google.protobuf.DescriptorProtos.OneofOptions.getDefaultInstance();
+      }
+
+      public com.google.protobuf.DescriptorProtos.OneofOptions build() {
+        com.google.protobuf.DescriptorProtos.OneofOptions result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public com.google.protobuf.DescriptorProtos.OneofOptions buildPartial() {
+        com.google.protobuf.DescriptorProtos.OneofOptions result = new com.google.protobuf.DescriptorProtos.OneofOptions(this);
+        int from_bitField0_ = bitField0_;
+        if (uninterpretedOptionBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.uninterpretedOption_ = uninterpretedOption_;
+        } else {
+          result.uninterpretedOption_ = uninterpretedOptionBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.OneofOptions, Type> extension,
+          Type value) {
+        return (Builder) super.setExtension(extension, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.OneofOptions, java.util.List<Type>> extension,
+          int index, Type value) {
+        return (Builder) super.setExtension(extension, index, value);
+      }
+      public <Type> Builder addExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.OneofOptions, java.util.List<Type>> extension,
+          Type value) {
+        return (Builder) super.addExtension(extension, value);
+      }
+      public <Type> Builder clearExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.OneofOptions, ?> extension) {
+        return (Builder) super.clearExtension(extension);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof com.google.protobuf.DescriptorProtos.OneofOptions) {
+          return mergeFrom((com.google.protobuf.DescriptorProtos.OneofOptions)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.OneofOptions other) {
+        if (other == com.google.protobuf.DescriptorProtos.OneofOptions.getDefaultInstance()) return this;
+        if (uninterpretedOptionBuilder_ == null) {
+          if (!other.uninterpretedOption_.isEmpty()) {
+            if (uninterpretedOption_.isEmpty()) {
+              uninterpretedOption_ = other.uninterpretedOption_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureUninterpretedOptionIsMutable();
+              uninterpretedOption_.addAll(other.uninterpretedOption_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.uninterpretedOption_.isEmpty()) {
+            if (uninterpretedOptionBuilder_.isEmpty()) {
+              uninterpretedOptionBuilder_.dispose();
+              uninterpretedOptionBuilder_ = null;
+              uninterpretedOption_ = other.uninterpretedOption_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              uninterpretedOptionBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getUninterpretedOptionFieldBuilder() : null;
+            } else {
+              uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_);
+            }
+          }
+        }
+        this.mergeExtensionFields(other);
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getUninterpretedOptionCount(); i++) {
+          if (!getUninterpretedOption(i).isInitialized()) {
+            return false;
+          }
+        }
+        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.DescriptorProtos.OneofOptions parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (com.google.protobuf.DescriptorProtos.OneofOptions) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
+        java.util.Collections.emptyList();
+      private void ensureUninterpretedOptionIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_;
+
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+        if (uninterpretedOptionBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(uninterpretedOption_);
+        } else {
+          return uninterpretedOptionBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public int getUninterpretedOptionCount() {
+        if (uninterpretedOptionBuilder_ == null) {
+          return uninterpretedOption_.size();
+        } else {
+          return uninterpretedOptionBuilder_.getCount();
+        }
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+        if (uninterpretedOptionBuilder_ == null) {
+          return uninterpretedOption_.get(index);
+        } else {
+          return uninterpretedOptionBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder setUninterpretedOption(
+          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
+        if (uninterpretedOptionBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.set(index, value);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder setUninterpretedOption(
+          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
+        if (uninterpretedOptionBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.add(value);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder addUninterpretedOption(
+          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
+        if (uninterpretedOptionBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.add(index, value);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder addUninterpretedOption(
+          com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.add(builderForValue.build());
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder addUninterpretedOption(
+          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder addAllUninterpretedOption(
+          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, uninterpretedOption_);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder clearUninterpretedOption() {
+        if (uninterpretedOptionBuilder_ == null) {
+          uninterpretedOption_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public Builder removeUninterpretedOption(int index) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.remove(index);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder(
+          int index) {
+        return getUninterpretedOptionFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+          int index) {
+        if (uninterpretedOptionBuilder_ == null) {
+          return uninterpretedOption_.get(index);  } else {
+          return uninterpretedOptionBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
+           getUninterpretedOptionOrBuilderList() {
+        if (uninterpretedOptionBuilder_ != null) {
+          return uninterpretedOptionBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(uninterpretedOption_);
+        }
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() {
+        return getUninterpretedOptionFieldBuilder().addBuilder(
+            com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance());
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder(
+          int index) {
+        return getUninterpretedOptionFieldBuilder().addBuilder(
+            index, com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance());
+      }
+      /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> 
+           getUninterpretedOptionBuilderList() {
+        return getUninterpretedOptionFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
+          getUninterpretedOptionFieldBuilder() {
+        if (uninterpretedOptionBuilder_ == null) {
+          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
+                  uninterpretedOption_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          uninterpretedOption_ = null;
+        }
+        return uninterpretedOptionBuilder_;
+      }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:google.protobuf.OneofOptions)
+    }
+
+    // @@protoc_insertion_point(class_scope:google.protobuf.OneofOptions)
+    private static final com.google.protobuf.DescriptorProtos.OneofOptions DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.OneofOptions();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.OneofOptions getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<OneofOptions>
+        PARSER = new com.google.protobuf.AbstractParser<OneofOptions>() {
+      public OneofOptions parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new OneofOptions(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<OneofOptions> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<OneofOptions> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.OneofOptions getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface EnumOptionsOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.EnumOptions)
+      com.google.protobuf.GeneratedMessageV3.
+          ExtendableMessageOrBuilder<EnumOptions> {
+
+    /**
+     * <pre>
+     * Set this option to true to allow mapping different tag names to the same
+     * value.
+     * </pre>
+     *
+     * <code>optional bool allow_alias = 2;</code>
+     */
+    boolean hasAllowAlias();
+    /**
+     * <pre>
+     * Set this option to true to allow mapping different tag names to the same
+     * value.
+     * </pre>
+     *
+     * <code>optional bool allow_alias = 2;</code>
+     */
+    boolean getAllowAlias();
+
+    /**
+     * <pre>
+     * Is this enum deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the enum, or it will be completely ignored; in the very least, this
+     * is a formalization for deprecating enums.
+     * </pre>
+     *
+     * <code>optional bool deprecated = 3 [default = false];</code>
+     */
+    boolean hasDeprecated();
+    /**
+     * <pre>
+     * Is this enum deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the enum, or it will be completely ignored; in the very least, this
+     * is a formalization for deprecating enums.
+     * </pre>
+     *
+     * <code>optional bool deprecated = 3 [default = false];</code>
+     */
+    boolean getDeprecated();
+
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> 
+        getUninterpretedOptionList();
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    int getUninterpretedOptionCount();
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
+        getUninterpretedOptionOrBuilderList();
+    /**
+     * <pre>
+     * The parser stores options it doesn't recognize here. See above.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code google.protobuf.EnumOptions}
+   */
+  public  static final class EnumOptions extends
+      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
+        EnumOptions> implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.EnumOptions)
+      EnumOptionsOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use EnumOptions.newBuilder() to construct.
+    private EnumOptions(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<com.google.protobuf.DescriptorProtos.EnumOptions, ?> builder) {
+      super(builder);
+    }
+    private EnumOptions() {
+      allowAlias_ = false;
+      deprecated_ = false;
+      uninterpretedOption_ = java.util.Collections.emptyList();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private EnumOptions(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -21109,8 +27869,9 @@
             case 7994: {
               if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-                uninterpretedOption_ = new java.util.ArrayList<>();
+                uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
                 mutable_bitField0_ |= 0x00000004;
               }
-              uninterpretedOption_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
+              uninterpretedOption_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
               break;
             }
@@ -21121,5 +27882,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
@@ -21135,6 +27896,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumOptions_fieldAccessorTable
@@ -21143,45 +27903,27 @@
     }
 
-    public static com.google.protobuf.Parser<EnumOptions> PARSER =
-        new com.google.protobuf.AbstractParser<EnumOptions>() {
-      @Override
-	public EnumOptions parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EnumOptions(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<EnumOptions> getParserForType() {
-      return PARSER;
-    }
-
     private int bitField0_;
     public static final int ALLOW_ALIAS_FIELD_NUMBER = 2;
     private boolean allowAlias_;
     /**
-     * <code>optional bool allow_alias = 2;</code>
-     *
      * <pre>
      * Set this option to true to allow mapping different tag names to the same
      * value.
      * </pre>
-     */
-    @Override
-	public boolean hasAllowAlias() {
+     *
+     * <code>optional bool allow_alias = 2;</code>
+     */
+    public boolean hasAllowAlias() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
     /**
-     * <code>optional bool allow_alias = 2;</code>
-     *
      * <pre>
      * Set this option to true to allow mapping different tag names to the same
      * value.
      * </pre>
-     */
-    @Override
-	public boolean getAllowAlias() {
+     *
+     * <code>optional bool allow_alias = 2;</code>
+     */
+    public boolean getAllowAlias() {
       return allowAlias_;
     }
@@ -21190,6 +27932,4 @@
     private boolean deprecated_;
     /**
-     * <code>optional bool deprecated = 3 [default = false];</code>
-     *
      * <pre>
      * Is this enum deprecated?
@@ -21198,12 +27938,11 @@
      * is a formalization for deprecating enums.
      * </pre>
-     */
-    @Override
-	public boolean hasDeprecated() {
+     *
+     * <code>optional bool deprecated = 3 [default = false];</code>
+     */
+    public boolean hasDeprecated() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
     /**
-     * <code>optional bool deprecated = 3 [default = false];</code>
-     *
      * <pre>
      * Is this enum deprecated?
@@ -21212,7 +27951,8 @@
      * is a formalization for deprecating enums.
      * </pre>
-     */
-    @Override
-	public boolean getDeprecated() {
+     *
+     * <code>optional bool deprecated = 3 [default = false];</code>
+     */
+    public boolean getDeprecated() {
       return deprecated_;
     }
@@ -21221,69 +27961,58 @@
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public int getUninterpretedOptionCount() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public int getUninterpretedOptionCount() {
       return uninterpretedOption_.size();
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
       return uninterpretedOption_.get(index);
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
         int index) {
       return uninterpretedOption_.get(index);
     }
 
-    private void initFields() {
-      allowAlias_ = false;
-      deprecated_ = false;
-      uninterpretedOption_ = java.util.Collections.emptyList();
-    }
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -21304,11 +28033,9 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
-      com.google.protobuf.GeneratedMessage
-        .ExtendableMessage<com.google.protobuf.DescriptorProtos.EnumOptions>.ExtensionWriter extensionWriter =
-          newExtensionWriter();
+      com.google.protobuf.GeneratedMessageV3
+        .ExtendableMessage<com.google.protobuf.DescriptorProtos.EnumOptions>.ExtensionWriter
+          extensionWriter = newExtensionWriter();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeBool(2, allowAlias_);
@@ -21321,11 +28048,9 @@
       }
       extensionWriter.writeUntil(536870912, output);
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
@@ -21344,16 +28069,76 @@
       }
       size += extensionsSerializedSize();
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.EnumOptions)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.EnumOptions other = (com.google.protobuf.DescriptorProtos.EnumOptions) obj;
+
+      boolean result = true;
+      result = result && (hasAllowAlias() == other.hasAllowAlias());
+      if (hasAllowAlias()) {
+        result = result && (getAllowAlias()
+            == other.getAllowAlias());
+      }
+      result = result && (hasDeprecated() == other.hasDeprecated());
+      if (hasDeprecated()) {
+        result = result && (getDeprecated()
+            == other.getDeprecated());
+      }
+      result = result && getUninterpretedOptionList()
+          .equals(other.getUninterpretedOptionList());
+      result = result && unknownFields.equals(other.unknownFields);
+      result = result &&
+          getExtensionFields().equals(other.getExtensionFields());
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasAllowAlias()) {
+        hash = (37 * hash) + ALLOW_ALIAS_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getAllowAlias());
+      }
+      if (hasDeprecated()) {
+        hash = (37 * hash) + DEPRECATED_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getDeprecated());
+      }
+      if (getUninterpretedOptionCount() > 0) {
+        hash = (37 * hash) + UNINTERPRETED_OPTION_FIELD_NUMBER;
+        hash = (53 * hash) + getUninterpretedOptionList().hashCode();
+      }
+      hash = hashFields(hash, getExtensionFields());
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(
         com.google.protobuf.ByteString data)
@@ -21379,5 +28164,6 @@
     public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(
@@ -21385,9 +28171,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.EnumOptions parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.EnumOptions parseDelimitedFrom(
@@ -21395,10 +28183,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(
@@ -21406,19 +28196,23 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumOptions prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
@@ -21428,5 +28222,5 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
+        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
           com.google.protobuf.DescriptorProtos.EnumOptions, Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.EnumOptions)
@@ -21437,6 +28231,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumOptions_fieldAccessorTable
@@ -21451,19 +28244,15 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getUninterpretedOptionFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         allowAlias_ = false;
@@ -21480,22 +28269,14 @@
       }
 
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumOptions_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumOptions getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.EnumOptions getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumOptions build() {
+      public com.google.protobuf.DescriptorProtos.EnumOptions build() {
         com.google.protobuf.DescriptorProtos.EnumOptions result = buildPartial();
         if (!result.isInitialized()) {
@@ -21505,6 +28286,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumOptions buildPartial() {
+      public com.google.protobuf.DescriptorProtos.EnumOptions buildPartial() {
         com.google.protobuf.DescriptorProtos.EnumOptions result = new com.google.protobuf.DescriptorProtos.EnumOptions(this);
         int from_bitField0_ = bitField0_;
@@ -21532,6 +28312,54 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.EnumOptions, Type> extension,
+          Type value) {
+        return (Builder) super.setExtension(extension, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.EnumOptions, java.util.List<Type>> extension,
+          int index, Type value) {
+        return (Builder) super.setExtension(extension, index, value);
+      }
+      public <Type> Builder addExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.EnumOptions, java.util.List<Type>> extension,
+          Type value) {
+        return (Builder) super.addExtension(extension, value);
+      }
+      public <Type> Builder clearExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.EnumOptions, ?> extension) {
+        return (Builder) super.clearExtension(extension);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.EnumOptions) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.EnumOptions)other);
@@ -21568,6 +28396,6 @@
               uninterpretedOption_ = other.uninterpretedOption_;
               bitField0_ = (bitField0_ & ~0x00000004);
-              uninterpretedOptionBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              uninterpretedOptionBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getUninterpretedOptionFieldBuilder() : null;
             } else {
@@ -21577,18 +28405,16 @@
         }
         this.mergeExtensionFields(other);
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         for (int i = 0; i < getUninterpretedOptionCount(); i++) {
           if (!getUninterpretedOption(i).isInitialized()) {
-
             return false;
           }
         }
         if (!extensionsAreInitialized()) {
-
           return false;
         }
@@ -21596,6 +28422,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -21606,5 +28431,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.EnumOptions) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -21618,34 +28443,32 @@
       private boolean allowAlias_ ;
       /**
-       * <code>optional bool allow_alias = 2;</code>
-       *
        * <pre>
        * Set this option to true to allow mapping different tag names to the same
        * value.
        * </pre>
-       */
-      @Override
-	public boolean hasAllowAlias() {
+       *
+       * <code>optional bool allow_alias = 2;</code>
+       */
+      public boolean hasAllowAlias() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
       /**
-       * <code>optional bool allow_alias = 2;</code>
-       *
        * <pre>
        * Set this option to true to allow mapping different tag names to the same
        * value.
        * </pre>
-       */
-      @Override
-	public boolean getAllowAlias() {
+       *
+       * <code>optional bool allow_alias = 2;</code>
+       */
+      public boolean getAllowAlias() {
         return allowAlias_;
       }
       /**
-       * <code>optional bool allow_alias = 2;</code>
-       *
        * <pre>
        * Set this option to true to allow mapping different tag names to the same
        * value.
        * </pre>
+       *
+       * <code>optional bool allow_alias = 2;</code>
        */
       public Builder setAllowAlias(boolean value) {
@@ -21656,10 +28479,10 @@
       }
       /**
-       * <code>optional bool allow_alias = 2;</code>
-       *
        * <pre>
        * Set this option to true to allow mapping different tag names to the same
        * value.
        * </pre>
+       *
+       * <code>optional bool allow_alias = 2;</code>
        */
       public Builder clearAllowAlias() {
@@ -21672,6 +28495,4 @@
       private boolean deprecated_ ;
       /**
-       * <code>optional bool deprecated = 3 [default = false];</code>
-       *
        * <pre>
        * Is this enum deprecated?
@@ -21680,12 +28501,11 @@
        * is a formalization for deprecating enums.
        * </pre>
-       */
-      @Override
-	public boolean hasDeprecated() {
+       *
+       * <code>optional bool deprecated = 3 [default = false];</code>
+       */
+      public boolean hasDeprecated() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
       /**
-       * <code>optional bool deprecated = 3 [default = false];</code>
-       *
        * <pre>
        * Is this enum deprecated?
@@ -21694,12 +28514,11 @@
        * is a formalization for deprecating enums.
        * </pre>
-       */
-      @Override
-	public boolean getDeprecated() {
+       *
+       * <code>optional bool deprecated = 3 [default = false];</code>
+       */
+      public boolean getDeprecated() {
         return deprecated_;
       }
       /**
-       * <code>optional bool deprecated = 3 [default = false];</code>
-       *
        * <pre>
        * Is this enum deprecated?
@@ -21708,4 +28527,6 @@
        * is a formalization for deprecating enums.
        * </pre>
+       *
+       * <code>optional bool deprecated = 3 [default = false];</code>
        */
       public Builder setDeprecated(boolean value) {
@@ -21716,6 +28537,4 @@
       }
       /**
-       * <code>optional bool deprecated = 3 [default = false];</code>
-       *
        * <pre>
        * Is this enum deprecated?
@@ -21724,4 +28543,6 @@
        * is a formalization for deprecating enums.
        * </pre>
+       *
+       * <code>optional bool deprecated = 3 [default = false];</code>
        */
       public Builder clearDeprecated() {
@@ -21736,21 +28557,20 @@
       private void ensureUninterpretedOptionIsMutable() {
         if (!((bitField0_ & 0x00000004) == 0x00000004)) {
-          uninterpretedOption_ = new java.util.ArrayList<>(uninterpretedOption_);
+          uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
           bitField0_ |= 0x00000004;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_;
 
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
         if (uninterpretedOptionBuilder_ == null) {
           return java.util.Collections.unmodifiableList(uninterpretedOption_);
@@ -21760,12 +28580,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public int getUninterpretedOptionCount() {
+       */
+      public int getUninterpretedOptionCount() {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.size();
@@ -21775,12 +28594,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.get(index);
@@ -21790,9 +28608,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -21811,9 +28629,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -21829,9 +28647,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
@@ -21849,9 +28667,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -21870,9 +28688,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -21888,9 +28706,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -21906,9 +28724,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addAllUninterpretedOption(
@@ -21925,9 +28743,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder clearUninterpretedOption() {
@@ -21942,9 +28760,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder removeUninterpretedOption(int index) {
@@ -21959,9 +28777,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder(
@@ -21970,12 +28788,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
           int index) {
         if (uninterpretedOptionBuilder_ == null) {
@@ -21985,12 +28802,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
            getUninterpretedOptionOrBuilderList() {
         if (uninterpretedOptionBuilder_ != null) {
@@ -22001,9 +28817,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() {
@@ -22012,9 +28828,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder(
@@ -22024,19 +28840,20 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> 
            getUninterpretedOptionBuilderList() {
         return getUninterpretedOptionFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
           getUninterpretedOptionFieldBuilder() {
         if (uninterpretedOptionBuilder_ == null) {
-          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
                   ((bitField0_ & 0x00000004) == 0x00000004),
@@ -22047,24 +28864,59 @@
         return uninterpretedOptionBuilder_;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.EnumOptions)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.EnumOptions)
+    private static final com.google.protobuf.DescriptorProtos.EnumOptions DEFAULT_INSTANCE;
     static {
-      defaultInstance = new EnumOptions(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.EnumOptions)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.EnumOptions();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.EnumOptions getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<EnumOptions>
+        PARSER = new com.google.protobuf.AbstractParser<EnumOptions>() {
+      public EnumOptions parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new EnumOptions(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<EnumOptions> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<EnumOptions> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.EnumOptions getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
   public interface EnumValueOptionsOrBuilder extends
       // @@protoc_insertion_point(interface_extends:google.protobuf.EnumValueOptions)
-      com.google.protobuf.GeneratedMessage.
+      com.google.protobuf.GeneratedMessageV3.
           ExtendableMessageOrBuilder<EnumValueOptions> {
 
     /**
-     * <code>optional bool deprecated = 1 [default = false];</code>
-     *
      * <pre>
      * Is this enum value deprecated?
@@ -22073,9 +28925,9 @@
      * this is a formalization for deprecating enum values.
      * </pre>
+     *
+     * <code>optional bool deprecated = 1 [default = false];</code>
      */
     boolean hasDeprecated();
     /**
-     * <code>optional bool deprecated = 1 [default = false];</code>
-     *
      * <pre>
      * Is this enum value deprecated?
@@ -22084,47 +28936,49 @@
      * this is a formalization for deprecating enum values.
      * </pre>
+     *
+     * <code>optional bool deprecated = 1 [default = false];</code>
      */
     boolean getDeprecated();
 
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> 
         getUninterpretedOptionList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     int getUninterpretedOptionCount();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
@@ -22134,30 +28988,22 @@
    * Protobuf type {@code google.protobuf.EnumValueOptions}
    */
-  public static final class EnumValueOptions extends
-      com.google.protobuf.GeneratedMessage.ExtendableMessage<
+  public  static final class EnumValueOptions extends
+      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
         EnumValueOptions> implements
       // @@protoc_insertion_point(message_implements:google.protobuf.EnumValueOptions)
       EnumValueOptionsOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use EnumValueOptions.newBuilder() to construct.
-    private EnumValueOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder<com.google.protobuf.DescriptorProtos.EnumValueOptions, ?> builder) {
+    private EnumValueOptions(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<com.google.protobuf.DescriptorProtos.EnumValueOptions, ?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private EnumValueOptions(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final EnumValueOptions defaultInstance;
-    public static EnumValueOptions getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public EnumValueOptions getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private EnumValueOptions() {
+      deprecated_ = false;
+      uninterpretedOption_ = java.util.Collections.emptyList();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -22166,5 +29012,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -22179,6 +29025,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -22192,8 +29038,9 @@
             case 7994: {
               if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                uninterpretedOption_ = new java.util.ArrayList<>();
+                uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
                 mutable_bitField0_ |= 0x00000002;
               }
-              uninterpretedOption_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
+              uninterpretedOption_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
               break;
             }
@@ -22204,5 +29051,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
@@ -22218,6 +29065,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable
@@ -22226,26 +29072,8 @@
     }
 
-    public static com.google.protobuf.Parser<EnumValueOptions> PARSER =
-        new com.google.protobuf.AbstractParser<EnumValueOptions>() {
-      @Override
-	public EnumValueOptions parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EnumValueOptions(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<EnumValueOptions> getParserForType() {
-      return PARSER;
-    }
-
     private int bitField0_;
     public static final int DEPRECATED_FIELD_NUMBER = 1;
     private boolean deprecated_;
     /**
-     * <code>optional bool deprecated = 1 [default = false];</code>
-     *
      * <pre>
      * Is this enum value deprecated?
@@ -22254,12 +29082,11 @@
      * this is a formalization for deprecating enum values.
      * </pre>
-     */
-    @Override
-	public boolean hasDeprecated() {
+     *
+     * <code>optional bool deprecated = 1 [default = false];</code>
+     */
+    public boolean hasDeprecated() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
     /**
-     * <code>optional bool deprecated = 1 [default = false];</code>
-     *
      * <pre>
      * Is this enum value deprecated?
@@ -22268,7 +29095,8 @@
      * this is a formalization for deprecating enum values.
      * </pre>
-     */
-    @Override
-	public boolean getDeprecated() {
+     *
+     * <code>optional bool deprecated = 1 [default = false];</code>
+     */
+    public boolean getDeprecated() {
       return deprecated_;
     }
@@ -22277,68 +29105,58 @@
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public int getUninterpretedOptionCount() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public int getUninterpretedOptionCount() {
       return uninterpretedOption_.size();
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
       return uninterpretedOption_.get(index);
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
         int index) {
       return uninterpretedOption_.get(index);
     }
 
-    private void initFields() {
-      deprecated_ = false;
-      uninterpretedOption_ = java.util.Collections.emptyList();
-    }
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -22359,11 +29177,9 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
-      com.google.protobuf.GeneratedMessage
-        .ExtendableMessage<com.google.protobuf.DescriptorProtos.EnumValueOptions>.ExtensionWriter extensionWriter =
-          newExtensionWriter();
+      com.google.protobuf.GeneratedMessageV3
+        .ExtendableMessage<com.google.protobuf.DescriptorProtos.EnumValueOptions>.ExtensionWriter
+          extensionWriter = newExtensionWriter();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeBool(1, deprecated_);
@@ -22373,11 +29189,9 @@
       }
       extensionWriter.writeUntil(536870912, output);
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
@@ -22392,16 +29206,66 @@
       }
       size += extensionsSerializedSize();
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.EnumValueOptions)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.EnumValueOptions other = (com.google.protobuf.DescriptorProtos.EnumValueOptions) obj;
+
+      boolean result = true;
+      result = result && (hasDeprecated() == other.hasDeprecated());
+      if (hasDeprecated()) {
+        result = result && (getDeprecated()
+            == other.getDeprecated());
+      }
+      result = result && getUninterpretedOptionList()
+          .equals(other.getUninterpretedOptionList());
+      result = result && unknownFields.equals(other.unknownFields);
+      result = result &&
+          getExtensionFields().equals(other.getExtensionFields());
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasDeprecated()) {
+        hash = (37 * hash) + DEPRECATED_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getDeprecated());
+      }
+      if (getUninterpretedOptionCount() > 0) {
+        hash = (37 * hash) + UNINTERPRETED_OPTION_FIELD_NUMBER;
+        hash = (53 * hash) + getUninterpretedOptionList().hashCode();
+      }
+      hash = hashFields(hash, getExtensionFields());
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
         com.google.protobuf.ByteString data)
@@ -22427,5 +29291,6 @@
     public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
@@ -22433,9 +29298,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseDelimitedFrom(
@@ -22443,10 +29310,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
@@ -22454,19 +29323,23 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumValueOptions prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
@@ -22476,5 +29349,5 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
+        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
           com.google.protobuf.DescriptorProtos.EnumValueOptions, Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.EnumValueOptions)
@@ -22485,6 +29358,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable
@@ -22499,19 +29371,15 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getUninterpretedOptionFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         deprecated_ = false;
@@ -22526,22 +29394,14 @@
       }
 
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueOptions getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.EnumValueOptions getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueOptions build() {
+      public com.google.protobuf.DescriptorProtos.EnumValueOptions build() {
         com.google.protobuf.DescriptorProtos.EnumValueOptions result = buildPartial();
         if (!result.isInitialized()) {
@@ -22551,6 +29411,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.EnumValueOptions buildPartial() {
+      public com.google.protobuf.DescriptorProtos.EnumValueOptions buildPartial() {
         com.google.protobuf.DescriptorProtos.EnumValueOptions result = new com.google.protobuf.DescriptorProtos.EnumValueOptions(this);
         int from_bitField0_ = bitField0_;
@@ -22574,6 +29433,54 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.EnumValueOptions, Type> extension,
+          Type value) {
+        return (Builder) super.setExtension(extension, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.EnumValueOptions, java.util.List<Type>> extension,
+          int index, Type value) {
+        return (Builder) super.setExtension(extension, index, value);
+      }
+      public <Type> Builder addExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.EnumValueOptions, java.util.List<Type>> extension,
+          Type value) {
+        return (Builder) super.addExtension(extension, value);
+      }
+      public <Type> Builder clearExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.EnumValueOptions, ?> extension) {
+        return (Builder) super.clearExtension(extension);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.EnumValueOptions) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.EnumValueOptions)other);
@@ -22607,6 +29514,6 @@
               uninterpretedOption_ = other.uninterpretedOption_;
               bitField0_ = (bitField0_ & ~0x00000002);
-              uninterpretedOptionBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              uninterpretedOptionBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getUninterpretedOptionFieldBuilder() : null;
             } else {
@@ -22616,18 +29523,16 @@
         }
         this.mergeExtensionFields(other);
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         for (int i = 0; i < getUninterpretedOptionCount(); i++) {
           if (!getUninterpretedOption(i).isInitialized()) {
-
             return false;
           }
         }
         if (!extensionsAreInitialized()) {
-
           return false;
         }
@@ -22635,6 +29540,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -22645,5 +29549,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.EnumValueOptions) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -22657,6 +29561,4 @@
       private boolean deprecated_ ;
       /**
-       * <code>optional bool deprecated = 1 [default = false];</code>
-       *
        * <pre>
        * Is this enum value deprecated?
@@ -22665,12 +29567,11 @@
        * this is a formalization for deprecating enum values.
        * </pre>
-       */
-      @Override
-	public boolean hasDeprecated() {
+       *
+       * <code>optional bool deprecated = 1 [default = false];</code>
+       */
+      public boolean hasDeprecated() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
       /**
-       * <code>optional bool deprecated = 1 [default = false];</code>
-       *
        * <pre>
        * Is this enum value deprecated?
@@ -22679,12 +29580,11 @@
        * this is a formalization for deprecating enum values.
        * </pre>
-       */
-      @Override
-	public boolean getDeprecated() {
+       *
+       * <code>optional bool deprecated = 1 [default = false];</code>
+       */
+      public boolean getDeprecated() {
         return deprecated_;
       }
       /**
-       * <code>optional bool deprecated = 1 [default = false];</code>
-       *
        * <pre>
        * Is this enum value deprecated?
@@ -22693,4 +29593,6 @@
        * this is a formalization for deprecating enum values.
        * </pre>
+       *
+       * <code>optional bool deprecated = 1 [default = false];</code>
        */
       public Builder setDeprecated(boolean value) {
@@ -22701,6 +29603,4 @@
       }
       /**
-       * <code>optional bool deprecated = 1 [default = false];</code>
-       *
        * <pre>
        * Is this enum value deprecated?
@@ -22709,4 +29609,6 @@
        * this is a formalization for deprecating enum values.
        * </pre>
+       *
+       * <code>optional bool deprecated = 1 [default = false];</code>
        */
       public Builder clearDeprecated() {
@@ -22721,21 +29623,20 @@
       private void ensureUninterpretedOptionIsMutable() {
         if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          uninterpretedOption_ = new java.util.ArrayList<>(uninterpretedOption_);
+          uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
           bitField0_ |= 0x00000002;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_;
 
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
         if (uninterpretedOptionBuilder_ == null) {
           return java.util.Collections.unmodifiableList(uninterpretedOption_);
@@ -22745,12 +29646,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public int getUninterpretedOptionCount() {
+       */
+      public int getUninterpretedOptionCount() {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.size();
@@ -22760,12 +29660,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.get(index);
@@ -22775,9 +29674,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -22796,9 +29695,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -22814,9 +29713,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
@@ -22834,9 +29733,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -22855,9 +29754,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -22873,9 +29772,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -22891,9 +29790,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addAllUninterpretedOption(
@@ -22910,9 +29809,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder clearUninterpretedOption() {
@@ -22927,9 +29826,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder removeUninterpretedOption(int index) {
@@ -22944,9 +29843,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder(
@@ -22955,12 +29854,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
           int index) {
         if (uninterpretedOptionBuilder_ == null) {
@@ -22970,12 +29868,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
            getUninterpretedOptionOrBuilderList() {
         if (uninterpretedOptionBuilder_ != null) {
@@ -22986,9 +29883,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() {
@@ -22997,9 +29894,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder(
@@ -23009,19 +29906,20 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> 
            getUninterpretedOptionBuilderList() {
         return getUninterpretedOptionFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
           getUninterpretedOptionFieldBuilder() {
         if (uninterpretedOptionBuilder_ == null) {
-          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
                   ((bitField0_ & 0x00000002) == 0x00000002),
@@ -23032,24 +29930,59 @@
         return uninterpretedOptionBuilder_;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.EnumValueOptions)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.EnumValueOptions)
+    private static final com.google.protobuf.DescriptorProtos.EnumValueOptions DEFAULT_INSTANCE;
     static {
-      defaultInstance = new EnumValueOptions(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.EnumValueOptions)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.EnumValueOptions();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.EnumValueOptions getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<EnumValueOptions>
+        PARSER = new com.google.protobuf.AbstractParser<EnumValueOptions>() {
+      public EnumValueOptions parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new EnumValueOptions(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<EnumValueOptions> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<EnumValueOptions> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.EnumValueOptions getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
   public interface ServiceOptionsOrBuilder extends
       // @@protoc_insertion_point(interface_extends:google.protobuf.ServiceOptions)
-      com.google.protobuf.GeneratedMessage.
+      com.google.protobuf.GeneratedMessageV3.
           ExtendableMessageOrBuilder<ServiceOptions> {
 
     /**
-     * <code>optional bool deprecated = 33 [default = false];</code>
-     *
      * <pre>
      * Is this service deprecated?
@@ -23058,9 +29991,9 @@
      * this is a formalization for deprecating services.
      * </pre>
+     *
+     * <code>optional bool deprecated = 33 [default = false];</code>
      */
     boolean hasDeprecated();
     /**
-     * <code>optional bool deprecated = 33 [default = false];</code>
-     *
      * <pre>
      * Is this service deprecated?
@@ -23069,47 +30002,49 @@
      * this is a formalization for deprecating services.
      * </pre>
+     *
+     * <code>optional bool deprecated = 33 [default = false];</code>
      */
     boolean getDeprecated();
 
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> 
         getUninterpretedOptionList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     int getUninterpretedOptionCount();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
@@ -23119,30 +30054,22 @@
    * Protobuf type {@code google.protobuf.ServiceOptions}
    */
-  public static final class ServiceOptions extends
-      com.google.protobuf.GeneratedMessage.ExtendableMessage<
+  public  static final class ServiceOptions extends
+      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
         ServiceOptions> implements
       // @@protoc_insertion_point(message_implements:google.protobuf.ServiceOptions)
       ServiceOptionsOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use ServiceOptions.newBuilder() to construct.
-    private ServiceOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder<com.google.protobuf.DescriptorProtos.ServiceOptions, ?> builder) {
+    private ServiceOptions(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<com.google.protobuf.DescriptorProtos.ServiceOptions, ?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private ServiceOptions(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final ServiceOptions defaultInstance;
-    public static ServiceOptions getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public ServiceOptions getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private ServiceOptions() {
+      deprecated_ = false;
+      uninterpretedOption_ = java.util.Collections.emptyList();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -23151,5 +30078,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -23164,6 +30091,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -23177,8 +30104,9 @@
             case 7994: {
               if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                uninterpretedOption_ = new java.util.ArrayList<>();
+                uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
                 mutable_bitField0_ |= 0x00000002;
               }
-              uninterpretedOption_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
+              uninterpretedOption_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
               break;
             }
@@ -23189,5 +30117,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
@@ -23203,6 +30131,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_fieldAccessorTable
@@ -23211,26 +30138,8 @@
     }
 
-    public static com.google.protobuf.Parser<ServiceOptions> PARSER =
-        new com.google.protobuf.AbstractParser<ServiceOptions>() {
-      @Override
-	public ServiceOptions parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceOptions(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<ServiceOptions> getParserForType() {
-      return PARSER;
-    }
-
     private int bitField0_;
     public static final int DEPRECATED_FIELD_NUMBER = 33;
     private boolean deprecated_;
     /**
-     * <code>optional bool deprecated = 33 [default = false];</code>
-     *
      * <pre>
      * Is this service deprecated?
@@ -23239,12 +30148,11 @@
      * this is a formalization for deprecating services.
      * </pre>
-     */
-    @Override
-	public boolean hasDeprecated() {
+     *
+     * <code>optional bool deprecated = 33 [default = false];</code>
+     */
+    public boolean hasDeprecated() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
     /**
-     * <code>optional bool deprecated = 33 [default = false];</code>
-     *
      * <pre>
      * Is this service deprecated?
@@ -23253,7 +30161,8 @@
      * this is a formalization for deprecating services.
      * </pre>
-     */
-    @Override
-	public boolean getDeprecated() {
+     *
+     * <code>optional bool deprecated = 33 [default = false];</code>
+     */
+    public boolean getDeprecated() {
       return deprecated_;
     }
@@ -23262,68 +30171,58 @@
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public int getUninterpretedOptionCount() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public int getUninterpretedOptionCount() {
       return uninterpretedOption_.size();
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
       return uninterpretedOption_.get(index);
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
         int index) {
       return uninterpretedOption_.get(index);
     }
 
-    private void initFields() {
-      deprecated_ = false;
-      uninterpretedOption_ = java.util.Collections.emptyList();
-    }
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -23344,11 +30243,9 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
-      com.google.protobuf.GeneratedMessage
-        .ExtendableMessage<com.google.protobuf.DescriptorProtos.ServiceOptions>.ExtensionWriter extensionWriter =
-          newExtensionWriter();
+      com.google.protobuf.GeneratedMessageV3
+        .ExtendableMessage<com.google.protobuf.DescriptorProtos.ServiceOptions>.ExtensionWriter
+          extensionWriter = newExtensionWriter();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeBool(33, deprecated_);
@@ -23358,11 +30255,9 @@
       }
       extensionWriter.writeUntil(536870912, output);
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
@@ -23377,16 +30272,66 @@
       }
       size += extensionsSerializedSize();
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.ServiceOptions)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.ServiceOptions other = (com.google.protobuf.DescriptorProtos.ServiceOptions) obj;
+
+      boolean result = true;
+      result = result && (hasDeprecated() == other.hasDeprecated());
+      if (hasDeprecated()) {
+        result = result && (getDeprecated()
+            == other.getDeprecated());
+      }
+      result = result && getUninterpretedOptionList()
+          .equals(other.getUninterpretedOptionList());
+      result = result && unknownFields.equals(other.unknownFields);
+      result = result &&
+          getExtensionFields().equals(other.getExtensionFields());
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasDeprecated()) {
+        hash = (37 * hash) + DEPRECATED_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getDeprecated());
+      }
+      if (getUninterpretedOptionCount() > 0) {
+        hash = (37 * hash) + UNINTERPRETED_OPTION_FIELD_NUMBER;
+        hash = (53 * hash) + getUninterpretedOptionList().hashCode();
+      }
+      hash = hashFields(hash, getExtensionFields());
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
         com.google.protobuf.ByteString data)
@@ -23412,5 +30357,6 @@
     public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
@@ -23418,9 +30364,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.ServiceOptions parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.ServiceOptions parseDelimitedFrom(
@@ -23428,10 +30376,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
@@ -23439,19 +30389,23 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.ServiceOptions prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
@@ -23461,5 +30415,5 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
+        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
           com.google.protobuf.DescriptorProtos.ServiceOptions, Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.ServiceOptions)
@@ -23470,6 +30424,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_fieldAccessorTable
@@ -23484,19 +30437,15 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getUninterpretedOptionFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         deprecated_ = false;
@@ -23511,22 +30460,14 @@
       }
 
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.ServiceOptions getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.ServiceOptions getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.ServiceOptions build() {
+      public com.google.protobuf.DescriptorProtos.ServiceOptions build() {
         com.google.protobuf.DescriptorProtos.ServiceOptions result = buildPartial();
         if (!result.isInitialized()) {
@@ -23536,6 +30477,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.ServiceOptions buildPartial() {
+      public com.google.protobuf.DescriptorProtos.ServiceOptions buildPartial() {
         com.google.protobuf.DescriptorProtos.ServiceOptions result = new com.google.protobuf.DescriptorProtos.ServiceOptions(this);
         int from_bitField0_ = bitField0_;
@@ -23559,6 +30499,54 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.ServiceOptions, Type> extension,
+          Type value) {
+        return (Builder) super.setExtension(extension, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.ServiceOptions, java.util.List<Type>> extension,
+          int index, Type value) {
+        return (Builder) super.setExtension(extension, index, value);
+      }
+      public <Type> Builder addExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.ServiceOptions, java.util.List<Type>> extension,
+          Type value) {
+        return (Builder) super.addExtension(extension, value);
+      }
+      public <Type> Builder clearExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.ServiceOptions, ?> extension) {
+        return (Builder) super.clearExtension(extension);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.ServiceOptions) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.ServiceOptions)other);
@@ -23592,6 +30580,6 @@
               uninterpretedOption_ = other.uninterpretedOption_;
               bitField0_ = (bitField0_ & ~0x00000002);
-              uninterpretedOptionBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              uninterpretedOptionBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getUninterpretedOptionFieldBuilder() : null;
             } else {
@@ -23601,18 +30589,16 @@
         }
         this.mergeExtensionFields(other);
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         for (int i = 0; i < getUninterpretedOptionCount(); i++) {
           if (!getUninterpretedOption(i).isInitialized()) {
-
             return false;
           }
         }
         if (!extensionsAreInitialized()) {
-
           return false;
         }
@@ -23620,6 +30606,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -23630,5 +30615,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.ServiceOptions) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -23642,6 +30627,4 @@
       private boolean deprecated_ ;
       /**
-       * <code>optional bool deprecated = 33 [default = false];</code>
-       *
        * <pre>
        * Is this service deprecated?
@@ -23650,12 +30633,11 @@
        * this is a formalization for deprecating services.
        * </pre>
-       */
-      @Override
-	public boolean hasDeprecated() {
+       *
+       * <code>optional bool deprecated = 33 [default = false];</code>
+       */
+      public boolean hasDeprecated() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
       /**
-       * <code>optional bool deprecated = 33 [default = false];</code>
-       *
        * <pre>
        * Is this service deprecated?
@@ -23664,12 +30646,11 @@
        * this is a formalization for deprecating services.
        * </pre>
-       */
-      @Override
-	public boolean getDeprecated() {
+       *
+       * <code>optional bool deprecated = 33 [default = false];</code>
+       */
+      public boolean getDeprecated() {
         return deprecated_;
       }
       /**
-       * <code>optional bool deprecated = 33 [default = false];</code>
-       *
        * <pre>
        * Is this service deprecated?
@@ -23678,4 +30659,6 @@
        * this is a formalization for deprecating services.
        * </pre>
+       *
+       * <code>optional bool deprecated = 33 [default = false];</code>
        */
       public Builder setDeprecated(boolean value) {
@@ -23686,6 +30669,4 @@
       }
       /**
-       * <code>optional bool deprecated = 33 [default = false];</code>
-       *
        * <pre>
        * Is this service deprecated?
@@ -23694,4 +30675,6 @@
        * this is a formalization for deprecating services.
        * </pre>
+       *
+       * <code>optional bool deprecated = 33 [default = false];</code>
        */
       public Builder clearDeprecated() {
@@ -23706,21 +30689,20 @@
       private void ensureUninterpretedOptionIsMutable() {
         if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          uninterpretedOption_ = new java.util.ArrayList<>(uninterpretedOption_);
+          uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
           bitField0_ |= 0x00000002;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_;
 
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
         if (uninterpretedOptionBuilder_ == null) {
           return java.util.Collections.unmodifiableList(uninterpretedOption_);
@@ -23730,12 +30712,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public int getUninterpretedOptionCount() {
+       */
+      public int getUninterpretedOptionCount() {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.size();
@@ -23745,12 +30726,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.get(index);
@@ -23760,9 +30740,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -23781,9 +30761,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -23799,9 +30779,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
@@ -23819,9 +30799,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -23840,9 +30820,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -23858,9 +30838,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -23876,9 +30856,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addAllUninterpretedOption(
@@ -23895,9 +30875,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder clearUninterpretedOption() {
@@ -23912,9 +30892,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder removeUninterpretedOption(int index) {
@@ -23929,9 +30909,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder(
@@ -23940,12 +30920,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
           int index) {
         if (uninterpretedOptionBuilder_ == null) {
@@ -23955,12 +30934,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
            getUninterpretedOptionOrBuilderList() {
         if (uninterpretedOptionBuilder_ != null) {
@@ -23971,9 +30949,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() {
@@ -23982,9 +30960,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder(
@@ -23994,19 +30972,20 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> 
            getUninterpretedOptionBuilderList() {
         return getUninterpretedOptionFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
           getUninterpretedOptionFieldBuilder() {
         if (uninterpretedOptionBuilder_ == null) {
-          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
                   ((bitField0_ & 0x00000002) == 0x00000002),
@@ -24017,24 +30996,59 @@
         return uninterpretedOptionBuilder_;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.ServiceOptions)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.ServiceOptions)
+    private static final com.google.protobuf.DescriptorProtos.ServiceOptions DEFAULT_INSTANCE;
     static {
-      defaultInstance = new ServiceOptions(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.ServiceOptions)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.ServiceOptions();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.ServiceOptions getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<ServiceOptions>
+        PARSER = new com.google.protobuf.AbstractParser<ServiceOptions>() {
+      public ServiceOptions parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new ServiceOptions(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<ServiceOptions> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ServiceOptions> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.ServiceOptions getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
   public interface MethodOptionsOrBuilder extends
       // @@protoc_insertion_point(interface_extends:google.protobuf.MethodOptions)
-      com.google.protobuf.GeneratedMessage.
+      com.google.protobuf.GeneratedMessageV3.
           ExtendableMessageOrBuilder<MethodOptions> {
 
     /**
-     * <code>optional bool deprecated = 33 [default = false];</code>
-     *
      * <pre>
      * Is this method deprecated?
@@ -24043,9 +31057,9 @@
      * this is a formalization for deprecating methods.
      * </pre>
+     *
+     * <code>optional bool deprecated = 33 [default = false];</code>
      */
     boolean hasDeprecated();
     /**
-     * <code>optional bool deprecated = 33 [default = false];</code>
-     *
      * <pre>
      * Is this method deprecated?
@@ -24054,47 +31068,58 @@
      * this is a formalization for deprecating methods.
      * </pre>
+     *
+     * <code>optional bool deprecated = 33 [default = false];</code>
      */
     boolean getDeprecated();
 
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
+     * <code>optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];</code>
+     */
+    boolean hasIdempotencyLevel();
+    /**
+     * <code>optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];</code>
+     */
+    com.google.protobuf.DescriptorProtos.MethodOptions.IdempotencyLevel getIdempotencyLevel();
+
+    /**
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> 
         getUninterpretedOptionList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     int getUninterpretedOptionCount();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList();
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
      */
     com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
@@ -24104,30 +31129,23 @@
    * Protobuf type {@code google.protobuf.MethodOptions}
    */
-  public static final class MethodOptions extends
-      com.google.protobuf.GeneratedMessage.ExtendableMessage<
+  public  static final class MethodOptions extends
+      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
         MethodOptions> implements
       // @@protoc_insertion_point(message_implements:google.protobuf.MethodOptions)
       MethodOptionsOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use MethodOptions.newBuilder() to construct.
-    private MethodOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder<com.google.protobuf.DescriptorProtos.MethodOptions, ?> builder) {
+    private MethodOptions(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<com.google.protobuf.DescriptorProtos.MethodOptions, ?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private MethodOptions(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final MethodOptions defaultInstance;
-    public static MethodOptions getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public MethodOptions getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private MethodOptions() {
+      deprecated_ = false;
+      idempotencyLevel_ = 0;
+      uninterpretedOption_ = java.util.Collections.emptyList();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -24136,5 +31154,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -24149,6 +31167,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -24160,10 +31178,22 @@
               break;
             }
+            case 272: {
+              int rawValue = input.readEnum();
+              com.google.protobuf.DescriptorProtos.MethodOptions.IdempotencyLevel value = com.google.protobuf.DescriptorProtos.MethodOptions.IdempotencyLevel.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(34, rawValue);
+              } else {
+                bitField0_ |= 0x00000002;
+                idempotencyLevel_ = rawValue;
+              }
+              break;
+            }
             case 7994: {
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                uninterpretedOption_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000002;
+              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
+                mutable_bitField0_ |= 0x00000004;
               }
-              uninterpretedOption_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
+              uninterpretedOption_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
               break;
             }
@@ -24174,7 +31204,7 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
           uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
         }
@@ -24188,6 +31218,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodOptions_fieldAccessorTable
@@ -24196,18 +31225,123 @@
     }
 
-    public static com.google.protobuf.Parser<MethodOptions> PARSER =
-        new com.google.protobuf.AbstractParser<MethodOptions>() {
-      @Override
-	public MethodOptions parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new MethodOptions(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<MethodOptions> getParserForType() {
-      return PARSER;
+    /**
+     * <pre>
+     * Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
+     * or neither? HTTP based RPC implementation may choose GET verb for safe
+     * methods, and PUT verb for idempotent methods instead of the default POST.
+     * </pre>
+     *
+     * Protobuf enum {@code google.protobuf.MethodOptions.IdempotencyLevel}
+     */
+    public enum IdempotencyLevel
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>IDEMPOTENCY_UNKNOWN = 0;</code>
+       */
+      IDEMPOTENCY_UNKNOWN(0),
+      /**
+       * <pre>
+       * implies idempotent
+       * </pre>
+       *
+       * <code>NO_SIDE_EFFECTS = 1;</code>
+       */
+      NO_SIDE_EFFECTS(1),
+      /**
+       * <pre>
+       * idempotent, but may have side effects
+       * </pre>
+       *
+       * <code>IDEMPOTENT = 2;</code>
+       */
+      IDEMPOTENT(2),
+      ;
+
+      /**
+       * <code>IDEMPOTENCY_UNKNOWN = 0;</code>
+       */
+      public static final int IDEMPOTENCY_UNKNOWN_VALUE = 0;
+      /**
+       * <pre>
+       * implies idempotent
+       * </pre>
+       *
+       * <code>NO_SIDE_EFFECTS = 1;</code>
+       */
+      public static final int NO_SIDE_EFFECTS_VALUE = 1;
+      /**
+       * <pre>
+       * idempotent, but may have side effects
+       * </pre>
+       *
+       * <code>IDEMPOTENT = 2;</code>
+       */
+      public static final int IDEMPOTENT_VALUE = 2;
+
+
+      public final int getNumber() {
+        return value;
+      }
+
+      /**
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
+      public static IdempotencyLevel valueOf(int value) {
+        return forNumber(value);
+      }
+
+      public static IdempotencyLevel forNumber(int value) {
+        switch (value) {
+          case 0: return IDEMPOTENCY_UNKNOWN;
+          case 1: return NO_SIDE_EFFECTS;
+          case 2: return IDEMPOTENT;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<IdempotencyLevel>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static final com.google.protobuf.Internal.EnumLiteMap<
+          IdempotencyLevel> internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<IdempotencyLevel>() {
+              public IdempotencyLevel findValueByNumber(int number) {
+                return IdempotencyLevel.forNumber(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(ordinal());
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return com.google.protobuf.DescriptorProtos.MethodOptions.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final IdempotencyLevel[] VALUES = values();
+
+      public static IdempotencyLevel valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int value;
+
+      private IdempotencyLevel(int value) {
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:google.protobuf.MethodOptions.IdempotencyLevel)
     }
 
@@ -24216,6 +31350,4 @@
     private boolean deprecated_;
     /**
-     * <code>optional bool deprecated = 33 [default = false];</code>
-     *
      * <pre>
      * Is this method deprecated?
@@ -24224,12 +31356,11 @@
      * this is a formalization for deprecating methods.
      * </pre>
-     */
-    @Override
-	public boolean hasDeprecated() {
+     *
+     * <code>optional bool deprecated = 33 [default = false];</code>
+     */
+    public boolean hasDeprecated() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
     /**
-     * <code>optional bool deprecated = 33 [default = false];</code>
-     *
      * <pre>
      * Is this method deprecated?
@@ -24238,8 +31369,25 @@
      * this is a formalization for deprecating methods.
      * </pre>
-     */
-    @Override
-	public boolean getDeprecated() {
+     *
+     * <code>optional bool deprecated = 33 [default = false];</code>
+     */
+    public boolean getDeprecated() {
       return deprecated_;
+    }
+
+    public static final int IDEMPOTENCY_LEVEL_FIELD_NUMBER = 34;
+    private int idempotencyLevel_;
+    /**
+     * <code>optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];</code>
+     */
+    public boolean hasIdempotencyLevel() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];</code>
+     */
+    public com.google.protobuf.DescriptorProtos.MethodOptions.IdempotencyLevel getIdempotencyLevel() {
+      com.google.protobuf.DescriptorProtos.MethodOptions.IdempotencyLevel result = com.google.protobuf.DescriptorProtos.MethodOptions.IdempotencyLevel.valueOf(idempotencyLevel_);
+      return result == null ? com.google.protobuf.DescriptorProtos.MethodOptions.IdempotencyLevel.IDEMPOTENCY_UNKNOWN : result;
     }
 
@@ -24247,68 +31395,58 @@
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
         getUninterpretedOptionOrBuilderList() {
       return uninterpretedOption_;
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public int getUninterpretedOptionCount() {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public int getUninterpretedOptionCount() {
       return uninterpretedOption_.size();
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
       return uninterpretedOption_.get(index);
     }
     /**
-     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-     *
      * <pre>
      * The parser stores options it doesn't recognize here. See above.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+     *
+     * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
         int index) {
       return uninterpretedOption_.get(index);
     }
 
-    private void initFields() {
-      deprecated_ = false;
-      uninterpretedOption_ = java.util.Collections.emptyList();
-    }
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -24329,25 +31467,24 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
-      com.google.protobuf.GeneratedMessage
-        .ExtendableMessage<com.google.protobuf.DescriptorProtos.MethodOptions>.ExtensionWriter extensionWriter =
-          newExtensionWriter();
+      com.google.protobuf.GeneratedMessageV3
+        .ExtendableMessage<com.google.protobuf.DescriptorProtos.MethodOptions>.ExtensionWriter
+          extensionWriter = newExtensionWriter();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeBool(33, deprecated_);
       }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeEnum(34, idempotencyLevel_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         output.writeMessage(999, uninterpretedOption_.get(i));
       }
       extensionWriter.writeUntil(536870912, output);
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
@@ -24357,4 +31494,8 @@
           .computeBoolSize(33, deprecated_);
       }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(34, idempotencyLevel_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
@@ -24362,16 +31503,74 @@
       }
       size += extensionsSerializedSize();
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.MethodOptions)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.MethodOptions other = (com.google.protobuf.DescriptorProtos.MethodOptions) obj;
+
+      boolean result = true;
+      result = result && (hasDeprecated() == other.hasDeprecated());
+      if (hasDeprecated()) {
+        result = result && (getDeprecated()
+            == other.getDeprecated());
+      }
+      result = result && (hasIdempotencyLevel() == other.hasIdempotencyLevel());
+      if (hasIdempotencyLevel()) {
+        result = result && idempotencyLevel_ == other.idempotencyLevel_;
+      }
+      result = result && getUninterpretedOptionList()
+          .equals(other.getUninterpretedOptionList());
+      result = result && unknownFields.equals(other.unknownFields);
+      result = result &&
+          getExtensionFields().equals(other.getExtensionFields());
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasDeprecated()) {
+        hash = (37 * hash) + DEPRECATED_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getDeprecated());
+      }
+      if (hasIdempotencyLevel()) {
+        hash = (37 * hash) + IDEMPOTENCY_LEVEL_FIELD_NUMBER;
+        hash = (53 * hash) + idempotencyLevel_;
+      }
+      if (getUninterpretedOptionCount() > 0) {
+        hash = (37 * hash) + UNINTERPRETED_OPTION_FIELD_NUMBER;
+        hash = (53 * hash) + getUninterpretedOptionList().hashCode();
+      }
+      hash = hashFields(hash, getExtensionFields());
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(
         com.google.protobuf.ByteString data)
@@ -24397,5 +31596,6 @@
     public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(
@@ -24403,9 +31603,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.MethodOptions parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.MethodOptions parseDelimitedFrom(
@@ -24413,10 +31615,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(
@@ -24424,19 +31628,23 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.MethodOptions prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
@@ -24446,5 +31654,5 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
+        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
           com.google.protobuf.DescriptorProtos.MethodOptions, Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.MethodOptions)
@@ -24455,6 +31663,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodOptions_fieldAccessorTable
@@ -24469,25 +31676,23 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getUninterpretedOptionFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         deprecated_ = false;
         bitField0_ = (bitField0_ & ~0x00000001);
+        idempotencyLevel_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000002);
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
+          bitField0_ = (bitField0_ & ~0x00000004);
         } else {
           uninterpretedOptionBuilder_.clear();
@@ -24496,22 +31701,14 @@
       }
 
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodOptions_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.MethodOptions getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.MethodOptions getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.MethodOptions build() {
+      public com.google.protobuf.DescriptorProtos.MethodOptions build() {
         com.google.protobuf.DescriptorProtos.MethodOptions result = buildPartial();
         if (!result.isInitialized()) {
@@ -24521,6 +31718,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.MethodOptions buildPartial() {
+      public com.google.protobuf.DescriptorProtos.MethodOptions buildPartial() {
         com.google.protobuf.DescriptorProtos.MethodOptions result = new com.google.protobuf.DescriptorProtos.MethodOptions(this);
         int from_bitField0_ = bitField0_;
@@ -24530,8 +31726,12 @@
         }
         result.deprecated_ = deprecated_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.idempotencyLevel_ = idempotencyLevel_;
         if (uninterpretedOptionBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
             uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
-            bitField0_ = (bitField0_ & ~0x00000002);
+            bitField0_ = (bitField0_ & ~0x00000004);
           }
           result.uninterpretedOption_ = uninterpretedOption_;
@@ -24544,6 +31744,54 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.MethodOptions, Type> extension,
+          Type value) {
+        return (Builder) super.setExtension(extension, value);
+      }
+      public <Type> Builder setExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.MethodOptions, java.util.List<Type>> extension,
+          int index, Type value) {
+        return (Builder) super.setExtension(extension, index, value);
+      }
+      public <Type> Builder addExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.MethodOptions, java.util.List<Type>> extension,
+          Type value) {
+        return (Builder) super.addExtension(extension, value);
+      }
+      public <Type> Builder clearExtension(
+          com.google.protobuf.GeneratedMessage.GeneratedExtension<
+              com.google.protobuf.DescriptorProtos.MethodOptions, ?> extension) {
+        return (Builder) super.clearExtension(extension);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.MethodOptions) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.MethodOptions)other);
@@ -24559,9 +31807,12 @@
           setDeprecated(other.getDeprecated());
         }
+        if (other.hasIdempotencyLevel()) {
+          setIdempotencyLevel(other.getIdempotencyLevel());
+        }
         if (uninterpretedOptionBuilder_ == null) {
           if (!other.uninterpretedOption_.isEmpty()) {
             if (uninterpretedOption_.isEmpty()) {
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000002);
+              bitField0_ = (bitField0_ & ~0x00000004);
             } else {
               ensureUninterpretedOptionIsMutable();
@@ -24576,7 +31827,7 @@
               uninterpretedOptionBuilder_ = null;
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              uninterpretedOptionBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              bitField0_ = (bitField0_ & ~0x00000004);
+              uninterpretedOptionBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getUninterpretedOptionFieldBuilder() : null;
             } else {
@@ -24586,18 +31837,16 @@
         }
         this.mergeExtensionFields(other);
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         for (int i = 0; i < getUninterpretedOptionCount(); i++) {
           if (!getUninterpretedOption(i).isInitialized()) {
-
             return false;
           }
         }
         if (!extensionsAreInitialized()) {
-
           return false;
         }
@@ -24605,6 +31854,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -24615,5 +31863,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.MethodOptions) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -24627,6 +31875,4 @@
       private boolean deprecated_ ;
       /**
-       * <code>optional bool deprecated = 33 [default = false];</code>
-       *
        * <pre>
        * Is this method deprecated?
@@ -24635,12 +31881,11 @@
        * this is a formalization for deprecating methods.
        * </pre>
-       */
-      @Override
-	public boolean hasDeprecated() {
+       *
+       * <code>optional bool deprecated = 33 [default = false];</code>
+       */
+      public boolean hasDeprecated() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
       /**
-       * <code>optional bool deprecated = 33 [default = false];</code>
-       *
        * <pre>
        * Is this method deprecated?
@@ -24649,12 +31894,11 @@
        * this is a formalization for deprecating methods.
        * </pre>
-       */
-      @Override
-	public boolean getDeprecated() {
+       *
+       * <code>optional bool deprecated = 33 [default = false];</code>
+       */
+      public boolean getDeprecated() {
         return deprecated_;
       }
       /**
-       * <code>optional bool deprecated = 33 [default = false];</code>
-       *
        * <pre>
        * Is this method deprecated?
@@ -24663,4 +31907,6 @@
        * this is a formalization for deprecating methods.
        * </pre>
+       *
+       * <code>optional bool deprecated = 33 [default = false];</code>
        */
       public Builder setDeprecated(boolean value) {
@@ -24671,6 +31917,4 @@
       }
       /**
-       * <code>optional bool deprecated = 33 [default = false];</code>
-       *
        * <pre>
        * Is this method deprecated?
@@ -24679,4 +31923,6 @@
        * this is a formalization for deprecating methods.
        * </pre>
+       *
+       * <code>optional bool deprecated = 33 [default = false];</code>
        */
       public Builder clearDeprecated() {
@@ -24687,25 +31933,60 @@
       }
 
+      private int idempotencyLevel_ = 0;
+      /**
+       * <code>optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];</code>
+       */
+      public boolean hasIdempotencyLevel() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];</code>
+       */
+      public com.google.protobuf.DescriptorProtos.MethodOptions.IdempotencyLevel getIdempotencyLevel() {
+        com.google.protobuf.DescriptorProtos.MethodOptions.IdempotencyLevel result = com.google.protobuf.DescriptorProtos.MethodOptions.IdempotencyLevel.valueOf(idempotencyLevel_);
+        return result == null ? com.google.protobuf.DescriptorProtos.MethodOptions.IdempotencyLevel.IDEMPOTENCY_UNKNOWN : result;
+      }
+      /**
+       * <code>optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];</code>
+       */
+      public Builder setIdempotencyLevel(com.google.protobuf.DescriptorProtos.MethodOptions.IdempotencyLevel value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000002;
+        idempotencyLevel_ = value.getNumber();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];</code>
+       */
+      public Builder clearIdempotencyLevel() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        idempotencyLevel_ = 0;
+        onChanged();
+        return this;
+      }
+
       private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
         java.util.Collections.emptyList();
       private void ensureUninterpretedOptionIsMutable() {
-        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          uninterpretedOption_ = new java.util.ArrayList<>(uninterpretedOption_);
-          bitField0_ |= 0x00000002;
+        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+          uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
+          bitField0_ |= 0x00000004;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_;
 
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
         if (uninterpretedOptionBuilder_ == null) {
           return java.util.Collections.unmodifiableList(uninterpretedOption_);
@@ -24715,12 +31996,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public int getUninterpretedOptionCount() {
+       */
+      public int getUninterpretedOptionCount() {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.size();
@@ -24730,12 +32010,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
         if (uninterpretedOptionBuilder_ == null) {
           return uninterpretedOption_.get(index);
@@ -24745,9 +32024,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -24766,9 +32045,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder setUninterpretedOption(
@@ -24784,9 +32063,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
@@ -24804,9 +32083,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -24825,9 +32104,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -24843,9 +32122,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addUninterpretedOption(
@@ -24861,9 +32140,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder addAllUninterpretedOption(
@@ -24880,14 +32159,14 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder clearUninterpretedOption() {
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
+          bitField0_ = (bitField0_ & ~0x00000004);
           onChanged();
         } else {
@@ -24897,9 +32176,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public Builder removeUninterpretedOption(int index) {
@@ -24914,9 +32193,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder(
@@ -24925,12 +32204,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+       */
+      public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
           int index) {
         if (uninterpretedOptionBuilder_ == null) {
@@ -24940,12 +32218,11 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
            getUninterpretedOptionOrBuilderList() {
         if (uninterpretedOptionBuilder_ != null) {
@@ -24956,9 +32233,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() {
@@ -24967,9 +32244,9 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
        */
       public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder(
@@ -24979,21 +32256,22 @@
       }
       /**
+       * <pre>
+       * The parser stores options it doesn't recognize here. See above.
+       * </pre>
+       *
        * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
-       *
-       * <pre>
-       * The parser stores options it doesn't recognize here. See above.
-       * </pre>
-       */
-      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> 
            getUninterpretedOptionBuilderList() {
         return getUninterpretedOptionFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
           getUninterpretedOptionFieldBuilder() {
         if (uninterpretedOptionBuilder_ == null) {
-          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
-                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  ((bitField0_ & 0x00000004) == 0x00000004),
                   getParentForChildren(),
                   isClean());
@@ -25002,14 +32280,51 @@
         return uninterpretedOptionBuilder_;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.MethodOptions)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.MethodOptions)
+    private static final com.google.protobuf.DescriptorProtos.MethodOptions DEFAULT_INSTANCE;
     static {
-      defaultInstance = new MethodOptions(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.MethodOptions)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.MethodOptions();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.MethodOptions getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<MethodOptions>
+        PARSER = new com.google.protobuf.AbstractParser<MethodOptions>() {
+      public MethodOptions parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new MethodOptions(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<MethodOptions> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<MethodOptions> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.MethodOptions getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
@@ -25021,5 +32336,5 @@
      * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
      */
-    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart>
+    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> 
         getNameList();
     /**
@@ -25034,5 +32349,5 @@
      * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
      */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder>
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder> 
         getNameOrBuilderList();
     /**
@@ -25043,28 +32358,28 @@
 
     /**
-     * <code>optional string identifier_value = 3;</code>
-     *
      * <pre>
      * The value of the uninterpreted option, in whatever type the tokenizer
      * identified it as during parsing. Exactly one of these should be set.
      * </pre>
+     *
+     * <code>optional string identifier_value = 3;</code>
      */
     boolean hasIdentifierValue();
     /**
-     * <code>optional string identifier_value = 3;</code>
-     *
      * <pre>
      * The value of the uninterpreted option, in whatever type the tokenizer
      * identified it as during parsing. Exactly one of these should be set.
      * </pre>
+     *
+     * <code>optional string identifier_value = 3;</code>
      */
     java.lang.String getIdentifierValue();
     /**
-     * <code>optional string identifier_value = 3;</code>
-     *
      * <pre>
      * The value of the uninterpreted option, in whatever type the tokenizer
      * identified it as during parsing. Exactly one of these should be set.
      * </pre>
+     *
+     * <code>optional string identifier_value = 3;</code>
      */
     com.google.protobuf.ByteString
@@ -25122,6 +32437,4 @@
   }
   /**
-   * Protobuf type {@code google.protobuf.UninterpretedOption}
-   *
    * <pre>
    * A message representing a option the parser does not recognize. This only
@@ -25132,30 +32445,29 @@
    * in them.
    * </pre>
+   *
+   * Protobuf type {@code google.protobuf.UninterpretedOption}
    */
-  public static final class UninterpretedOption extends
-      com.google.protobuf.GeneratedMessage implements
+  public  static final class UninterpretedOption extends
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:google.protobuf.UninterpretedOption)
       UninterpretedOptionOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use UninterpretedOption.newBuilder() to construct.
-    private UninterpretedOption(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+    private UninterpretedOption(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private UninterpretedOption(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final UninterpretedOption defaultInstance;
-    public static UninterpretedOption getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public UninterpretedOption getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private UninterpretedOption() {
+      name_ = java.util.Collections.emptyList();
+      identifierValue_ = "";
+      positiveIntValue_ = 0L;
+      negativeIntValue_ = 0L;
+      doubleValue_ = 0D;
+      stringValue_ = com.google.protobuf.ByteString.EMPTY;
+      aggregateValue_ = "";
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -25164,5 +32476,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -25177,6 +32489,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -25185,8 +32497,9 @@
             case 18: {
               if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-                name_ = new java.util.ArrayList<>();
+                name_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              name_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.PARSER, extensionRegistry));
+              name_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.PARSER, extensionRegistry));
               break;
             }
@@ -25229,5 +32542,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
@@ -25243,6 +32556,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable
@@ -25251,20 +32563,4 @@
     }
 
-    public static com.google.protobuf.Parser<UninterpretedOption> PARSER =
-        new com.google.protobuf.AbstractParser<UninterpretedOption>() {
-      @Override
-	public UninterpretedOption parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new UninterpretedOption(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<UninterpretedOption> getParserForType() {
-      return PARSER;
-    }
-
     public interface NamePartOrBuilder extends
         // @@protoc_insertion_point(interface_extends:google.protobuf.UninterpretedOption.NamePart)
@@ -25295,6 +32591,4 @@
     }
     /**
-     * Protobuf type {@code google.protobuf.UninterpretedOption.NamePart}
-     *
      * <pre>
      * The name of the uninterpreted option.  Each string represents a segment in
@@ -25304,30 +32598,24 @@
      * "foo.(bar.baz).qux".
      * </pre>
-     */
-    public static final class NamePart extends
-        com.google.protobuf.GeneratedMessage implements
+     *
+     * Protobuf type {@code google.protobuf.UninterpretedOption.NamePart}
+     */
+    public  static final class NamePart extends
+        com.google.protobuf.GeneratedMessageV3 implements
         // @@protoc_insertion_point(message_implements:google.protobuf.UninterpretedOption.NamePart)
         NamePartOrBuilder {
+    private static final long serialVersionUID = 0L;
       // Use NamePart.newBuilder() to construct.
-      private NamePart(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      private NamePart(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
         super(builder);
-        this.unknownFields = builder.getUnknownFields();
-      }
-      private NamePart(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-      private static final NamePart defaultInstance;
-      public static NamePart getDefaultInstance() {
-        return defaultInstance;
-      }
-
-      @Override
-	public NamePart getDefaultInstanceForType() {
-        return defaultInstance;
-      }
-
-      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      }
+      private NamePart() {
+        namePart_ = "";
+        isExtension_ = false;
+      }
+
       @java.lang.Override
       public final com.google.protobuf.UnknownFieldSet
-          getUnknownFields() {
+      getUnknownFields() {
         return this.unknownFields;
       }
@@ -25336,5 +32624,5 @@
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        initFields();
+        this();
         int mutable_bitField0_ = 0;
         com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -25349,6 +32637,6 @@
                 break;
               default: {
-                if (!parseUnknownField(input, unknownFields,
-                                       extensionRegistry, tag)) {
+                if (!parseUnknownField(
+                    input, unknownFields, extensionRegistry, tag)) {
                   done = true;
                 }
@@ -25372,5 +32660,5 @@
         } catch (java.io.IOException e) {
           throw new com.google.protobuf.InvalidProtocolBufferException(
-              e.getMessage()).setUnfinishedMessage(this);
+              e).setUnfinishedMessage(this);
         } finally {
           this.unknownFields = unknownFields.build();
@@ -25383,6 +32671,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable
@@ -25391,28 +32678,11 @@
       }
 
-      public static com.google.protobuf.Parser<NamePart> PARSER =
-          new com.google.protobuf.AbstractParser<NamePart>() {
-        @Override
-		public NamePart parsePartialFrom(
-            com.google.protobuf.CodedInputStream input,
-            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-            throws com.google.protobuf.InvalidProtocolBufferException {
-          return new NamePart(input, extensionRegistry);
-        }
-      };
-
-      @java.lang.Override
-      public com.google.protobuf.Parser<NamePart> getParserForType() {
-        return PARSER;
-      }
-
       private int bitField0_;
       public static final int NAME_PART_FIELD_NUMBER = 1;
-      private java.lang.Object namePart_;
+      private volatile java.lang.Object namePart_;
       /**
        * <code>required string name_part = 1;</code>
        */
-      @Override
-	public boolean hasNamePart() {
+      public boolean hasNamePart() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
@@ -25420,11 +32690,10 @@
        * <code>required string name_part = 1;</code>
        */
-      @Override
-	public java.lang.String getNamePart() {
+      public java.lang.String getNamePart() {
         java.lang.Object ref = namePart_;
         if (ref instanceof java.lang.String) {
           return (java.lang.String) ref;
         } else {
-          com.google.protobuf.ByteString bs =
+          com.google.protobuf.ByteString bs = 
               (com.google.protobuf.ByteString) ref;
           java.lang.String s = bs.toStringUtf8();
@@ -25438,10 +32707,9 @@
        * <code>required string name_part = 1;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getNamePartBytes() {
         java.lang.Object ref = namePart_;
         if (ref instanceof java.lang.String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -25458,6 +32726,5 @@
        * <code>required bool is_extension = 2;</code>
        */
-      @Override
-	public boolean hasIsExtension() {
+      public boolean hasIsExtension() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
@@ -25465,16 +32732,10 @@
        * <code>required bool is_extension = 2;</code>
        */
-      @Override
-	public boolean getIsExtension() {
+      public boolean getIsExtension() {
         return isExtension_;
       }
 
-      private void initFields() {
-        namePart_ = "";
-        isExtension_ = false;
-      }
       private byte memoizedIsInitialized = -1;
-      @Override
-	public final boolean isInitialized() {
+      public final boolean isInitialized() {
         byte isInitialized = memoizedIsInitialized;
         if (isInitialized == 1) return true;
@@ -25493,27 +32754,22 @@
       }
 
-      @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
                           throws java.io.IOException {
-        getSerializedSize();
         if (((bitField0_ & 0x00000001) == 0x00000001)) {
-          output.writeBytes(1, getNamePartBytes());
+          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, namePart_);
         }
         if (((bitField0_ & 0x00000002) == 0x00000002)) {
           output.writeBool(2, isExtension_);
         }
-        getUnknownFields().writeTo(output);
-      }
-
-      private int memoizedSerializedSize = -1;
-      @Override
-	public int getSerializedSize() {
-        int size = memoizedSerializedSize;
+        unknownFields.writeTo(output);
+      }
+
+      public int getSerializedSize() {
+        int size = memoizedSize;
         if (size != -1) return size;
 
         size = 0;
         if (((bitField0_ & 0x00000001) == 0x00000001)) {
-          size += com.google.protobuf.CodedOutputStream
-            .computeBytesSize(1, getNamePartBytes());
+          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, namePart_);
         }
         if (((bitField0_ & 0x00000002) == 0x00000002)) {
@@ -25521,16 +32777,66 @@
             .computeBoolSize(2, isExtension_);
         }
-        size += getUnknownFields().getSerializedSize();
-        memoizedSerializedSize = size;
+        size += unknownFields.getSerializedSize();
+        memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+        if (obj == this) {
+         return true;
+        }
+        if (!(obj instanceof com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart)) {
+          return super.equals(obj);
+        }
+        com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart other = (com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart) obj;
+
+        boolean result = true;
+        result = result && (hasNamePart() == other.hasNamePart());
+        if (hasNamePart()) {
+          result = result && getNamePart()
+              .equals(other.getNamePart());
+        }
+        result = result && (hasIsExtension() == other.hasIsExtension());
+        if (hasIsExtension()) {
+          result = result && (getIsExtension()
+              == other.getIsExtension());
+        }
+        result = result && unknownFields.equals(other.unknownFields);
+        return result;
+      }
+
+      @java.lang.Override
+      public int hashCode() {
+        if (memoizedHashCode != 0) {
+          return memoizedHashCode;
+        }
+        int hash = 41;
+        hash = (19 * hash) + getDescriptor().hashCode();
+        if (hasNamePart()) {
+          hash = (37 * hash) + NAME_PART_FIELD_NUMBER;
+          hash = (53 * hash) + getNamePart().hashCode();
+        }
+        if (hasIsExtension()) {
+          hash = (37 * hash) + IS_EXTENSION_FIELD_NUMBER;
+          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+              getIsExtension());
+        }
+        hash = (29 * hash) + unknownFields.hashCode();
+        memoizedHashCode = hash;
+        return hash;
+      }
+
+      public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(
+          java.nio.ByteBuffer data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(
+          java.nio.ByteBuffer data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
       public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(
           com.google.protobuf.ByteString data)
@@ -25556,5 +32862,6 @@
       public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return PARSER.parseFrom(input);
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input);
       }
       public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(
@@ -25562,9 +32869,11 @@
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return PARSER.parseFrom(input, extensionRegistry);
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input, extensionRegistry);
       }
       public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseDelimitedFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return PARSER.parseDelimitedFrom(input);
+        return com.google.protobuf.GeneratedMessageV3
+            .parseDelimitedWithIOException(PARSER, input);
       }
       public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseDelimitedFrom(
@@ -25572,10 +32881,12 @@
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        return com.google.protobuf.GeneratedMessageV3
+            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
       }
       public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(
           com.google.protobuf.CodedInputStream input)
           throws java.io.IOException {
-        return PARSER.parseFrom(input);
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input);
       }
       public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(
@@ -25583,25 +32894,27 @@
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return PARSER.parseFrom(input, extensionRegistry);
-      }
-
-      public static Builder newBuilder() { return Builder.create(); }
-      @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder() {
+        return DEFAULT_INSTANCE.toBuilder();
+      }
       public static Builder newBuilder(com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart prototype) {
-        return newBuilder().mergeFrom(prototype);
-      }
-      @Override
-	public Builder toBuilder() { return newBuilder(this); }
+        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() {
+        return this == DEFAULT_INSTANCE
+            ? new Builder() : new Builder().mergeFrom(this);
+      }
 
       @java.lang.Override
       protected Builder newBuilderForType(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         Builder builder = new Builder(parent);
         return builder;
       }
       /**
-       * Protobuf type {@code google.protobuf.UninterpretedOption.NamePart}
-       *
        * <pre>
        * The name of the uninterpreted option.  Each string represents a segment in
@@ -25611,7 +32924,9 @@
        * "foo.(bar.baz).qux".
        * </pre>
+       *
+       * Protobuf type {@code google.protobuf.UninterpretedOption.NamePart}
        */
       public static final class Builder extends
-          com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
           // @@protoc_insertion_point(builder_implements:google.protobuf.UninterpretedOption.NamePart)
           com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder {
@@ -25621,6 +32936,5 @@
         }
 
-        @Override
-		protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
             internalGetFieldAccessorTable() {
           return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable
@@ -25635,18 +32949,14 @@
 
         private Builder(
-            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
           super(parent);
           maybeForceBuilderInitialization();
         }
         private void maybeForceBuilderInitialization() {
-          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          if (com.google.protobuf.GeneratedMessageV3
+                  .alwaysUseFieldBuilders) {
           }
         }
-        private static Builder create() {
-          return new Builder();
-        }
-
-        @Override
-		public Builder clear() {
+        public Builder clear() {
           super.clear();
           namePart_ = "";
@@ -25657,22 +32967,14 @@
         }
 
-        @Override
-		public Builder clone() {
-          return create().mergeFrom(buildPartial());
-        }
-
-        @Override
-		public com.google.protobuf.Descriptors.Descriptor
+        public com.google.protobuf.Descriptors.Descriptor
             getDescriptorForType() {
           return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor;
         }
 
-        @Override
-		public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getDefaultInstanceForType() {
+        public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getDefaultInstanceForType() {
           return com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.getDefaultInstance();
         }
 
-        @Override
-		public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart build() {
+        public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart build() {
           com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart result = buildPartial();
           if (!result.isInitialized()) {
@@ -25682,6 +32984,5 @@
         }
 
-        @Override
-		public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart buildPartial() {
+        public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart buildPartial() {
           com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart result = new com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart(this);
           int from_bitField0_ = bitField0_;
@@ -25700,6 +33001,31 @@
         }
 
-        @Override
-		public Builder mergeFrom(com.google.protobuf.Message other) {
+        public Builder clone() {
+          return (Builder) super.clone();
+        }
+        public Builder setField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            java.lang.Object value) {
+          return (Builder) super.setField(field, value);
+        }
+        public Builder clearField(
+            com.google.protobuf.Descriptors.FieldDescriptor field) {
+          return (Builder) super.clearField(field);
+        }
+        public Builder clearOneof(
+            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+          return (Builder) super.clearOneof(oneof);
+        }
+        public Builder setRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            int index, java.lang.Object value) {
+          return (Builder) super.setRepeatedField(field, index, value);
+        }
+        public Builder addRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            java.lang.Object value) {
+          return (Builder) super.addRepeatedField(field, value);
+        }
+        public Builder mergeFrom(com.google.protobuf.Message other) {
           if (other instanceof com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart) {
             return mergeFrom((com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart)other);
@@ -25720,16 +33046,14 @@
             setIsExtension(other.getIsExtension());
           }
-          this.mergeUnknownFields(other.getUnknownFields());
+          this.mergeUnknownFields(other.unknownFields);
+          onChanged();
           return this;
         }
 
-        @Override
-		public final boolean isInitialized() {
+        public final boolean isInitialized() {
           if (!hasNamePart()) {
-
             return false;
           }
           if (!hasIsExtension()) {
-
             return false;
           }
@@ -25737,6 +33061,5 @@
         }
 
-        @Override
-		public Builder mergeFrom(
+        public Builder mergeFrom(
             com.google.protobuf.CodedInputStream input,
             com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -25747,5 +33070,5 @@
           } catch (com.google.protobuf.InvalidProtocolBufferException e) {
             parsedMessage = (com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart) e.getUnfinishedMessage();
-            throw e;
+            throw e.unwrapIOException();
           } finally {
             if (parsedMessage != null) {
@@ -25761,6 +33084,5 @@
          * <code>required string name_part = 1;</code>
          */
-        @Override
-		public boolean hasNamePart() {
+        public boolean hasNamePart() {
           return ((bitField0_ & 0x00000001) == 0x00000001);
         }
@@ -25768,6 +33090,5 @@
          * <code>required string name_part = 1;</code>
          */
-        @Override
-		public java.lang.String getNamePart() {
+        public java.lang.String getNamePart() {
           java.lang.Object ref = namePart_;
           if (!(ref instanceof java.lang.String)) {
@@ -25786,10 +33107,9 @@
          * <code>required string name_part = 1;</code>
          */
-        @Override
-		public com.google.protobuf.ByteString
+        public com.google.protobuf.ByteString
             getNamePartBytes() {
           java.lang.Object ref = namePart_;
           if (ref instanceof String) {
-            com.google.protobuf.ByteString b =
+            com.google.protobuf.ByteString b = 
                 com.google.protobuf.ByteString.copyFromUtf8(
                     (java.lang.String) ref);
@@ -25840,6 +33160,5 @@
          * <code>required bool is_extension = 2;</code>
          */
-        @Override
-		public boolean hasIsExtension() {
+        public boolean hasIsExtension() {
           return ((bitField0_ & 0x00000002) == 0x00000002);
         }
@@ -25847,6 +33166,5 @@
          * <code>required bool is_extension = 2;</code>
          */
-        @Override
-		public boolean getIsExtension() {
+        public boolean getIsExtension() {
           return isExtension_;
         }
@@ -25869,14 +33187,51 @@
           return this;
         }
+        public final Builder setUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.setUnknownFields(unknownFields);
+        }
+
+        public final Builder mergeUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.mergeUnknownFields(unknownFields);
+        }
+
 
         // @@protoc_insertion_point(builder_scope:google.protobuf.UninterpretedOption.NamePart)
       }
 
+      // @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption.NamePart)
+      private static final com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart DEFAULT_INSTANCE;
       static {
-        defaultInstance = new NamePart(true);
-        defaultInstance.initFields();
-      }
-
-      // @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption.NamePart)
+        DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart();
+      }
+
+      public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getDefaultInstance() {
+        return DEFAULT_INSTANCE;
+      }
+
+      @java.lang.Deprecated public static final com.google.protobuf.Parser<NamePart>
+          PARSER = new com.google.protobuf.AbstractParser<NamePart>() {
+        public NamePart parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+            return new NamePart(input, extensionRegistry);
+        }
+      };
+
+      public static com.google.protobuf.Parser<NamePart> parser() {
+        return PARSER;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<NamePart> getParserForType() {
+        return PARSER;
+      }
+
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getDefaultInstanceForType() {
+        return DEFAULT_INSTANCE;
+      }
+
     }
 
@@ -25887,6 +33242,5 @@
      * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> getNameList() {
+    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> getNameList() {
       return name_;
     }
@@ -25894,6 +33248,5 @@
      * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
      */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder>
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder> 
         getNameOrBuilderList() {
       return name_;
@@ -25902,6 +33255,5 @@
      * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
      */
-    @Override
-	public int getNameCount() {
+    public int getNameCount() {
       return name_.size();
     }
@@ -25909,6 +33261,5 @@
      * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getName(int index) {
+    public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getName(int index) {
       return name_.get(index);
     }
@@ -25916,6 +33267,5 @@
      * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
      */
-    @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder getNameOrBuilder(
+    public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder getNameOrBuilder(
         int index) {
       return name_.get(index);
@@ -25923,32 +33273,30 @@
 
     public static final int IDENTIFIER_VALUE_FIELD_NUMBER = 3;
-    private java.lang.Object identifierValue_;
-    /**
-     * <code>optional string identifier_value = 3;</code>
-     *
+    private volatile java.lang.Object identifierValue_;
+    /**
      * <pre>
      * The value of the uninterpreted option, in whatever type the tokenizer
      * identified it as during parsing. Exactly one of these should be set.
      * </pre>
-     */
-    @Override
-	public boolean hasIdentifierValue() {
+     *
+     * <code>optional string identifier_value = 3;</code>
+     */
+    public boolean hasIdentifierValue() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
     /**
-     * <code>optional string identifier_value = 3;</code>
-     *
      * <pre>
      * The value of the uninterpreted option, in whatever type the tokenizer
      * identified it as during parsing. Exactly one of these should be set.
      * </pre>
-     */
-    @Override
-	public java.lang.String getIdentifierValue() {
+     *
+     * <code>optional string identifier_value = 3;</code>
+     */
+    public java.lang.String getIdentifierValue() {
       java.lang.Object ref = identifierValue_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -25960,17 +33308,16 @@
     }
     /**
-     * <code>optional string identifier_value = 3;</code>
-     *
      * <pre>
      * The value of the uninterpreted option, in whatever type the tokenizer
      * identified it as during parsing. Exactly one of these should be set.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
+     *
+     * <code>optional string identifier_value = 3;</code>
+     */
+    public com.google.protobuf.ByteString
         getIdentifierValueBytes() {
       java.lang.Object ref = identifierValue_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -25987,6 +33334,5 @@
      * <code>optional uint64 positive_int_value = 4;</code>
      */
-    @Override
-	public boolean hasPositiveIntValue() {
+    public boolean hasPositiveIntValue() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
@@ -25994,6 +33340,5 @@
      * <code>optional uint64 positive_int_value = 4;</code>
      */
-    @Override
-	public long getPositiveIntValue() {
+    public long getPositiveIntValue() {
       return positiveIntValue_;
     }
@@ -26004,6 +33349,5 @@
      * <code>optional int64 negative_int_value = 5;</code>
      */
-    @Override
-	public boolean hasNegativeIntValue() {
+    public boolean hasNegativeIntValue() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
@@ -26011,6 +33355,5 @@
      * <code>optional int64 negative_int_value = 5;</code>
      */
-    @Override
-	public long getNegativeIntValue() {
+    public long getNegativeIntValue() {
       return negativeIntValue_;
     }
@@ -26021,6 +33364,5 @@
      * <code>optional double double_value = 6;</code>
      */
-    @Override
-	public boolean hasDoubleValue() {
+    public boolean hasDoubleValue() {
       return ((bitField0_ & 0x00000008) == 0x00000008);
     }
@@ -26028,6 +33370,5 @@
      * <code>optional double double_value = 6;</code>
      */
-    @Override
-	public double getDoubleValue() {
+    public double getDoubleValue() {
       return doubleValue_;
     }
@@ -26038,6 +33379,5 @@
      * <code>optional bytes string_value = 7;</code>
      */
-    @Override
-	public boolean hasStringValue() {
+    public boolean hasStringValue() {
       return ((bitField0_ & 0x00000010) == 0x00000010);
     }
@@ -26045,16 +33385,14 @@
      * <code>optional bytes string_value = 7;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString getStringValue() {
+    public com.google.protobuf.ByteString getStringValue() {
       return stringValue_;
     }
 
     public static final int AGGREGATE_VALUE_FIELD_NUMBER = 8;
-    private java.lang.Object aggregateValue_;
+    private volatile java.lang.Object aggregateValue_;
     /**
      * <code>optional string aggregate_value = 8;</code>
      */
-    @Override
-	public boolean hasAggregateValue() {
+    public boolean hasAggregateValue() {
       return ((bitField0_ & 0x00000020) == 0x00000020);
     }
@@ -26062,11 +33400,10 @@
      * <code>optional string aggregate_value = 8;</code>
      */
-    @Override
-	public java.lang.String getAggregateValue() {
+    public java.lang.String getAggregateValue() {
       java.lang.Object ref = aggregateValue_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
@@ -26080,10 +33417,9 @@
      * <code>optional string aggregate_value = 8;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString
+    public com.google.protobuf.ByteString
         getAggregateValueBytes() {
       java.lang.Object ref = aggregateValue_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
@@ -26095,16 +33431,6 @@
     }
 
-    private void initFields() {
-      name_ = java.util.Collections.emptyList();
-      identifierValue_ = "";
-      positiveIntValue_ = 0L;
-      negativeIntValue_ = 0L;
-      doubleValue_ = 0D;
-      stringValue_ = com.google.protobuf.ByteString.EMPTY;
-      aggregateValue_ = "";
-    }
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -26121,13 +33447,11 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       for (int i = 0; i < name_.size(); i++) {
         output.writeMessage(2, name_.get(i));
       }
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(3, getIdentifierValueBytes());
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, identifierValue_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
@@ -26144,13 +33468,11 @@
       }
       if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        output.writeBytes(8, getAggregateValueBytes());
-      }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, aggregateValue_);
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
@@ -26161,6 +33483,5 @@
       }
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(3, getIdentifierValueBytes());
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, identifierValue_);
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
@@ -26181,19 +33502,114 @@
       }
       if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(8, getAggregateValueBytes());
-      }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, aggregateValue_);
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.UninterpretedOption)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.UninterpretedOption other = (com.google.protobuf.DescriptorProtos.UninterpretedOption) obj;
+
+      boolean result = true;
+      result = result && getNameList()
+          .equals(other.getNameList());
+      result = result && (hasIdentifierValue() == other.hasIdentifierValue());
+      if (hasIdentifierValue()) {
+        result = result && getIdentifierValue()
+            .equals(other.getIdentifierValue());
+      }
+      result = result && (hasPositiveIntValue() == other.hasPositiveIntValue());
+      if (hasPositiveIntValue()) {
+        result = result && (getPositiveIntValue()
+            == other.getPositiveIntValue());
+      }
+      result = result && (hasNegativeIntValue() == other.hasNegativeIntValue());
+      if (hasNegativeIntValue()) {
+        result = result && (getNegativeIntValue()
+            == other.getNegativeIntValue());
+      }
+      result = result && (hasDoubleValue() == other.hasDoubleValue());
+      if (hasDoubleValue()) {
+        result = result && (
+            java.lang.Double.doubleToLongBits(getDoubleValue())
+            == java.lang.Double.doubleToLongBits(
+                other.getDoubleValue()));
+      }
+      result = result && (hasStringValue() == other.hasStringValue());
+      if (hasStringValue()) {
+        result = result && getStringValue()
+            .equals(other.getStringValue());
+      }
+      result = result && (hasAggregateValue() == other.hasAggregateValue());
+      if (hasAggregateValue()) {
+        result = result && getAggregateValue()
+            .equals(other.getAggregateValue());
+      }
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (getNameCount() > 0) {
+        hash = (37 * hash) + NAME_FIELD_NUMBER;
+        hash = (53 * hash) + getNameList().hashCode();
+      }
+      if (hasIdentifierValue()) {
+        hash = (37 * hash) + IDENTIFIER_VALUE_FIELD_NUMBER;
+        hash = (53 * hash) + getIdentifierValue().hashCode();
+      }
+      if (hasPositiveIntValue()) {
+        hash = (37 * hash) + POSITIVE_INT_VALUE_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getPositiveIntValue());
+      }
+      if (hasNegativeIntValue()) {
+        hash = (37 * hash) + NEGATIVE_INT_VALUE_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getNegativeIntValue());
+      }
+      if (hasDoubleValue()) {
+        hash = (37 * hash) + DOUBLE_VALUE_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            java.lang.Double.doubleToLongBits(getDoubleValue()));
+      }
+      if (hasStringValue()) {
+        hash = (37 * hash) + STRING_VALUE_FIELD_NUMBER;
+        hash = (53 * hash) + getStringValue().hashCode();
+      }
+      if (hasAggregateValue()) {
+        hash = (37 * hash) + AGGREGATE_VALUE_FIELD_NUMBER;
+        hash = (53 * hash) + getAggregateValue().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(
         com.google.protobuf.ByteString data)
@@ -26219,5 +33635,6 @@
     public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(
@@ -26225,9 +33642,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseDelimitedFrom(
@@ -26235,10 +33654,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(
@@ -26246,25 +33667,27 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.UninterpretedOption prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
     /**
-     * Protobuf type {@code google.protobuf.UninterpretedOption}
-     *
      * <pre>
      * A message representing a option the parser does not recognize. This only
@@ -26275,7 +33698,9 @@
      * in them.
      * </pre>
+     *
+     * Protobuf type {@code google.protobuf.UninterpretedOption}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.UninterpretedOption)
         com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder {
@@ -26285,6 +33710,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable
@@ -26299,19 +33723,15 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getNameFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         if (nameBuilder_ == null) {
@@ -26336,22 +33756,14 @@
       }
 
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption build() {
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption build() {
         com.google.protobuf.DescriptorProtos.UninterpretedOption result = buildPartial();
         if (!result.isInitialized()) {
@@ -26361,6 +33773,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption buildPartial() {
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption buildPartial() {
         com.google.protobuf.DescriptorProtos.UninterpretedOption result = new com.google.protobuf.DescriptorProtos.UninterpretedOption(this);
         int from_bitField0_ = bitField0_;
@@ -26404,6 +33815,31 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.UninterpretedOption) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.UninterpretedOption)other);
@@ -26434,6 +33870,6 @@
               name_ = other.name_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              nameBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              nameBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getNameFieldBuilder() : null;
             } else {
@@ -26464,13 +33900,12 @@
           onChanged();
         }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         for (int i = 0; i < getNameCount(); i++) {
           if (!getName(i).isInitialized()) {
-
             return false;
           }
@@ -26479,6 +33914,5 @@
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -26489,5 +33923,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.UninterpretedOption) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -26503,10 +33937,10 @@
       private void ensureNameIsMutable() {
         if (!((bitField0_ & 0x00000001) == 0x00000001)) {
-          name_ = new java.util.ArrayList<>(name_);
+          name_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart>(name_);
           bitField0_ |= 0x00000001;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder> nameBuilder_;
 
@@ -26514,6 +33948,5 @@
        * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> getNameList() {
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> getNameList() {
         if (nameBuilder_ == null) {
           return java.util.Collections.unmodifiableList(name_);
@@ -26525,6 +33958,5 @@
        * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
        */
-      @Override
-	public int getNameCount() {
+      public int getNameCount() {
         if (nameBuilder_ == null) {
           return name_.size();
@@ -26536,6 +33968,5 @@
        * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getName(int index) {
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getName(int index) {
         if (nameBuilder_ == null) {
           return name_.get(index);
@@ -26687,6 +34118,5 @@
        * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
        */
-      @Override
-	public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder getNameOrBuilder(
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder getNameOrBuilder(
           int index) {
         if (nameBuilder_ == null) {
@@ -26698,6 +34128,5 @@
        * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
        */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder>
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder> 
            getNameOrBuilderList() {
         if (nameBuilder_ != null) {
@@ -26725,13 +34154,14 @@
        * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
        */
-      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder>
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder> 
            getNameBuilderList() {
         return getNameFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder> 
           getNameFieldBuilder() {
         if (nameBuilder_ == null) {
-          nameBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          nameBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder>(
                   name_,
                   ((bitField0_ & 0x00000001) == 0x00000001),
@@ -26745,25 +34175,23 @@
       private java.lang.Object identifierValue_ = "";
       /**
-       * <code>optional string identifier_value = 3;</code>
-       *
        * <pre>
        * The value of the uninterpreted option, in whatever type the tokenizer
        * identified it as during parsing. Exactly one of these should be set.
        * </pre>
-       */
-      @Override
-	public boolean hasIdentifierValue() {
+       *
+       * <code>optional string identifier_value = 3;</code>
+       */
+      public boolean hasIdentifierValue() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
       /**
-       * <code>optional string identifier_value = 3;</code>
-       *
        * <pre>
        * The value of the uninterpreted option, in whatever type the tokenizer
        * identified it as during parsing. Exactly one of these should be set.
        * </pre>
-       */
-      @Override
-	public java.lang.String getIdentifierValue() {
+       *
+       * <code>optional string identifier_value = 3;</code>
+       */
+      public java.lang.String getIdentifierValue() {
         java.lang.Object ref = identifierValue_;
         if (!(ref instanceof java.lang.String)) {
@@ -26780,17 +34208,16 @@
       }
       /**
-       * <code>optional string identifier_value = 3;</code>
-       *
        * <pre>
        * The value of the uninterpreted option, in whatever type the tokenizer
        * identified it as during parsing. Exactly one of these should be set.
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
+       *
+       * <code>optional string identifier_value = 3;</code>
+       */
+      public com.google.protobuf.ByteString
           getIdentifierValueBytes() {
         java.lang.Object ref = identifierValue_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -26802,10 +34229,10 @@
       }
       /**
-       * <code>optional string identifier_value = 3;</code>
-       *
        * <pre>
        * The value of the uninterpreted option, in whatever type the tokenizer
        * identified it as during parsing. Exactly one of these should be set.
        * </pre>
+       *
+       * <code>optional string identifier_value = 3;</code>
        */
       public Builder setIdentifierValue(
@@ -26820,10 +34247,10 @@
       }
       /**
-       * <code>optional string identifier_value = 3;</code>
-       *
        * <pre>
        * The value of the uninterpreted option, in whatever type the tokenizer
        * identified it as during parsing. Exactly one of these should be set.
        * </pre>
+       *
+       * <code>optional string identifier_value = 3;</code>
        */
       public Builder clearIdentifierValue() {
@@ -26834,10 +34261,10 @@
       }
       /**
-       * <code>optional string identifier_value = 3;</code>
-       *
        * <pre>
        * The value of the uninterpreted option, in whatever type the tokenizer
        * identified it as during parsing. Exactly one of these should be set.
        * </pre>
+       *
+       * <code>optional string identifier_value = 3;</code>
        */
       public Builder setIdentifierValueBytes(
@@ -26856,6 +34283,5 @@
        * <code>optional uint64 positive_int_value = 4;</code>
        */
-      @Override
-	public boolean hasPositiveIntValue() {
+      public boolean hasPositiveIntValue() {
         return ((bitField0_ & 0x00000004) == 0x00000004);
       }
@@ -26863,6 +34289,5 @@
        * <code>optional uint64 positive_int_value = 4;</code>
        */
-      @Override
-	public long getPositiveIntValue() {
+      public long getPositiveIntValue() {
         return positiveIntValue_;
       }
@@ -26890,6 +34315,5 @@
        * <code>optional int64 negative_int_value = 5;</code>
        */
-      @Override
-	public boolean hasNegativeIntValue() {
+      public boolean hasNegativeIntValue() {
         return ((bitField0_ & 0x00000008) == 0x00000008);
       }
@@ -26897,6 +34321,5 @@
        * <code>optional int64 negative_int_value = 5;</code>
        */
-      @Override
-	public long getNegativeIntValue() {
+      public long getNegativeIntValue() {
         return negativeIntValue_;
       }
@@ -26924,6 +34347,5 @@
        * <code>optional double double_value = 6;</code>
        */
-      @Override
-	public boolean hasDoubleValue() {
+      public boolean hasDoubleValue() {
         return ((bitField0_ & 0x00000010) == 0x00000010);
       }
@@ -26931,6 +34353,5 @@
        * <code>optional double double_value = 6;</code>
        */
-      @Override
-	public double getDoubleValue() {
+      public double getDoubleValue() {
         return doubleValue_;
       }
@@ -26958,6 +34379,5 @@
        * <code>optional bytes string_value = 7;</code>
        */
-      @Override
-	public boolean hasStringValue() {
+      public boolean hasStringValue() {
         return ((bitField0_ & 0x00000020) == 0x00000020);
       }
@@ -26965,6 +34385,5 @@
        * <code>optional bytes string_value = 7;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString getStringValue() {
+      public com.google.protobuf.ByteString getStringValue() {
         return stringValue_;
       }
@@ -26995,6 +34414,5 @@
        * <code>optional string aggregate_value = 8;</code>
        */
-      @Override
-	public boolean hasAggregateValue() {
+      public boolean hasAggregateValue() {
         return ((bitField0_ & 0x00000040) == 0x00000040);
       }
@@ -27002,6 +34420,5 @@
        * <code>optional string aggregate_value = 8;</code>
        */
-      @Override
-	public java.lang.String getAggregateValue() {
+      public java.lang.String getAggregateValue() {
         java.lang.Object ref = aggregateValue_;
         if (!(ref instanceof java.lang.String)) {
@@ -27020,10 +34437,9 @@
        * <code>optional string aggregate_value = 8;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getAggregateValueBytes() {
         java.lang.Object ref = aggregateValue_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -27069,14 +34485,51 @@
         return this;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.UninterpretedOption)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption)
+    private static final com.google.protobuf.DescriptorProtos.UninterpretedOption DEFAULT_INSTANCE;
     static {
-      defaultInstance = new UninterpretedOption(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.UninterpretedOption();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.UninterpretedOption getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<UninterpretedOption>
+        PARSER = new com.google.protobuf.AbstractParser<UninterpretedOption>() {
+      public UninterpretedOption parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new UninterpretedOption(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<UninterpretedOption> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<UninterpretedOption> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.UninterpretedOption getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
@@ -27086,6 +34539,4 @@
 
     /**
-     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-     *
      * <pre>
      * A Location identifies a piece of source code in a .proto file which
@@ -27131,10 +34582,10 @@
      *   be recorded in the future.
      * </pre>
-     */
-    java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location>
+     *
+     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> 
         getLocationList();
     /**
-     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-     *
      * <pre>
      * A Location identifies a piece of source code in a .proto file which
@@ -27180,9 +34631,9 @@
      *   be recorded in the future.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
      */
     com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location getLocation(int index);
     /**
-     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-     *
      * <pre>
      * A Location identifies a piece of source code in a .proto file which
@@ -27228,9 +34679,9 @@
      *   be recorded in the future.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
      */
     int getLocationCount();
     /**
-     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-     *
      * <pre>
      * A Location identifies a piece of source code in a .proto file which
@@ -27276,10 +34727,10 @@
      *   be recorded in the future.
      * </pre>
-     */
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder>
+     *
+     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder> 
         getLocationOrBuilderList();
     /**
-     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-     *
      * <pre>
      * A Location identifies a piece of source code in a .proto file which
@@ -27325,4 +34776,6 @@
      *   be recorded in the future.
      * </pre>
+     *
+     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
      */
     com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder getLocationOrBuilder(
@@ -27330,36 +34783,27 @@
   }
   /**
-   * Protobuf type {@code google.protobuf.SourceCodeInfo}
-   *
    * <pre>
    * Encapsulates information about the original source file from which a
    * FileDescriptorProto was generated.
    * </pre>
+   *
+   * Protobuf type {@code google.protobuf.SourceCodeInfo}
    */
-  public static final class SourceCodeInfo extends
-      com.google.protobuf.GeneratedMessage implements
+  public  static final class SourceCodeInfo extends
+      com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:google.protobuf.SourceCodeInfo)
       SourceCodeInfoOrBuilder {
+  private static final long serialVersionUID = 0L;
     // Use SourceCodeInfo.newBuilder() to construct.
-    private SourceCodeInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+    private SourceCodeInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private SourceCodeInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final SourceCodeInfo defaultInstance;
-    public static SourceCodeInfo getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public SourceCodeInfo getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    }
+    private SourceCodeInfo() {
+      location_ = java.util.Collections.emptyList();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
+    getUnknownFields() {
       return this.unknownFields;
     }
@@ -27368,5 +34812,5 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
+      this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -27381,6 +34825,6 @@
               break;
             default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
                 done = true;
               }
@@ -27389,8 +34833,9 @@
             case 10: {
               if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-                location_ = new java.util.ArrayList<>();
+                location_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              location_.add(input.readMessage(com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.PARSER, extensionRegistry));
+              location_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.PARSER, extensionRegistry));
               break;
             }
@@ -27401,5 +34846,5 @@
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
+            e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
@@ -27415,6 +34860,5 @@
     }
 
-    @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_fieldAccessorTable
@@ -27423,20 +34867,4 @@
     }
 
-    public static com.google.protobuf.Parser<SourceCodeInfo> PARSER =
-        new com.google.protobuf.AbstractParser<SourceCodeInfo>() {
-      @Override
-	public SourceCodeInfo parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SourceCodeInfo(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<SourceCodeInfo> getParserForType() {
-      return PARSER;
-    }
-
     public interface LocationOrBuilder extends
         // @@protoc_insertion_point(interface_extends:google.protobuf.SourceCodeInfo.Location)
@@ -27444,6 +34872,4 @@
 
       /**
-       * <code>repeated int32 path = 1 [packed = true];</code>
-       *
        * <pre>
        * Identifies which part of the FileDescriptorProto was defined at this
@@ -27469,9 +34895,9 @@
        * of the label to the terminating semicolon).
        * </pre>
+       *
+       * <code>repeated int32 path = 1 [packed = true];</code>
        */
       java.util.List<java.lang.Integer> getPathList();
       /**
-       * <code>repeated int32 path = 1 [packed = true];</code>
-       *
        * <pre>
        * Identifies which part of the FileDescriptorProto was defined at this
@@ -27497,9 +34923,9 @@
        * of the label to the terminating semicolon).
        * </pre>
+       *
+       * <code>repeated int32 path = 1 [packed = true];</code>
        */
       int getPathCount();
       /**
-       * <code>repeated int32 path = 1 [packed = true];</code>
-       *
        * <pre>
        * Identifies which part of the FileDescriptorProto was defined at this
@@ -27525,10 +34951,10 @@
        * of the label to the terminating semicolon).
        * </pre>
+       *
+       * <code>repeated int32 path = 1 [packed = true];</code>
        */
       int getPath(int index);
 
       /**
-       * <code>repeated int32 span = 2 [packed = true];</code>
-       *
        * <pre>
        * Always has exactly three or four elements: start line, start column,
@@ -27538,9 +34964,9 @@
        * 1 to each before displaying to a user.
        * </pre>
+       *
+       * <code>repeated int32 span = 2 [packed = true];</code>
        */
       java.util.List<java.lang.Integer> getSpanList();
       /**
-       * <code>repeated int32 span = 2 [packed = true];</code>
-       *
        * <pre>
        * Always has exactly three or four elements: start line, start column,
@@ -27550,9 +34976,9 @@
        * 1 to each before displaying to a user.
        * </pre>
+       *
+       * <code>repeated int32 span = 2 [packed = true];</code>
        */
       int getSpanCount();
       /**
-       * <code>repeated int32 span = 2 [packed = true];</code>
-       *
        * <pre>
        * Always has exactly three or four elements: start line, start column,
@@ -27562,10 +34988,10 @@
        * 1 to each before displaying to a user.
        * </pre>
+       *
+       * <code>repeated int32 span = 2 [packed = true];</code>
        */
       int getSpan(int index);
 
       /**
-       * <code>optional string leading_comments = 3;</code>
-       *
        * <pre>
        * If this SourceCodeInfo represents a complete declaration, these are any
@@ -27574,4 +35000,8 @@
        * A series of line comments appearing on consecutive lines, with no other
        * tokens appearing on those lines, will be treated as a single comment.
+       * leading_detached_comments will keep paragraphs of comments that appear
+       * before (but not connected to) the current element. Each paragraph,
+       * separated by empty lines, will be one comment element in the repeated
+       * field.
        * Only the comment content is provided; comment markers (e.g. //) are
        * stripped out.  For block comments, leading whitespace and an asterisk
@@ -27589,4 +35019,8 @@
        *   // Another line attached to qux.
        *   optional double qux = 4;
+       *   // Detached comment for corge. This is not leading or trailing comments
+       *   // to qux or corge because there are blank lines separating it from
+       *   // both.
+       *   // Detached comment for corge paragraph 2.
        *   optional string corge = 5;
        *   /&#42; Block comment attached
@@ -27596,10 +35030,11 @@
        *    * grault. *&#47;
        *   optional int32 grault = 6;
-       * </pre>
+       *   // ignored detached comments.
+       * </pre>
+       *
+       * <code>optional string leading_comments = 3;</code>
        */
       boolean hasLeadingComments();
       /**
-       * <code>optional string leading_comments = 3;</code>
-       *
        * <pre>
        * If this SourceCodeInfo represents a complete declaration, these are any
@@ -27608,4 +35043,8 @@
        * A series of line comments appearing on consecutive lines, with no other
        * tokens appearing on those lines, will be treated as a single comment.
+       * leading_detached_comments will keep paragraphs of comments that appear
+       * before (but not connected to) the current element. Each paragraph,
+       * separated by empty lines, will be one comment element in the repeated
+       * field.
        * Only the comment content is provided; comment markers (e.g. //) are
        * stripped out.  For block comments, leading whitespace and an asterisk
@@ -27623,4 +35062,8 @@
        *   // Another line attached to qux.
        *   optional double qux = 4;
+       *   // Detached comment for corge. This is not leading or trailing comments
+       *   // to qux or corge because there are blank lines separating it from
+       *   // both.
+       *   // Detached comment for corge paragraph 2.
        *   optional string corge = 5;
        *   /&#42; Block comment attached
@@ -27630,10 +35073,11 @@
        *    * grault. *&#47;
        *   optional int32 grault = 6;
-       * </pre>
+       *   // ignored detached comments.
+       * </pre>
+       *
+       * <code>optional string leading_comments = 3;</code>
        */
       java.lang.String getLeadingComments();
       /**
-       * <code>optional string leading_comments = 3;</code>
-       *
        * <pre>
        * If this SourceCodeInfo represents a complete declaration, these are any
@@ -27642,4 +35086,8 @@
        * A series of line comments appearing on consecutive lines, with no other
        * tokens appearing on those lines, will be treated as a single comment.
+       * leading_detached_comments will keep paragraphs of comments that appear
+       * before (but not connected to) the current element. Each paragraph,
+       * separated by empty lines, will be one comment element in the repeated
+       * field.
        * Only the comment content is provided; comment markers (e.g. //) are
        * stripped out.  For block comments, leading whitespace and an asterisk
@@ -27657,4 +35105,8 @@
        *   // Another line attached to qux.
        *   optional double qux = 4;
+       *   // Detached comment for corge. This is not leading or trailing comments
+       *   // to qux or corge because there are blank lines separating it from
+       *   // both.
+       *   // Detached comment for corge paragraph 2.
        *   optional string corge = 5;
        *   /&#42; Block comment attached
@@ -27664,5 +35116,8 @@
        *    * grault. *&#47;
        *   optional int32 grault = 6;
-       * </pre>
+       *   // ignored detached comments.
+       * </pre>
+       *
+       * <code>optional string leading_comments = 3;</code>
        */
       com.google.protobuf.ByteString
@@ -27682,33 +35137,47 @@
       com.google.protobuf.ByteString
           getTrailingCommentsBytes();
+
+      /**
+       * <code>repeated string leading_detached_comments = 6;</code>
+       */
+      java.util.List<java.lang.String>
+          getLeadingDetachedCommentsList();
+      /**
+       * <code>repeated string leading_detached_comments = 6;</code>
+       */
+      int getLeadingDetachedCommentsCount();
+      /**
+       * <code>repeated string leading_detached_comments = 6;</code>
+       */
+      java.lang.String getLeadingDetachedComments(int index);
+      /**
+       * <code>repeated string leading_detached_comments = 6;</code>
+       */
+      com.google.protobuf.ByteString
+          getLeadingDetachedCommentsBytes(int index);
     }
     /**
      * Protobuf type {@code google.protobuf.SourceCodeInfo.Location}
      */
-    public static final class Location extends
-        com.google.protobuf.GeneratedMessage implements
+    public  static final class Location extends
+        com.google.protobuf.GeneratedMessageV3 implements
         // @@protoc_insertion_point(message_implements:google.protobuf.SourceCodeInfo.Location)
         LocationOrBuilder {
+    private static final long serialVersionUID = 0L;
       // Use Location.newBuilder() to construct.
-      private Location(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      private Location(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
         super(builder);
-        this.unknownFields = builder.getUnknownFields();
-      }
-      private Location(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-      private static final Location defaultInstance;
-      public static Location getDefaultInstance() {
-        return defaultInstance;
-      }
-
-      @Override
-	public Location getDefaultInstanceForType() {
-        return defaultInstance;
-      }
-
-      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      }
+      private Location() {
+        path_ = java.util.Collections.emptyList();
+        span_ = java.util.Collections.emptyList();
+        leadingComments_ = "";
+        trailingComments_ = "";
+        leadingDetachedComments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      }
+
       @java.lang.Override
       public final com.google.protobuf.UnknownFieldSet
-          getUnknownFields() {
+      getUnknownFields() {
         return this.unknownFields;
       }
@@ -27717,5 +35186,5 @@
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        initFields();
+        this();
         int mutable_bitField0_ = 0;
         com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -27730,6 +35199,6 @@
                 break;
               default: {
-                if (!parseUnknownField(input, unknownFields,
-                                       extensionRegistry, tag)) {
+                if (!parseUnknownField(
+                    input, unknownFields, extensionRegistry, tag)) {
                   done = true;
                 }
@@ -27738,5 +35207,5 @@
               case 8: {
                 if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-                  path_ = new java.util.ArrayList<>();
+                  path_ = new java.util.ArrayList<java.lang.Integer>();
                   mutable_bitField0_ |= 0x00000001;
                 }
@@ -27748,5 +35217,5 @@
                 int limit = input.pushLimit(length);
                 if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
-                  path_ = new java.util.ArrayList<>();
+                  path_ = new java.util.ArrayList<java.lang.Integer>();
                   mutable_bitField0_ |= 0x00000001;
                 }
@@ -27759,5 +35228,5 @@
               case 16: {
                 if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                  span_ = new java.util.ArrayList<>();
+                  span_ = new java.util.ArrayList<java.lang.Integer>();
                   mutable_bitField0_ |= 0x00000002;
                 }
@@ -27769,5 +35238,5 @@
                 int limit = input.pushLimit(length);
                 if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
-                  span_ = new java.util.ArrayList<>();
+                  span_ = new java.util.ArrayList<java.lang.Integer>();
                   mutable_bitField0_ |= 0x00000002;
                 }
@@ -27790,4 +35259,13 @@
                 break;
               }
+              case 50: {
+                com.google.protobuf.ByteString bs = input.readBytes();
+                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                  leadingDetachedComments_ = new com.google.protobuf.LazyStringArrayList();
+                  mutable_bitField0_ |= 0x00000010;
+                }
+                leadingDetachedComments_.add(bs);
+                break;
+              }
             }
           }
@@ -27796,5 +35274,5 @@
         } catch (java.io.IOException e) {
           throw new com.google.protobuf.InvalidProtocolBufferException(
-              e.getMessage()).setUnfinishedMessage(this);
+              e).setUnfinishedMessage(this);
         } finally {
           if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
@@ -27804,4 +35282,7 @@
             span_ = java.util.Collections.unmodifiableList(span_);
           }
+          if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+            leadingDetachedComments_ = leadingDetachedComments_.getUnmodifiableView();
+          }
           this.unknownFields = unknownFields.build();
           makeExtensionsImmutable();
@@ -27813,6 +35294,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_Location_fieldAccessorTable
@@ -27821,26 +35301,8 @@
       }
 
-      public static com.google.protobuf.Parser<Location> PARSER =
-          new com.google.protobuf.AbstractParser<Location>() {
-        @Override
-		public Location parsePartialFrom(
-            com.google.protobuf.CodedInputStream input,
-            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-            throws com.google.protobuf.InvalidProtocolBufferException {
-          return new Location(input, extensionRegistry);
-        }
-      };
-
-      @java.lang.Override
-      public com.google.protobuf.Parser<Location> getParserForType() {
-        return PARSER;
-      }
-
       private int bitField0_;
       public static final int PATH_FIELD_NUMBER = 1;
       private java.util.List<java.lang.Integer> path_;
       /**
-       * <code>repeated int32 path = 1 [packed = true];</code>
-       *
        * <pre>
        * Identifies which part of the FileDescriptorProto was defined at this
@@ -27866,13 +35328,12 @@
        * of the label to the terminating semicolon).
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Integer>
+       *
+       * <code>repeated int32 path = 1 [packed = true];</code>
+       */
+      public java.util.List<java.lang.Integer>
           getPathList() {
         return path_;
       }
       /**
-       * <code>repeated int32 path = 1 [packed = true];</code>
-       *
        * <pre>
        * Identifies which part of the FileDescriptorProto was defined at this
@@ -27898,12 +35359,11 @@
        * of the label to the terminating semicolon).
        * </pre>
-       */
-      @Override
-	public int getPathCount() {
+       *
+       * <code>repeated int32 path = 1 [packed = true];</code>
+       */
+      public int getPathCount() {
         return path_.size();
       }
       /**
-       * <code>repeated int32 path = 1 [packed = true];</code>
-       *
        * <pre>
        * Identifies which part of the FileDescriptorProto was defined at this
@@ -27929,7 +35389,8 @@
        * of the label to the terminating semicolon).
        * </pre>
-       */
-      @Override
-	public int getPath(int index) {
+       *
+       * <code>repeated int32 path = 1 [packed = true];</code>
+       */
+      public int getPath(int index) {
         return path_.get(index);
       }
@@ -27939,6 +35400,4 @@
       private java.util.List<java.lang.Integer> span_;
       /**
-       * <code>repeated int32 span = 2 [packed = true];</code>
-       *
        * <pre>
        * Always has exactly three or four elements: start line, start column,
@@ -27948,13 +35407,12 @@
        * 1 to each before displaying to a user.
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Integer>
+       *
+       * <code>repeated int32 span = 2 [packed = true];</code>
+       */
+      public java.util.List<java.lang.Integer>
           getSpanList() {
         return span_;
       }
       /**
-       * <code>repeated int32 span = 2 [packed = true];</code>
-       *
        * <pre>
        * Always has exactly three or four elements: start line, start column,
@@ -27964,12 +35422,11 @@
        * 1 to each before displaying to a user.
        * </pre>
-       */
-      @Override
-	public int getSpanCount() {
+       *
+       * <code>repeated int32 span = 2 [packed = true];</code>
+       */
+      public int getSpanCount() {
         return span_.size();
       }
       /**
-       * <code>repeated int32 span = 2 [packed = true];</code>
-       *
        * <pre>
        * Always has exactly three or four elements: start line, start column,
@@ -27979,7 +35436,8 @@
        * 1 to each before displaying to a user.
        * </pre>
-       */
-      @Override
-	public int getSpan(int index) {
+       *
+       * <code>repeated int32 span = 2 [packed = true];</code>
+       */
+      public int getSpan(int index) {
         return span_.get(index);
       }
@@ -27987,8 +35445,6 @@
 
       public static final int LEADING_COMMENTS_FIELD_NUMBER = 3;
-      private java.lang.Object leadingComments_;
-      /**
-       * <code>optional string leading_comments = 3;</code>
-       *
+      private volatile java.lang.Object leadingComments_;
+      /**
        * <pre>
        * If this SourceCodeInfo represents a complete declaration, these are any
@@ -27997,4 +35453,8 @@
        * A series of line comments appearing on consecutive lines, with no other
        * tokens appearing on those lines, will be treated as a single comment.
+       * leading_detached_comments will keep paragraphs of comments that appear
+       * before (but not connected to) the current element. Each paragraph,
+       * separated by empty lines, will be one comment element in the repeated
+       * field.
        * Only the comment content is provided; comment markers (e.g. //) are
        * stripped out.  For block comments, leading whitespace and an asterisk
@@ -28012,4 +35472,8 @@
        *   // Another line attached to qux.
        *   optional double qux = 4;
+       *   // Detached comment for corge. This is not leading or trailing comments
+       *   // to qux or corge because there are blank lines separating it from
+       *   // both.
+       *   // Detached comment for corge paragraph 2.
        *   optional string corge = 5;
        *   /&#42; Block comment attached
@@ -28019,13 +35483,13 @@
        *    * grault. *&#47;
        *   optional int32 grault = 6;
-       * </pre>
-       */
-      @Override
-	public boolean hasLeadingComments() {
+       *   // ignored detached comments.
+       * </pre>
+       *
+       * <code>optional string leading_comments = 3;</code>
+       */
+      public boolean hasLeadingComments() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
       /**
-       * <code>optional string leading_comments = 3;</code>
-       *
        * <pre>
        * If this SourceCodeInfo represents a complete declaration, these are any
@@ -28034,4 +35498,8 @@
        * A series of line comments appearing on consecutive lines, with no other
        * tokens appearing on those lines, will be treated as a single comment.
+       * leading_detached_comments will keep paragraphs of comments that appear
+       * before (but not connected to) the current element. Each paragraph,
+       * separated by empty lines, will be one comment element in the repeated
+       * field.
        * Only the comment content is provided; comment markers (e.g. //) are
        * stripped out.  For block comments, leading whitespace and an asterisk
@@ -28049,4 +35517,8 @@
        *   // Another line attached to qux.
        *   optional double qux = 4;
+       *   // Detached comment for corge. This is not leading or trailing comments
+       *   // to qux or corge because there are blank lines separating it from
+       *   // both.
+       *   // Detached comment for corge paragraph 2.
        *   optional string corge = 5;
        *   /&#42; Block comment attached
@@ -28056,13 +35528,15 @@
        *    * grault. *&#47;
        *   optional int32 grault = 6;
-       * </pre>
-       */
-      @Override
-	public java.lang.String getLeadingComments() {
+       *   // ignored detached comments.
+       * </pre>
+       *
+       * <code>optional string leading_comments = 3;</code>
+       */
+      public java.lang.String getLeadingComments() {
         java.lang.Object ref = leadingComments_;
         if (ref instanceof java.lang.String) {
           return (java.lang.String) ref;
         } else {
-          com.google.protobuf.ByteString bs =
+          com.google.protobuf.ByteString bs = 
               (com.google.protobuf.ByteString) ref;
           java.lang.String s = bs.toStringUtf8();
@@ -28074,6 +35548,4 @@
       }
       /**
-       * <code>optional string leading_comments = 3;</code>
-       *
        * <pre>
        * If this SourceCodeInfo represents a complete declaration, these are any
@@ -28082,4 +35554,8 @@
        * A series of line comments appearing on consecutive lines, with no other
        * tokens appearing on those lines, will be treated as a single comment.
+       * leading_detached_comments will keep paragraphs of comments that appear
+       * before (but not connected to) the current element. Each paragraph,
+       * separated by empty lines, will be one comment element in the repeated
+       * field.
        * Only the comment content is provided; comment markers (e.g. //) are
        * stripped out.  For block comments, leading whitespace and an asterisk
@@ -28097,4 +35573,8 @@
        *   // Another line attached to qux.
        *   optional double qux = 4;
+       *   // Detached comment for corge. This is not leading or trailing comments
+       *   // to qux or corge because there are blank lines separating it from
+       *   // both.
+       *   // Detached comment for corge paragraph 2.
        *   optional string corge = 5;
        *   /&#42; Block comment attached
@@ -28104,12 +35584,14 @@
        *    * grault. *&#47;
        *   optional int32 grault = 6;
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
+       *   // ignored detached comments.
+       * </pre>
+       *
+       * <code>optional string leading_comments = 3;</code>
+       */
+      public com.google.protobuf.ByteString
           getLeadingCommentsBytes() {
         java.lang.Object ref = leadingComments_;
         if (ref instanceof java.lang.String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -28122,10 +35604,9 @@
 
       public static final int TRAILING_COMMENTS_FIELD_NUMBER = 4;
-      private java.lang.Object trailingComments_;
+      private volatile java.lang.Object trailingComments_;
       /**
        * <code>optional string trailing_comments = 4;</code>
        */
-      @Override
-	public boolean hasTrailingComments() {
+      public boolean hasTrailingComments() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
@@ -28133,11 +35614,10 @@
        * <code>optional string trailing_comments = 4;</code>
        */
-      @Override
-	public java.lang.String getTrailingComments() {
+      public java.lang.String getTrailingComments() {
         java.lang.Object ref = trailingComments_;
         if (ref instanceof java.lang.String) {
           return (java.lang.String) ref;
         } else {
-          com.google.protobuf.ByteString bs =
+          com.google.protobuf.ByteString bs = 
               (com.google.protobuf.ByteString) ref;
           java.lang.String s = bs.toStringUtf8();
@@ -28151,10 +35631,9 @@
        * <code>optional string trailing_comments = 4;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getTrailingCommentsBytes() {
         java.lang.Object ref = trailingComments_;
         if (ref instanceof java.lang.String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
@@ -28166,13 +35645,35 @@
       }
 
-      private void initFields() {
-        path_ = java.util.Collections.emptyList();
-        span_ = java.util.Collections.emptyList();
-        leadingComments_ = "";
-        trailingComments_ = "";
-      }
+      public static final int LEADING_DETACHED_COMMENTS_FIELD_NUMBER = 6;
+      private com.google.protobuf.LazyStringList leadingDetachedComments_;
+      /**
+       * <code>repeated string leading_detached_comments = 6;</code>
+       */
+      public com.google.protobuf.ProtocolStringList
+          getLeadingDetachedCommentsList() {
+        return leadingDetachedComments_;
+      }
+      /**
+       * <code>repeated string leading_detached_comments = 6;</code>
+       */
+      public int getLeadingDetachedCommentsCount() {
+        return leadingDetachedComments_.size();
+      }
+      /**
+       * <code>repeated string leading_detached_comments = 6;</code>
+       */
+      public java.lang.String getLeadingDetachedComments(int index) {
+        return leadingDetachedComments_.get(index);
+      }
+      /**
+       * <code>repeated string leading_detached_comments = 6;</code>
+       */
+      public com.google.protobuf.ByteString
+          getLeadingDetachedCommentsBytes(int index) {
+        return leadingDetachedComments_.getByteString(index);
+      }
+
       private byte memoizedIsInitialized = -1;
-      @Override
-	public final boolean isInitialized() {
+      public final boolean isInitialized() {
         byte isInitialized = memoizedIsInitialized;
         if (isInitialized == 1) return true;
@@ -28183,11 +35684,10 @@
       }
 
-      @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
                           throws java.io.IOException {
         getSerializedSize();
         if (getPathList().size() > 0) {
-          output.writeRawVarint32(10);
-          output.writeRawVarint32(pathMemoizedSerializedSize);
+          output.writeUInt32NoTag(10);
+          output.writeUInt32NoTag(pathMemoizedSerializedSize);
         }
         for (int i = 0; i < path_.size(); i++) {
@@ -28195,6 +35695,6 @@
         }
         if (getSpanList().size() > 0) {
-          output.writeRawVarint32(18);
-          output.writeRawVarint32(spanMemoizedSerializedSize);
+          output.writeUInt32NoTag(18);
+          output.writeUInt32NoTag(spanMemoizedSerializedSize);
         }
         for (int i = 0; i < span_.size(); i++) {
@@ -28202,16 +35702,17 @@
         }
         if (((bitField0_ & 0x00000001) == 0x00000001)) {
-          output.writeBytes(3, getLeadingCommentsBytes());
+          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, leadingComments_);
         }
         if (((bitField0_ & 0x00000002) == 0x00000002)) {
-          output.writeBytes(4, getTrailingCommentsBytes());
-        }
-        getUnknownFields().writeTo(output);
-      }
-
-      private int memoizedSerializedSize = -1;
-      @Override
-	public int getSerializedSize() {
-        int size = memoizedSerializedSize;
+          com.google.protobuf.GeneratedMessageV3.writeString(output, 4, trailingComments_);
+        }
+        for (int i = 0; i < leadingDetachedComments_.size(); i++) {
+          com.google.protobuf.GeneratedMessageV3.writeString(output, 6, leadingDetachedComments_.getRaw(i));
+        }
+        unknownFields.writeTo(output);
+      }
+
+      public int getSerializedSize() {
+        int size = memoizedSize;
         if (size != -1) return size;
 
@@ -28246,23 +35747,96 @@
         }
         if (((bitField0_ & 0x00000001) == 0x00000001)) {
-          size += com.google.protobuf.CodedOutputStream
-            .computeBytesSize(3, getLeadingCommentsBytes());
+          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, leadingComments_);
         }
         if (((bitField0_ & 0x00000002) == 0x00000002)) {
-          size += com.google.protobuf.CodedOutputStream
-            .computeBytesSize(4, getTrailingCommentsBytes());
-        }
-        size += getUnknownFields().getSerializedSize();
-        memoizedSerializedSize = size;
+          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, trailingComments_);
+        }
+        {
+          int dataSize = 0;
+          for (int i = 0; i < leadingDetachedComments_.size(); i++) {
+            dataSize += computeStringSizeNoTag(leadingDetachedComments_.getRaw(i));
+          }
+          size += dataSize;
+          size += 1 * getLeadingDetachedCommentsList().size();
+        }
+        size += unknownFields.getSerializedSize();
+        memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+        if (obj == this) {
+         return true;
+        }
+        if (!(obj instanceof com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location)) {
+          return super.equals(obj);
+        }
+        com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location other = (com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location) obj;
+
+        boolean result = true;
+        result = result && getPathList()
+            .equals(other.getPathList());
+        result = result && getSpanList()
+            .equals(other.getSpanList());
+        result = result && (hasLeadingComments() == other.hasLeadingComments());
+        if (hasLeadingComments()) {
+          result = result && getLeadingComments()
+              .equals(other.getLeadingComments());
+        }
+        result = result && (hasTrailingComments() == other.hasTrailingComments());
+        if (hasTrailingComments()) {
+          result = result && getTrailingComments()
+              .equals(other.getTrailingComments());
+        }
+        result = result && getLeadingDetachedCommentsList()
+            .equals(other.getLeadingDetachedCommentsList());
+        result = result && unknownFields.equals(other.unknownFields);
+        return result;
+      }
+
+      @java.lang.Override
+      public int hashCode() {
+        if (memoizedHashCode != 0) {
+          return memoizedHashCode;
+        }
+        int hash = 41;
+        hash = (19 * hash) + getDescriptor().hashCode();
+        if (getPathCount() > 0) {
+          hash = (37 * hash) + PATH_FIELD_NUMBER;
+          hash = (53 * hash) + getPathList().hashCode();
+        }
+        if (getSpanCount() > 0) {
+          hash = (37 * hash) + SPAN_FIELD_NUMBER;
+          hash = (53 * hash) + getSpanList().hashCode();
+        }
+        if (hasLeadingComments()) {
+          hash = (37 * hash) + LEADING_COMMENTS_FIELD_NUMBER;
+          hash = (53 * hash) + getLeadingComments().hashCode();
+        }
+        if (hasTrailingComments()) {
+          hash = (37 * hash) + TRAILING_COMMENTS_FIELD_NUMBER;
+          hash = (53 * hash) + getTrailingComments().hashCode();
+        }
+        if (getLeadingDetachedCommentsCount() > 0) {
+          hash = (37 * hash) + LEADING_DETACHED_COMMENTS_FIELD_NUMBER;
+          hash = (53 * hash) + getLeadingDetachedCommentsList().hashCode();
+        }
+        hash = (29 * hash) + unknownFields.hashCode();
+        memoizedHashCode = hash;
+        return hash;
+      }
+
+      public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom(
+          java.nio.ByteBuffer data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom(
+          java.nio.ByteBuffer data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
       public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom(
           com.google.protobuf.ByteString data)
@@ -28288,5 +35862,6 @@
       public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return PARSER.parseFrom(input);
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input);
       }
       public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom(
@@ -28294,9 +35869,11 @@
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return PARSER.parseFrom(input, extensionRegistry);
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input, extensionRegistry);
       }
       public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseDelimitedFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return PARSER.parseDelimitedFrom(input);
+        return com.google.protobuf.GeneratedMessageV3
+            .parseDelimitedWithIOException(PARSER, input);
       }
       public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseDelimitedFrom(
@@ -28304,10 +35881,12 @@
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        return com.google.protobuf.GeneratedMessageV3
+            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
       }
       public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom(
           com.google.protobuf.CodedInputStream input)
           throws java.io.IOException {
-        return PARSER.parseFrom(input);
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input);
       }
       public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom(
@@ -28315,19 +35894,23 @@
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return PARSER.parseFrom(input, extensionRegistry);
-      }
-
-      public static Builder newBuilder() { return Builder.create(); }
-      @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder() {
+        return DEFAULT_INSTANCE.toBuilder();
+      }
       public static Builder newBuilder(com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location prototype) {
-        return newBuilder().mergeFrom(prototype);
-      }
-      @Override
-	public Builder toBuilder() { return newBuilder(this); }
+        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() {
+        return this == DEFAULT_INSTANCE
+            ? new Builder() : new Builder().mergeFrom(this);
+      }
 
       @java.lang.Override
       protected Builder newBuilderForType(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         Builder builder = new Builder(parent);
         return builder;
@@ -28337,5 +35920,5 @@
        */
       public static final class Builder extends
-          com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
           // @@protoc_insertion_point(builder_implements:google.protobuf.SourceCodeInfo.Location)
           com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder {
@@ -28345,6 +35928,5 @@
         }
 
-        @Override
-		protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
             internalGetFieldAccessorTable() {
           return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_Location_fieldAccessorTable
@@ -28359,18 +35941,14 @@
 
         private Builder(
-            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
           super(parent);
           maybeForceBuilderInitialization();
         }
         private void maybeForceBuilderInitialization() {
-          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          if (com.google.protobuf.GeneratedMessageV3
+                  .alwaysUseFieldBuilders) {
           }
         }
-        private static Builder create() {
-          return new Builder();
-        }
-
-        @Override
-		public Builder clear() {
+        public Builder clear() {
           super.clear();
           path_ = java.util.Collections.emptyList();
@@ -28382,25 +35960,19 @@
           trailingComments_ = "";
           bitField0_ = (bitField0_ & ~0x00000008);
+          leadingDetachedComments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000010);
           return this;
         }
 
-        @Override
-		public Builder clone() {
-          return create().mergeFrom(buildPartial());
-        }
-
-        @Override
-		public com.google.protobuf.Descriptors.Descriptor
+        public com.google.protobuf.Descriptors.Descriptor
             getDescriptorForType() {
           return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_Location_descriptor;
         }
 
-        @Override
-		public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location getDefaultInstanceForType() {
+        public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location getDefaultInstanceForType() {
           return com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.getDefaultInstance();
         }
 
-        @Override
-		public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location build() {
+        public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location build() {
           com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location result = buildPartial();
           if (!result.isInitialized()) {
@@ -28410,6 +35982,5 @@
         }
 
-        @Override
-		public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location buildPartial() {
+        public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location buildPartial() {
           com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location result = new com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location(this);
           int from_bitField0_ = bitField0_;
@@ -28433,4 +36004,9 @@
           }
           result.trailingComments_ = trailingComments_;
+          if (((bitField0_ & 0x00000010) == 0x00000010)) {
+            leadingDetachedComments_ = leadingDetachedComments_.getUnmodifiableView();
+            bitField0_ = (bitField0_ & ~0x00000010);
+          }
+          result.leadingDetachedComments_ = leadingDetachedComments_;
           result.bitField0_ = to_bitField0_;
           onBuilt();
@@ -28438,6 +36014,31 @@
         }
 
-        @Override
-		public Builder mergeFrom(com.google.protobuf.Message other) {
+        public Builder clone() {
+          return (Builder) super.clone();
+        }
+        public Builder setField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            java.lang.Object value) {
+          return (Builder) super.setField(field, value);
+        }
+        public Builder clearField(
+            com.google.protobuf.Descriptors.FieldDescriptor field) {
+          return (Builder) super.clearField(field);
+        }
+        public Builder clearOneof(
+            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+          return (Builder) super.clearOneof(oneof);
+        }
+        public Builder setRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            int index, java.lang.Object value) {
+          return (Builder) super.setRepeatedField(field, index, value);
+        }
+        public Builder addRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            java.lang.Object value) {
+          return (Builder) super.addRepeatedField(field, value);
+        }
+        public Builder mergeFrom(com.google.protobuf.Message other) {
           if (other instanceof com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location) {
             return mergeFrom((com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location)other);
@@ -28480,15 +36081,24 @@
             onChanged();
           }
-          this.mergeUnknownFields(other.getUnknownFields());
+          if (!other.leadingDetachedComments_.isEmpty()) {
+            if (leadingDetachedComments_.isEmpty()) {
+              leadingDetachedComments_ = other.leadingDetachedComments_;
+              bitField0_ = (bitField0_ & ~0x00000010);
+            } else {
+              ensureLeadingDetachedCommentsIsMutable();
+              leadingDetachedComments_.addAll(other.leadingDetachedComments_);
+            }
+            onChanged();
+          }
+          this.mergeUnknownFields(other.unknownFields);
+          onChanged();
           return this;
         }
 
-        @Override
-		public final boolean isInitialized() {
+        public final boolean isInitialized() {
           return true;
         }
 
-        @Override
-		public Builder mergeFrom(
+        public Builder mergeFrom(
             com.google.protobuf.CodedInputStream input,
             com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -28499,5 +36109,5 @@
           } catch (com.google.protobuf.InvalidProtocolBufferException e) {
             parsedMessage = (com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location) e.getUnfinishedMessage();
-            throw e;
+            throw e.unwrapIOException();
           } finally {
             if (parsedMessage != null) {
@@ -28512,11 +36122,9 @@
         private void ensurePathIsMutable() {
           if (!((bitField0_ & 0x00000001) == 0x00000001)) {
-            path_ = new java.util.ArrayList<>(path_);
+            path_ = new java.util.ArrayList<java.lang.Integer>(path_);
             bitField0_ |= 0x00000001;
            }
         }
         /**
-         * <code>repeated int32 path = 1 [packed = true];</code>
-         *
          * <pre>
          * Identifies which part of the FileDescriptorProto was defined at this
@@ -28542,13 +36150,12 @@
          * of the label to the terminating semicolon).
          * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
          */
-        @Override
-		public java.util.List<java.lang.Integer>
+        public java.util.List<java.lang.Integer>
             getPathList() {
           return java.util.Collections.unmodifiableList(path_);
         }
         /**
-         * <code>repeated int32 path = 1 [packed = true];</code>
-         *
          * <pre>
          * Identifies which part of the FileDescriptorProto was defined at this
@@ -28574,12 +36181,11 @@
          * of the label to the terminating semicolon).
          * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
          */
-        @Override
-		public int getPathCount() {
+        public int getPathCount() {
           return path_.size();
         }
         /**
-         * <code>repeated int32 path = 1 [packed = true];</code>
-         *
          * <pre>
          * Identifies which part of the FileDescriptorProto was defined at this
@@ -28605,12 +36211,11 @@
          * of the label to the terminating semicolon).
          * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
          */
-        @Override
-		public int getPath(int index) {
+        public int getPath(int index) {
           return path_.get(index);
         }
         /**
-         * <code>repeated int32 path = 1 [packed = true];</code>
-         *
          * <pre>
          * Identifies which part of the FileDescriptorProto was defined at this
@@ -28636,4 +36241,6 @@
          * of the label to the terminating semicolon).
          * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
          */
         public Builder setPath(
@@ -28645,6 +36252,4 @@
         }
         /**
-         * <code>repeated int32 path = 1 [packed = true];</code>
-         *
          * <pre>
          * Identifies which part of the FileDescriptorProto was defined at this
@@ -28670,4 +36275,6 @@
          * of the label to the terminating semicolon).
          * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
          */
         public Builder addPath(int value) {
@@ -28678,6 +36285,4 @@
         }
         /**
-         * <code>repeated int32 path = 1 [packed = true];</code>
-         *
          * <pre>
          * Identifies which part of the FileDescriptorProto was defined at this
@@ -28703,4 +36308,6 @@
          * of the label to the terminating semicolon).
          * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
          */
         public Builder addAllPath(
@@ -28713,6 +36320,4 @@
         }
         /**
-         * <code>repeated int32 path = 1 [packed = true];</code>
-         *
          * <pre>
          * Identifies which part of the FileDescriptorProto was defined at this
@@ -28738,4 +36343,6 @@
          * of the label to the terminating semicolon).
          * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
          */
         public Builder clearPath() {
@@ -28749,11 +36356,9 @@
         private void ensureSpanIsMutable() {
           if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-            span_ = new java.util.ArrayList<>(span_);
+            span_ = new java.util.ArrayList<java.lang.Integer>(span_);
             bitField0_ |= 0x00000002;
            }
         }
         /**
-         * <code>repeated int32 span = 2 [packed = true];</code>
-         *
          * <pre>
          * Always has exactly three or four elements: start line, start column,
@@ -28763,13 +36368,12 @@
          * 1 to each before displaying to a user.
          * </pre>
+         *
+         * <code>repeated int32 span = 2 [packed = true];</code>
          */
-        @Override
-		public java.util.List<java.lang.Integer>
+        public java.util.List<java.lang.Integer>
             getSpanList() {
           return java.util.Collections.unmodifiableList(span_);
         }
         /**
-         * <code>repeated int32 span = 2 [packed = true];</code>
-         *
          * <pre>
          * Always has exactly three or four elements: start line, start column,
@@ -28779,12 +36383,11 @@
          * 1 to each before displaying to a user.
          * </pre>
+         *
+         * <code>repeated int32 span = 2 [packed = true];</code>
          */
-        @Override
-		public int getSpanCount() {
+        public int getSpanCount() {
           return span_.size();
         }
         /**
-         * <code>repeated int32 span = 2 [packed = true];</code>
-         *
          * <pre>
          * Always has exactly three or four elements: start line, start column,
@@ -28794,12 +36397,11 @@
          * 1 to each before displaying to a user.
          * </pre>
+         *
+         * <code>repeated int32 span = 2 [packed = true];</code>
          */
-        @Override
-		public int getSpan(int index) {
+        public int getSpan(int index) {
           return span_.get(index);
         }
         /**
-         * <code>repeated int32 span = 2 [packed = true];</code>
-         *
          * <pre>
          * Always has exactly three or four elements: start line, start column,
@@ -28809,4 +36411,6 @@
          * 1 to each before displaying to a user.
          * </pre>
+         *
+         * <code>repeated int32 span = 2 [packed = true];</code>
          */
         public Builder setSpan(
@@ -28818,6 +36422,4 @@
         }
         /**
-         * <code>repeated int32 span = 2 [packed = true];</code>
-         *
          * <pre>
          * Always has exactly three or four elements: start line, start column,
@@ -28827,4 +36429,6 @@
          * 1 to each before displaying to a user.
          * </pre>
+         *
+         * <code>repeated int32 span = 2 [packed = true];</code>
          */
         public Builder addSpan(int value) {
@@ -28835,6 +36439,4 @@
         }
         /**
-         * <code>repeated int32 span = 2 [packed = true];</code>
-         *
          * <pre>
          * Always has exactly three or four elements: start line, start column,
@@ -28844,4 +36446,6 @@
          * 1 to each before displaying to a user.
          * </pre>
+         *
+         * <code>repeated int32 span = 2 [packed = true];</code>
          */
         public Builder addAllSpan(
@@ -28854,6 +36458,4 @@
         }
         /**
-         * <code>repeated int32 span = 2 [packed = true];</code>
-         *
          * <pre>
          * Always has exactly three or four elements: start line, start column,
@@ -28863,4 +36465,6 @@
          * 1 to each before displaying to a user.
          * </pre>
+         *
+         * <code>repeated int32 span = 2 [packed = true];</code>
          */
         public Builder clearSpan() {
@@ -28873,6 +36477,4 @@
         private java.lang.Object leadingComments_ = "";
         /**
-         * <code>optional string leading_comments = 3;</code>
-         *
          * <pre>
          * If this SourceCodeInfo represents a complete declaration, these are any
@@ -28881,4 +36483,8 @@
          * A series of line comments appearing on consecutive lines, with no other
          * tokens appearing on those lines, will be treated as a single comment.
+         * leading_detached_comments will keep paragraphs of comments that appear
+         * before (but not connected to) the current element. Each paragraph,
+         * separated by empty lines, will be one comment element in the repeated
+         * field.
          * Only the comment content is provided; comment markers (e.g. //) are
          * stripped out.  For block comments, leading whitespace and an asterisk
@@ -28896,4 +36502,8 @@
          *   // Another line attached to qux.
          *   optional double qux = 4;
+         *   // Detached comment for corge. This is not leading or trailing comments
+         *   // to qux or corge because there are blank lines separating it from
+         *   // both.
+         *   // Detached comment for corge paragraph 2.
          *   optional string corge = 5;
          *   /&#42; Block comment attached
@@ -28903,13 +36513,13 @@
          *    * grault. *&#47;
          *   optional int32 grault = 6;
+         *   // ignored detached comments.
          * </pre>
+         *
+         * <code>optional string leading_comments = 3;</code>
          */
-        @Override
-		public boolean hasLeadingComments() {
+        public boolean hasLeadingComments() {
           return ((bitField0_ & 0x00000004) == 0x00000004);
         }
         /**
-         * <code>optional string leading_comments = 3;</code>
-         *
          * <pre>
          * If this SourceCodeInfo represents a complete declaration, these are any
@@ -28918,4 +36528,8 @@
          * A series of line comments appearing on consecutive lines, with no other
          * tokens appearing on those lines, will be treated as a single comment.
+         * leading_detached_comments will keep paragraphs of comments that appear
+         * before (but not connected to) the current element. Each paragraph,
+         * separated by empty lines, will be one comment element in the repeated
+         * field.
          * Only the comment content is provided; comment markers (e.g. //) are
          * stripped out.  For block comments, leading whitespace and an asterisk
@@ -28933,4 +36547,8 @@
          *   // Another line attached to qux.
          *   optional double qux = 4;
+         *   // Detached comment for corge. This is not leading or trailing comments
+         *   // to qux or corge because there are blank lines separating it from
+         *   // both.
+         *   // Detached comment for corge paragraph 2.
          *   optional string corge = 5;
          *   /&#42; Block comment attached
@@ -28940,8 +36558,10 @@
          *    * grault. *&#47;
          *   optional int32 grault = 6;
+         *   // ignored detached comments.
          * </pre>
+         *
+         * <code>optional string leading_comments = 3;</code>
          */
-        @Override
-		public java.lang.String getLeadingComments() {
+        public java.lang.String getLeadingComments() {
           java.lang.Object ref = leadingComments_;
           if (!(ref instanceof java.lang.String)) {
@@ -28958,6 +36578,4 @@
         }
         /**
-         * <code>optional string leading_comments = 3;</code>
-         *
          * <pre>
          * If this SourceCodeInfo represents a complete declaration, these are any
@@ -28966,4 +36584,8 @@
          * A series of line comments appearing on consecutive lines, with no other
          * tokens appearing on those lines, will be treated as a single comment.
+         * leading_detached_comments will keep paragraphs of comments that appear
+         * before (but not connected to) the current element. Each paragraph,
+         * separated by empty lines, will be one comment element in the repeated
+         * field.
          * Only the comment content is provided; comment markers (e.g. //) are
          * stripped out.  For block comments, leading whitespace and an asterisk
@@ -28981,4 +36603,8 @@
          *   // Another line attached to qux.
          *   optional double qux = 4;
+         *   // Detached comment for corge. This is not leading or trailing comments
+         *   // to qux or corge because there are blank lines separating it from
+         *   // both.
+         *   // Detached comment for corge paragraph 2.
          *   optional string corge = 5;
          *   /&#42; Block comment attached
@@ -28988,12 +36614,14 @@
          *    * grault. *&#47;
          *   optional int32 grault = 6;
+         *   // ignored detached comments.
          * </pre>
+         *
+         * <code>optional string leading_comments = 3;</code>
          */
-        @Override
-		public com.google.protobuf.ByteString
+        public com.google.protobuf.ByteString
             getLeadingCommentsBytes() {
           java.lang.Object ref = leadingComments_;
           if (ref instanceof String) {
-            com.google.protobuf.ByteString b =
+            com.google.protobuf.ByteString b = 
                 com.google.protobuf.ByteString.copyFromUtf8(
                     (java.lang.String) ref);
@@ -29005,6 +36633,4 @@
         }
         /**
-         * <code>optional string leading_comments = 3;</code>
-         *
          * <pre>
          * If this SourceCodeInfo represents a complete declaration, these are any
@@ -29013,4 +36639,8 @@
          * A series of line comments appearing on consecutive lines, with no other
          * tokens appearing on those lines, will be treated as a single comment.
+         * leading_detached_comments will keep paragraphs of comments that appear
+         * before (but not connected to) the current element. Each paragraph,
+         * separated by empty lines, will be one comment element in the repeated
+         * field.
          * Only the comment content is provided; comment markers (e.g. //) are
          * stripped out.  For block comments, leading whitespace and an asterisk
@@ -29028,4 +36658,8 @@
          *   // Another line attached to qux.
          *   optional double qux = 4;
+         *   // Detached comment for corge. This is not leading or trailing comments
+         *   // to qux or corge because there are blank lines separating it from
+         *   // both.
+         *   // Detached comment for corge paragraph 2.
          *   optional string corge = 5;
          *   /&#42; Block comment attached
@@ -29035,5 +36669,8 @@
          *    * grault. *&#47;
          *   optional int32 grault = 6;
+         *   // ignored detached comments.
          * </pre>
+         *
+         * <code>optional string leading_comments = 3;</code>
          */
         public Builder setLeadingComments(
@@ -29048,6 +36685,4 @@
         }
         /**
-         * <code>optional string leading_comments = 3;</code>
-         *
          * <pre>
          * If this SourceCodeInfo represents a complete declaration, these are any
@@ -29056,4 +36691,8 @@
          * A series of line comments appearing on consecutive lines, with no other
          * tokens appearing on those lines, will be treated as a single comment.
+         * leading_detached_comments will keep paragraphs of comments that appear
+         * before (but not connected to) the current element. Each paragraph,
+         * separated by empty lines, will be one comment element in the repeated
+         * field.
          * Only the comment content is provided; comment markers (e.g. //) are
          * stripped out.  For block comments, leading whitespace and an asterisk
@@ -29071,4 +36710,8 @@
          *   // Another line attached to qux.
          *   optional double qux = 4;
+         *   // Detached comment for corge. This is not leading or trailing comments
+         *   // to qux or corge because there are blank lines separating it from
+         *   // both.
+         *   // Detached comment for corge paragraph 2.
          *   optional string corge = 5;
          *   /&#42; Block comment attached
@@ -29078,5 +36721,8 @@
          *    * grault. *&#47;
          *   optional int32 grault = 6;
+         *   // ignored detached comments.
          * </pre>
+         *
+         * <code>optional string leading_comments = 3;</code>
          */
         public Builder clearLeadingComments() {
@@ -29087,6 +36733,4 @@
         }
         /**
-         * <code>optional string leading_comments = 3;</code>
-         *
          * <pre>
          * If this SourceCodeInfo represents a complete declaration, these are any
@@ -29095,4 +36739,8 @@
          * A series of line comments appearing on consecutive lines, with no other
          * tokens appearing on those lines, will be treated as a single comment.
+         * leading_detached_comments will keep paragraphs of comments that appear
+         * before (but not connected to) the current element. Each paragraph,
+         * separated by empty lines, will be one comment element in the repeated
+         * field.
          * Only the comment content is provided; comment markers (e.g. //) are
          * stripped out.  For block comments, leading whitespace and an asterisk
@@ -29110,4 +36758,8 @@
          *   // Another line attached to qux.
          *   optional double qux = 4;
+         *   // Detached comment for corge. This is not leading or trailing comments
+         *   // to qux or corge because there are blank lines separating it from
+         *   // both.
+         *   // Detached comment for corge paragraph 2.
          *   optional string corge = 5;
          *   /&#42; Block comment attached
@@ -29117,5 +36769,8 @@
          *    * grault. *&#47;
          *   optional int32 grault = 6;
+         *   // ignored detached comments.
          * </pre>
+         *
+         * <code>optional string leading_comments = 3;</code>
          */
         public Builder setLeadingCommentsBytes(
@@ -29134,6 +36789,5 @@
          * <code>optional string trailing_comments = 4;</code>
          */
-        @Override
-		public boolean hasTrailingComments() {
+        public boolean hasTrailingComments() {
           return ((bitField0_ & 0x00000008) == 0x00000008);
         }
@@ -29141,6 +36795,5 @@
          * <code>optional string trailing_comments = 4;</code>
          */
-        @Override
-		public java.lang.String getTrailingComments() {
+        public java.lang.String getTrailingComments() {
           java.lang.Object ref = trailingComments_;
           if (!(ref instanceof java.lang.String)) {
@@ -29159,10 +36812,9 @@
          * <code>optional string trailing_comments = 4;</code>
          */
-        @Override
-		public com.google.protobuf.ByteString
+        public com.google.protobuf.ByteString
             getTrailingCommentsBytes() {
           java.lang.Object ref = trailingComments_;
           if (ref instanceof String) {
-            com.google.protobuf.ByteString b =
+            com.google.protobuf.ByteString b = 
                 com.google.protobuf.ByteString.copyFromUtf8(
                     (java.lang.String) ref);
@@ -29209,13 +36861,143 @@
         }
 
+        private com.google.protobuf.LazyStringList leadingDetachedComments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        private void ensureLeadingDetachedCommentsIsMutable() {
+          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+            leadingDetachedComments_ = new com.google.protobuf.LazyStringArrayList(leadingDetachedComments_);
+            bitField0_ |= 0x00000010;
+           }
+        }
+        /**
+         * <code>repeated string leading_detached_comments = 6;</code>
+         */
+        public com.google.protobuf.ProtocolStringList
+            getLeadingDetachedCommentsList() {
+          return leadingDetachedComments_.getUnmodifiableView();
+        }
+        /**
+         * <code>repeated string leading_detached_comments = 6;</code>
+         */
+        public int getLeadingDetachedCommentsCount() {
+          return leadingDetachedComments_.size();
+        }
+        /**
+         * <code>repeated string leading_detached_comments = 6;</code>
+         */
+        public java.lang.String getLeadingDetachedComments(int index) {
+          return leadingDetachedComments_.get(index);
+        }
+        /**
+         * <code>repeated string leading_detached_comments = 6;</code>
+         */
+        public com.google.protobuf.ByteString
+            getLeadingDetachedCommentsBytes(int index) {
+          return leadingDetachedComments_.getByteString(index);
+        }
+        /**
+         * <code>repeated string leading_detached_comments = 6;</code>
+         */
+        public Builder setLeadingDetachedComments(
+            int index, java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureLeadingDetachedCommentsIsMutable();
+          leadingDetachedComments_.set(index, value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string leading_detached_comments = 6;</code>
+         */
+        public Builder addLeadingDetachedComments(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureLeadingDetachedCommentsIsMutable();
+          leadingDetachedComments_.add(value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string leading_detached_comments = 6;</code>
+         */
+        public Builder addAllLeadingDetachedComments(
+            java.lang.Iterable<java.lang.String> values) {
+          ensureLeadingDetachedCommentsIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, leadingDetachedComments_);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string leading_detached_comments = 6;</code>
+         */
+        public Builder clearLeadingDetachedComments() {
+          leadingDetachedComments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000010);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string leading_detached_comments = 6;</code>
+         */
+        public Builder addLeadingDetachedCommentsBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureLeadingDetachedCommentsIsMutable();
+          leadingDetachedComments_.add(value);
+          onChanged();
+          return this;
+        }
+        public final Builder setUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.setUnknownFields(unknownFields);
+        }
+
+        public final Builder mergeUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.mergeUnknownFields(unknownFields);
+        }
+
+
         // @@protoc_insertion_point(builder_scope:google.protobuf.SourceCodeInfo.Location)
       }
 
+      // @@protoc_insertion_point(class_scope:google.protobuf.SourceCodeInfo.Location)
+      private static final com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location DEFAULT_INSTANCE;
       static {
-        defaultInstance = new Location(true);
-        defaultInstance.initFields();
-      }
-
-      // @@protoc_insertion_point(class_scope:google.protobuf.SourceCodeInfo.Location)
+        DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location();
+      }
+
+      public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location getDefaultInstance() {
+        return DEFAULT_INSTANCE;
+      }
+
+      @java.lang.Deprecated public static final com.google.protobuf.Parser<Location>
+          PARSER = new com.google.protobuf.AbstractParser<Location>() {
+        public Location parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Location(input, extensionRegistry);
+        }
+      };
+
+      public static com.google.protobuf.Parser<Location> parser() {
+        return PARSER;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Location> getParserForType() {
+        return PARSER;
+      }
+
+      public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location getDefaultInstanceForType() {
+        return DEFAULT_INSTANCE;
+      }
+
     }
 
@@ -29223,6 +37005,4 @@
     private java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> location_;
     /**
-     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-     *
      * <pre>
      * A Location identifies a piece of source code in a .proto file which
@@ -29268,12 +37048,11 @@
      *   be recorded in the future.
      * </pre>
-     */
-    @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> getLocationList() {
+     *
+     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> getLocationList() {
       return location_;
     }
     /**
-     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-     *
      * <pre>
      * A Location identifies a piece of source code in a .proto file which
@@ -29319,13 +37098,12 @@
      *   be recorded in the future.
      * </pre>
-     */
-    @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder>
+     *
+     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder> 
         getLocationOrBuilderList() {
       return location_;
     }
     /**
-     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-     *
      * <pre>
      * A Location identifies a piece of source code in a .proto file which
@@ -29371,12 +37149,11 @@
      *   be recorded in the future.
      * </pre>
-     */
-    @Override
-	public int getLocationCount() {
+     *
+     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
+     */
+    public int getLocationCount() {
       return location_.size();
     }
     /**
-     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-     *
      * <pre>
      * A Location identifies a piece of source code in a .proto file which
@@ -29422,12 +37199,11 @@
      *   be recorded in the future.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location getLocation(int index) {
+     *
+     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location getLocation(int index) {
       return location_.get(index);
     }
     /**
-     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-     *
      * <pre>
      * A Location identifies a piece of source code in a .proto file which
@@ -29473,17 +37249,14 @@
      *   be recorded in the future.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder getLocationOrBuilder(
+     *
+     * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder getLocationOrBuilder(
         int index) {
       return location_.get(index);
     }
 
-    private void initFields() {
-      location_ = java.util.Collections.emptyList();
-    }
     private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
+    public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -29494,18 +37267,14 @@
     }
 
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       for (int i = 0; i < location_.size(); i++) {
         output.writeMessage(1, location_.get(i));
       }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
-      int size = memoizedSerializedSize;
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
       if (size != -1) return size;
 
@@ -29515,16 +37284,53 @@
           .computeMessageSize(1, location_.get(i));
       }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
+      size += unknownFields.getSerializedSize();
+      memoizedSize = 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 boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.SourceCodeInfo)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.SourceCodeInfo other = (com.google.protobuf.DescriptorProtos.SourceCodeInfo) obj;
+
+      boolean result = true;
+      result = result && getLocationList()
+          .equals(other.getLocationList());
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (getLocationCount() > 0) {
+        hash = (37 * hash) + LOCATION_FIELD_NUMBER;
+        hash = (53 * hash) + getLocationList().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
     public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom(
         com.google.protobuf.ByteString data)
@@ -29550,5 +37356,6 @@
     public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom(
@@ -29556,9 +37363,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseDelimitedFrom(
@@ -29566,10 +37375,12 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
     public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
     }
     public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom(
@@ -29577,32 +37388,36 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(com.google.protobuf.DescriptorProtos.SourceCodeInfo prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
 
     @java.lang.Override
     protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
     /**
-     * Protobuf type {@code google.protobuf.SourceCodeInfo}
-     *
      * <pre>
      * Encapsulates information about the original source file from which a
      * FileDescriptorProto was generated.
      * </pre>
+     *
+     * Protobuf type {@code google.protobuf.SourceCodeInfo}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
         // @@protoc_insertion_point(builder_implements:google.protobuf.SourceCodeInfo)
         com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder {
@@ -29612,6 +37427,5 @@
       }
 
-      @Override
-	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_fieldAccessorTable
@@ -29626,19 +37440,15 @@
 
       private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
       private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
           getLocationFieldBuilder();
         }
       }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
+      public Builder clear() {
         super.clear();
         if (locationBuilder_ == null) {
@@ -29651,22 +37461,14 @@
       }
 
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public com.google.protobuf.Descriptors.Descriptor
+      public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_descriptor;
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.SourceCodeInfo getDefaultInstanceForType() {
+      public com.google.protobuf.DescriptorProtos.SourceCodeInfo getDefaultInstanceForType() {
         return com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance();
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.SourceCodeInfo build() {
+      public com.google.protobuf.DescriptorProtos.SourceCodeInfo build() {
         com.google.protobuf.DescriptorProtos.SourceCodeInfo result = buildPartial();
         if (!result.isInitialized()) {
@@ -29676,6 +37478,5 @@
       }
 
-      @Override
-	public com.google.protobuf.DescriptorProtos.SourceCodeInfo buildPartial() {
+      public com.google.protobuf.DescriptorProtos.SourceCodeInfo buildPartial() {
         com.google.protobuf.DescriptorProtos.SourceCodeInfo result = new com.google.protobuf.DescriptorProtos.SourceCodeInfo(this);
         int from_bitField0_ = bitField0_;
@@ -29693,6 +37494,31 @@
       }
 
-      @Override
-	public Builder mergeFrom(com.google.protobuf.Message other) {
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.google.protobuf.DescriptorProtos.SourceCodeInfo) {
           return mergeFrom((com.google.protobuf.DescriptorProtos.SourceCodeInfo)other);
@@ -29723,6 +37549,6 @@
               location_ = other.location_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              locationBuilder_ =
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+              locationBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getLocationFieldBuilder() : null;
             } else {
@@ -29731,15 +37557,14 @@
           }
         }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
         return true;
       }
 
-      @Override
-	public Builder mergeFrom(
+      public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -29750,5 +37575,5 @@
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           parsedMessage = (com.google.protobuf.DescriptorProtos.SourceCodeInfo) e.getUnfinishedMessage();
-          throw e;
+          throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -29764,15 +37589,13 @@
       private void ensureLocationIsMutable() {
         if (!((bitField0_ & 0x00000001) == 0x00000001)) {
-          location_ = new java.util.ArrayList<>(location_);
+          location_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location>(location_);
           bitField0_ |= 0x00000001;
          }
       }
 
-      private com.google.protobuf.RepeatedFieldBuilder<
+      private com.google.protobuf.RepeatedFieldBuilderV3<
           com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder> locationBuilder_;
 
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -29818,7 +37641,8 @@
        *   be recorded in the future.
        * </pre>
-       */
-      @Override
-	public java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> getLocationList() {
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> getLocationList() {
         if (locationBuilder_ == null) {
           return java.util.Collections.unmodifiableList(location_);
@@ -29828,6 +37652,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -29873,7 +37695,8 @@
        *   be recorded in the future.
        * </pre>
-       */
-      @Override
-	public int getLocationCount() {
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
+       */
+      public int getLocationCount() {
         if (locationBuilder_ == null) {
           return location_.size();
@@ -29883,6 +37706,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -29928,7 +37749,8 @@
        *   be recorded in the future.
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location getLocation(int index) {
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location getLocation(int index) {
         if (locationBuilder_ == null) {
           return location_.get(index);
@@ -29938,6 +37760,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -29983,4 +37803,6 @@
        *   be recorded in the future.
        * </pre>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
        */
       public Builder setLocation(
@@ -29999,6 +37821,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30044,4 +37864,6 @@
        *   be recorded in the future.
        * </pre>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
        */
       public Builder setLocation(
@@ -30057,6 +37879,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30102,4 +37922,6 @@
        *   be recorded in the future.
        * </pre>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
        */
       public Builder addLocation(com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location value) {
@@ -30117,6 +37939,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30162,4 +37982,6 @@
        *   be recorded in the future.
        * </pre>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
        */
       public Builder addLocation(
@@ -30178,6 +38000,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30223,4 +38043,6 @@
        *   be recorded in the future.
        * </pre>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
        */
       public Builder addLocation(
@@ -30236,6 +38058,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30281,4 +38101,6 @@
        *   be recorded in the future.
        * </pre>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
        */
       public Builder addLocation(
@@ -30294,6 +38116,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30339,4 +38159,6 @@
        *   be recorded in the future.
        * </pre>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
        */
       public Builder addAllLocation(
@@ -30353,6 +38175,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30398,4 +38218,6 @@
        *   be recorded in the future.
        * </pre>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
        */
       public Builder clearLocation() {
@@ -30410,6 +38232,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30455,4 +38275,6 @@
        *   be recorded in the future.
        * </pre>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
        */
       public Builder removeLocation(int index) {
@@ -30467,6 +38289,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30512,4 +38332,6 @@
        *   be recorded in the future.
        * </pre>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
        */
       public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder getLocationBuilder(
@@ -30518,6 +38340,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30563,7 +38383,8 @@
        *   be recorded in the future.
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder getLocationOrBuilder(
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder getLocationOrBuilder(
           int index) {
         if (locationBuilder_ == null) {
@@ -30573,6 +38394,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30618,7 +38437,8 @@
        *   be recorded in the future.
        * </pre>
-       */
-      @Override
-	public java.util.List<? extends com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder> 
            getLocationOrBuilderList() {
         if (locationBuilder_ != null) {
@@ -30629,6 +38449,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30674,4 +38492,6 @@
        *   be recorded in the future.
        * </pre>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
        */
       public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder addLocationBuilder() {
@@ -30680,6 +38500,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30725,4 +38543,6 @@
        *   be recorded in the future.
        * </pre>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
        */
       public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder addLocationBuilder(
@@ -30732,6 +38552,4 @@
       }
       /**
-       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
-       *
        * <pre>
        * A Location identifies a piece of source code in a .proto file which
@@ -30777,14 +38595,17 @@
        *   be recorded in the future.
        * </pre>
-       */
-      public java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder>
+       *
+       * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder> 
            getLocationBuilderList() {
         return getLocationFieldBuilder().getBuilderList();
       }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder>
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder> 
           getLocationFieldBuilder() {
         if (locationBuilder_ == null) {
-          locationBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<>(
+          locationBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder>(
                   location_,
                   ((bitField0_ & 0x00000001) == 0x00000001),
@@ -30795,121 +38616,2191 @@
         return locationBuilder_;
       }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
 
       // @@protoc_insertion_point(builder_scope:google.protobuf.SourceCodeInfo)
     }
 
+    // @@protoc_insertion_point(class_scope:google.protobuf.SourceCodeInfo)
+    private static final com.google.protobuf.DescriptorProtos.SourceCodeInfo DEFAULT_INSTANCE;
     static {
-      defaultInstance = new SourceCodeInfo(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:google.protobuf.SourceCodeInfo)
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.SourceCodeInfo();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.SourceCodeInfo getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<SourceCodeInfo>
+        PARSER = new com.google.protobuf.AbstractParser<SourceCodeInfo>() {
+      public SourceCodeInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new SourceCodeInfo(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<SourceCodeInfo> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<SourceCodeInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.SourceCodeInfo getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface GeneratedCodeInfoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.GeneratedCodeInfo)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <pre>
+     * An Annotation connects some span of text in generated code to an element
+     * of its generating .proto file.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation> 
+        getAnnotationList();
+    /**
+     * <pre>
+     * An Annotation connects some span of text in generated code to an element
+     * of its generating .proto file.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+     */
+    com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation getAnnotation(int index);
+    /**
+     * <pre>
+     * An Annotation connects some span of text in generated code to an element
+     * of its generating .proto file.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+     */
+    int getAnnotationCount();
+    /**
+     * <pre>
+     * An Annotation connects some span of text in generated code to an element
+     * of its generating .proto file.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.AnnotationOrBuilder> 
+        getAnnotationOrBuilderList();
+    /**
+     * <pre>
+     * An Annotation connects some span of text in generated code to an element
+     * of its generating .proto file.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+     */
+    com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.AnnotationOrBuilder getAnnotationOrBuilder(
+        int index);
+  }
+  /**
+   * <pre>
+   * Describes the relationship between generated code and its original source
+   * file. A GeneratedCodeInfo message is associated with only one generated
+   * source file, but may contain references to different source .proto files.
+   * </pre>
+   *
+   * Protobuf type {@code google.protobuf.GeneratedCodeInfo}
+   */
+  public  static final class GeneratedCodeInfo extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.GeneratedCodeInfo)
+      GeneratedCodeInfoOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use GeneratedCodeInfo.newBuilder() to construct.
+    private GeneratedCodeInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private GeneratedCodeInfo() {
+      annotation_ = java.util.Collections.emptyList();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private GeneratedCodeInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                annotation_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              annotation_.add(
+                  input.readMessage(com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          annotation_ = java.util.Collections.unmodifiableList(annotation_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_GeneratedCodeInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_GeneratedCodeInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.class, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Builder.class);
+    }
+
+    public interface AnnotationOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:google.protobuf.GeneratedCodeInfo.Annotation)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       * <pre>
+       * Identifies the element in the original source .proto file. This field
+       * is formatted the same as SourceCodeInfo.Location.path.
+       * </pre>
+       *
+       * <code>repeated int32 path = 1 [packed = true];</code>
+       */
+      java.util.List<java.lang.Integer> getPathList();
+      /**
+       * <pre>
+       * Identifies the element in the original source .proto file. This field
+       * is formatted the same as SourceCodeInfo.Location.path.
+       * </pre>
+       *
+       * <code>repeated int32 path = 1 [packed = true];</code>
+       */
+      int getPathCount();
+      /**
+       * <pre>
+       * Identifies the element in the original source .proto file. This field
+       * is formatted the same as SourceCodeInfo.Location.path.
+       * </pre>
+       *
+       * <code>repeated int32 path = 1 [packed = true];</code>
+       */
+      int getPath(int index);
+
+      /**
+       * <pre>
+       * Identifies the filesystem path to the original source .proto.
+       * </pre>
+       *
+       * <code>optional string source_file = 2;</code>
+       */
+      boolean hasSourceFile();
+      /**
+       * <pre>
+       * Identifies the filesystem path to the original source .proto.
+       * </pre>
+       *
+       * <code>optional string source_file = 2;</code>
+       */
+      java.lang.String getSourceFile();
+      /**
+       * <pre>
+       * Identifies the filesystem path to the original source .proto.
+       * </pre>
+       *
+       * <code>optional string source_file = 2;</code>
+       */
+      com.google.protobuf.ByteString
+          getSourceFileBytes();
+
+      /**
+       * <pre>
+       * Identifies the starting offset in bytes in the generated code
+       * that relates to the identified object.
+       * </pre>
+       *
+       * <code>optional int32 begin = 3;</code>
+       */
+      boolean hasBegin();
+      /**
+       * <pre>
+       * Identifies the starting offset in bytes in the generated code
+       * that relates to the identified object.
+       * </pre>
+       *
+       * <code>optional int32 begin = 3;</code>
+       */
+      int getBegin();
+
+      /**
+       * <pre>
+       * Identifies the ending offset in bytes in the generated code that
+       * relates to the identified offset. The end offset should be one past
+       * the last relevant byte (so the length of the text = end - begin).
+       * </pre>
+       *
+       * <code>optional int32 end = 4;</code>
+       */
+      boolean hasEnd();
+      /**
+       * <pre>
+       * Identifies the ending offset in bytes in the generated code that
+       * relates to the identified offset. The end offset should be one past
+       * the last relevant byte (so the length of the text = end - begin).
+       * </pre>
+       *
+       * <code>optional int32 end = 4;</code>
+       */
+      int getEnd();
+    }
+    /**
+     * Protobuf type {@code google.protobuf.GeneratedCodeInfo.Annotation}
+     */
+    public  static final class Annotation extends
+        com.google.protobuf.GeneratedMessageV3 implements
+        // @@protoc_insertion_point(message_implements:google.protobuf.GeneratedCodeInfo.Annotation)
+        AnnotationOrBuilder {
+    private static final long serialVersionUID = 0L;
+      // Use Annotation.newBuilder() to construct.
+      private Annotation(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+        super(builder);
+      }
+      private Annotation() {
+        path_ = java.util.Collections.emptyList();
+        sourceFile_ = "";
+        begin_ = 0;
+        end_ = 0;
+      }
+
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+      getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Annotation(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        this();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(
+                    input, unknownFields, extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  path_ = new java.util.ArrayList<java.lang.Integer>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                path_.add(input.readInt32());
+                break;
+              }
+              case 10: {
+                int length = input.readRawVarint32();
+                int limit = input.pushLimit(length);
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
+                  path_ = new java.util.ArrayList<java.lang.Integer>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                while (input.getBytesUntilLimit() > 0) {
+                  path_.add(input.readInt32());
+                }
+                input.popLimit(limit);
+                break;
+              }
+              case 18: {
+                com.google.protobuf.ByteString bs = input.readBytes();
+                bitField0_ |= 0x00000001;
+                sourceFile_ = bs;
+                break;
+              }
+              case 24: {
+                bitField0_ |= 0x00000002;
+                begin_ = input.readInt32();
+                break;
+              }
+              case 32: {
+                bitField0_ |= 0x00000004;
+                end_ = input.readInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            path_ = java.util.Collections.unmodifiableList(path_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_GeneratedCodeInfo_Annotation_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_GeneratedCodeInfo_Annotation_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.class, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.Builder.class);
+      }
+
+      private int bitField0_;
+      public static final int PATH_FIELD_NUMBER = 1;
+      private java.util.List<java.lang.Integer> path_;
+      /**
+       * <pre>
+       * Identifies the element in the original source .proto file. This field
+       * is formatted the same as SourceCodeInfo.Location.path.
+       * </pre>
+       *
+       * <code>repeated int32 path = 1 [packed = true];</code>
+       */
+      public java.util.List<java.lang.Integer>
+          getPathList() {
+        return path_;
+      }
+      /**
+       * <pre>
+       * Identifies the element in the original source .proto file. This field
+       * is formatted the same as SourceCodeInfo.Location.path.
+       * </pre>
+       *
+       * <code>repeated int32 path = 1 [packed = true];</code>
+       */
+      public int getPathCount() {
+        return path_.size();
+      }
+      /**
+       * <pre>
+       * Identifies the element in the original source .proto file. This field
+       * is formatted the same as SourceCodeInfo.Location.path.
+       * </pre>
+       *
+       * <code>repeated int32 path = 1 [packed = true];</code>
+       */
+      public int getPath(int index) {
+        return path_.get(index);
+      }
+      private int pathMemoizedSerializedSize = -1;
+
+      public static final int SOURCE_FILE_FIELD_NUMBER = 2;
+      private volatile java.lang.Object sourceFile_;
+      /**
+       * <pre>
+       * Identifies the filesystem path to the original source .proto.
+       * </pre>
+       *
+       * <code>optional string source_file = 2;</code>
+       */
+      public boolean hasSourceFile() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <pre>
+       * Identifies the filesystem path to the original source .proto.
+       * </pre>
+       *
+       * <code>optional string source_file = 2;</code>
+       */
+      public java.lang.String getSourceFile() {
+        java.lang.Object ref = sourceFile_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            sourceFile_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <pre>
+       * Identifies the filesystem path to the original source .proto.
+       * </pre>
+       *
+       * <code>optional string source_file = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getSourceFileBytes() {
+        java.lang.Object ref = sourceFile_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          sourceFile_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      public static final int BEGIN_FIELD_NUMBER = 3;
+      private int begin_;
+      /**
+       * <pre>
+       * Identifies the starting offset in bytes in the generated code
+       * that relates to the identified object.
+       * </pre>
+       *
+       * <code>optional int32 begin = 3;</code>
+       */
+      public boolean hasBegin() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <pre>
+       * Identifies the starting offset in bytes in the generated code
+       * that relates to the identified object.
+       * </pre>
+       *
+       * <code>optional int32 begin = 3;</code>
+       */
+      public int getBegin() {
+        return begin_;
+      }
+
+      public static final int END_FIELD_NUMBER = 4;
+      private int end_;
+      /**
+       * <pre>
+       * Identifies the ending offset in bytes in the generated code that
+       * relates to the identified offset. The end offset should be one past
+       * the last relevant byte (so the length of the text = end - begin).
+       * </pre>
+       *
+       * <code>optional int32 end = 4;</code>
+       */
+      public boolean hasEnd() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <pre>
+       * Identifies the ending offset in bytes in the generated code that
+       * relates to the identified offset. The end offset should be one past
+       * the last relevant byte (so the length of the text = end - begin).
+       * </pre>
+       *
+       * <code>optional int32 end = 4;</code>
+       */
+      public int getEnd() {
+        return end_;
+      }
+
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized == 1) return true;
+        if (isInitialized == 0) return false;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (getPathList().size() > 0) {
+          output.writeUInt32NoTag(10);
+          output.writeUInt32NoTag(pathMemoizedSerializedSize);
+        }
+        for (int i = 0; i < path_.size(); i++) {
+          output.writeInt32NoTag(path_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, sourceFile_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeInt32(3, begin_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeInt32(4, end_);
+        }
+        unknownFields.writeTo(output);
+      }
+
+      public int getSerializedSize() {
+        int size = memoizedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        {
+          int dataSize = 0;
+          for (int i = 0; i < path_.size(); i++) {
+            dataSize += com.google.protobuf.CodedOutputStream
+              .computeInt32SizeNoTag(path_.get(i));
+          }
+          size += dataSize;
+          if (!getPathList().isEmpty()) {
+            size += 1;
+            size += com.google.protobuf.CodedOutputStream
+                .computeInt32SizeNoTag(dataSize);
+          }
+          pathMemoizedSerializedSize = dataSize;
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, sourceFile_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(3, begin_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(4, end_);
+        }
+        size += unknownFields.getSerializedSize();
+        memoizedSize = size;
+        return size;
+      }
+
+      @java.lang.Override
+      public boolean equals(final java.lang.Object obj) {
+        if (obj == this) {
+         return true;
+        }
+        if (!(obj instanceof com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation)) {
+          return super.equals(obj);
+        }
+        com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation other = (com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation) obj;
+
+        boolean result = true;
+        result = result && getPathList()
+            .equals(other.getPathList());
+        result = result && (hasSourceFile() == other.hasSourceFile());
+        if (hasSourceFile()) {
+          result = result && getSourceFile()
+              .equals(other.getSourceFile());
+        }
+        result = result && (hasBegin() == other.hasBegin());
+        if (hasBegin()) {
+          result = result && (getBegin()
+              == other.getBegin());
+        }
+        result = result && (hasEnd() == other.hasEnd());
+        if (hasEnd()) {
+          result = result && (getEnd()
+              == other.getEnd());
+        }
+        result = result && unknownFields.equals(other.unknownFields);
+        return result;
+      }
+
+      @java.lang.Override
+      public int hashCode() {
+        if (memoizedHashCode != 0) {
+          return memoizedHashCode;
+        }
+        int hash = 41;
+        hash = (19 * hash) + getDescriptor().hashCode();
+        if (getPathCount() > 0) {
+          hash = (37 * hash) + PATH_FIELD_NUMBER;
+          hash = (53 * hash) + getPathList().hashCode();
+        }
+        if (hasSourceFile()) {
+          hash = (37 * hash) + SOURCE_FILE_FIELD_NUMBER;
+          hash = (53 * hash) + getSourceFile().hashCode();
+        }
+        if (hasBegin()) {
+          hash = (37 * hash) + BEGIN_FIELD_NUMBER;
+          hash = (53 * hash) + getBegin();
+        }
+        if (hasEnd()) {
+          hash = (37 * hash) + END_FIELD_NUMBER;
+          hash = (53 * hash) + getEnd();
+        }
+        hash = (29 * hash) + unknownFields.hashCode();
+        memoizedHashCode = hash;
+        return hash;
+      }
+
+      public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation parseFrom(
+          java.nio.ByteBuffer data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation parseFrom(
+          java.nio.ByteBuffer data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input);
+      }
+      public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input, extensionRegistry);
+      }
+      public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseDelimitedWithIOException(PARSER, input);
+      }
+      public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+      }
+      public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input);
+      }
+      public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder() {
+        return DEFAULT_INSTANCE.toBuilder();
+      }
+      public static Builder newBuilder(com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation prototype) {
+        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() {
+        return this == DEFAULT_INSTANCE
+            ? new Builder() : new Builder().mergeFrom(this);
+      }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code google.protobuf.GeneratedCodeInfo.Annotation}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+          // @@protoc_insertion_point(builder_implements:google.protobuf.GeneratedCodeInfo.Annotation)
+          com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.AnnotationOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_GeneratedCodeInfo_Annotation_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_GeneratedCodeInfo_Annotation_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.class, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.Builder.class);
+        }
+
+        // Construct using com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessageV3
+                  .alwaysUseFieldBuilders) {
+          }
+        }
+        public Builder clear() {
+          super.clear();
+          path_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          sourceFile_ = "";
+          bitField0_ = (bitField0_ & ~0x00000002);
+          begin_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          end_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_GeneratedCodeInfo_Annotation_descriptor;
+        }
+
+        public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation getDefaultInstanceForType() {
+          return com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.getDefaultInstance();
+        }
+
+        public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation build() {
+          com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation buildPartial() {
+          com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation result = new com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            path_ = java.util.Collections.unmodifiableList(path_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.path_ = path_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.sourceFile_ = sourceFile_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.begin_ = begin_;
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.end_ = end_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder clone() {
+          return (Builder) super.clone();
+        }
+        public Builder setField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            java.lang.Object value) {
+          return (Builder) super.setField(field, value);
+        }
+        public Builder clearField(
+            com.google.protobuf.Descriptors.FieldDescriptor field) {
+          return (Builder) super.clearField(field);
+        }
+        public Builder clearOneof(
+            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+          return (Builder) super.clearOneof(oneof);
+        }
+        public Builder setRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            int index, java.lang.Object value) {
+          return (Builder) super.setRepeatedField(field, index, value);
+        }
+        public Builder addRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            java.lang.Object value) {
+          return (Builder) super.addRepeatedField(field, value);
+        }
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation) {
+            return mergeFrom((com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation other) {
+          if (other == com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.getDefaultInstance()) return this;
+          if (!other.path_.isEmpty()) {
+            if (path_.isEmpty()) {
+              path_ = other.path_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensurePathIsMutable();
+              path_.addAll(other.path_);
+            }
+            onChanged();
+          }
+          if (other.hasSourceFile()) {
+            bitField0_ |= 0x00000002;
+            sourceFile_ = other.sourceFile_;
+            onChanged();
+          }
+          if (other.hasBegin()) {
+            setBegin(other.getBegin());
+          }
+          if (other.hasEnd()) {
+            setEnd(other.getEnd());
+          }
+          this.mergeUnknownFields(other.unknownFields);
+          onChanged();
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation) e.getUnfinishedMessage();
+            throw e.unwrapIOException();
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        private java.util.List<java.lang.Integer> path_ = java.util.Collections.emptyList();
+        private void ensurePathIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            path_ = new java.util.ArrayList<java.lang.Integer>(path_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+        /**
+         * <pre>
+         * Identifies the element in the original source .proto file. This field
+         * is formatted the same as SourceCodeInfo.Location.path.
+         * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
+         */
+        public java.util.List<java.lang.Integer>
+            getPathList() {
+          return java.util.Collections.unmodifiableList(path_);
+        }
+        /**
+         * <pre>
+         * Identifies the element in the original source .proto file. This field
+         * is formatted the same as SourceCodeInfo.Location.path.
+         * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
+         */
+        public int getPathCount() {
+          return path_.size();
+        }
+        /**
+         * <pre>
+         * Identifies the element in the original source .proto file. This field
+         * is formatted the same as SourceCodeInfo.Location.path.
+         * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
+         */
+        public int getPath(int index) {
+          return path_.get(index);
+        }
+        /**
+         * <pre>
+         * Identifies the element in the original source .proto file. This field
+         * is formatted the same as SourceCodeInfo.Location.path.
+         * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
+         */
+        public Builder setPath(
+            int index, int value) {
+          ensurePathIsMutable();
+          path_.set(index, value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <pre>
+         * Identifies the element in the original source .proto file. This field
+         * is formatted the same as SourceCodeInfo.Location.path.
+         * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
+         */
+        public Builder addPath(int value) {
+          ensurePathIsMutable();
+          path_.add(value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <pre>
+         * Identifies the element in the original source .proto file. This field
+         * is formatted the same as SourceCodeInfo.Location.path.
+         * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
+         */
+        public Builder addAllPath(
+            java.lang.Iterable<? extends java.lang.Integer> values) {
+          ensurePathIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, path_);
+          onChanged();
+          return this;
+        }
+        /**
+         * <pre>
+         * Identifies the element in the original source .proto file. This field
+         * is formatted the same as SourceCodeInfo.Location.path.
+         * </pre>
+         *
+         * <code>repeated int32 path = 1 [packed = true];</code>
+         */
+        public Builder clearPath() {
+          path_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+          return this;
+        }
+
+        private java.lang.Object sourceFile_ = "";
+        /**
+         * <pre>
+         * Identifies the filesystem path to the original source .proto.
+         * </pre>
+         *
+         * <code>optional string source_file = 2;</code>
+         */
+        public boolean hasSourceFile() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <pre>
+         * Identifies the filesystem path to the original source .proto.
+         * </pre>
+         *
+         * <code>optional string source_file = 2;</code>
+         */
+        public java.lang.String getSourceFile() {
+          java.lang.Object ref = sourceFile_;
+          if (!(ref instanceof java.lang.String)) {
+            com.google.protobuf.ByteString bs =
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              sourceFile_ = s;
+            }
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <pre>
+         * Identifies the filesystem path to the original source .proto.
+         * </pre>
+         *
+         * <code>optional string source_file = 2;</code>
+         */
+        public com.google.protobuf.ByteString
+            getSourceFileBytes() {
+          java.lang.Object ref = sourceFile_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            sourceFile_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <pre>
+         * Identifies the filesystem path to the original source .proto.
+         * </pre>
+         *
+         * <code>optional string source_file = 2;</code>
+         */
+        public Builder setSourceFile(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          sourceFile_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <pre>
+         * Identifies the filesystem path to the original source .proto.
+         * </pre>
+         *
+         * <code>optional string source_file = 2;</code>
+         */
+        public Builder clearSourceFile() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          sourceFile_ = getDefaultInstance().getSourceFile();
+          onChanged();
+          return this;
+        }
+        /**
+         * <pre>
+         * Identifies the filesystem path to the original source .proto.
+         * </pre>
+         *
+         * <code>optional string source_file = 2;</code>
+         */
+        public Builder setSourceFileBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          sourceFile_ = value;
+          onChanged();
+          return this;
+        }
+
+        private int begin_ ;
+        /**
+         * <pre>
+         * Identifies the starting offset in bytes in the generated code
+         * that relates to the identified object.
+         * </pre>
+         *
+         * <code>optional int32 begin = 3;</code>
+         */
+        public boolean hasBegin() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <pre>
+         * Identifies the starting offset in bytes in the generated code
+         * that relates to the identified object.
+         * </pre>
+         *
+         * <code>optional int32 begin = 3;</code>
+         */
+        public int getBegin() {
+          return begin_;
+        }
+        /**
+         * <pre>
+         * Identifies the starting offset in bytes in the generated code
+         * that relates to the identified object.
+         * </pre>
+         *
+         * <code>optional int32 begin = 3;</code>
+         */
+        public Builder setBegin(int value) {
+          bitField0_ |= 0x00000004;
+          begin_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <pre>
+         * Identifies the starting offset in bytes in the generated code
+         * that relates to the identified object.
+         * </pre>
+         *
+         * <code>optional int32 begin = 3;</code>
+         */
+        public Builder clearBegin() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          begin_ = 0;
+          onChanged();
+          return this;
+        }
+
+        private int end_ ;
+        /**
+         * <pre>
+         * Identifies the ending offset in bytes in the generated code that
+         * relates to the identified offset. The end offset should be one past
+         * the last relevant byte (so the length of the text = end - begin).
+         * </pre>
+         *
+         * <code>optional int32 end = 4;</code>
+         */
+        public boolean hasEnd() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <pre>
+         * Identifies the ending offset in bytes in the generated code that
+         * relates to the identified offset. The end offset should be one past
+         * the last relevant byte (so the length of the text = end - begin).
+         * </pre>
+         *
+         * <code>optional int32 end = 4;</code>
+         */
+        public int getEnd() {
+          return end_;
+        }
+        /**
+         * <pre>
+         * Identifies the ending offset in bytes in the generated code that
+         * relates to the identified offset. The end offset should be one past
+         * the last relevant byte (so the length of the text = end - begin).
+         * </pre>
+         *
+         * <code>optional int32 end = 4;</code>
+         */
+        public Builder setEnd(int value) {
+          bitField0_ |= 0x00000008;
+          end_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <pre>
+         * Identifies the ending offset in bytes in the generated code that
+         * relates to the identified offset. The end offset should be one past
+         * the last relevant byte (so the length of the text = end - begin).
+         * </pre>
+         *
+         * <code>optional int32 end = 4;</code>
+         */
+        public Builder clearEnd() {
+          bitField0_ = (bitField0_ & ~0x00000008);
+          end_ = 0;
+          onChanged();
+          return this;
+        }
+        public final Builder setUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.setUnknownFields(unknownFields);
+        }
+
+        public final Builder mergeUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.mergeUnknownFields(unknownFields);
+        }
+
+
+        // @@protoc_insertion_point(builder_scope:google.protobuf.GeneratedCodeInfo.Annotation)
+      }
+
+      // @@protoc_insertion_point(class_scope:google.protobuf.GeneratedCodeInfo.Annotation)
+      private static final com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation DEFAULT_INSTANCE;
+      static {
+        DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation();
+      }
+
+      public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation getDefaultInstance() {
+        return DEFAULT_INSTANCE;
+      }
+
+      @java.lang.Deprecated public static final com.google.protobuf.Parser<Annotation>
+          PARSER = new com.google.protobuf.AbstractParser<Annotation>() {
+        public Annotation parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Annotation(input, extensionRegistry);
+        }
+      };
+
+      public static com.google.protobuf.Parser<Annotation> parser() {
+        return PARSER;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Annotation> getParserForType() {
+        return PARSER;
+      }
+
+      public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation getDefaultInstanceForType() {
+        return DEFAULT_INSTANCE;
+      }
+
+    }
+
+    public static final int ANNOTATION_FIELD_NUMBER = 1;
+    private java.util.List<com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation> annotation_;
+    /**
+     * <pre>
+     * An Annotation connects some span of text in generated code to an element
+     * of its generating .proto file.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation> getAnnotationList() {
+      return annotation_;
+    }
+    /**
+     * <pre>
+     * An Annotation connects some span of text in generated code to an element
+     * of its generating .proto file.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.AnnotationOrBuilder> 
+        getAnnotationOrBuilderList() {
+      return annotation_;
+    }
+    /**
+     * <pre>
+     * An Annotation connects some span of text in generated code to an element
+     * of its generating .proto file.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+     */
+    public int getAnnotationCount() {
+      return annotation_.size();
+    }
+    /**
+     * <pre>
+     * An Annotation connects some span of text in generated code to an element
+     * of its generating .proto file.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation getAnnotation(int index) {
+      return annotation_.get(index);
+    }
+    /**
+     * <pre>
+     * An Annotation connects some span of text in generated code to an element
+     * of its generating .proto file.
+     * </pre>
+     *
+     * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.AnnotationOrBuilder getAnnotationOrBuilder(
+        int index) {
+      return annotation_.get(index);
+    }
+
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      for (int i = 0; i < annotation_.size(); i++) {
+        output.writeMessage(1, annotation_.get(i));
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < annotation_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, annotation_.get(i));
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.google.protobuf.DescriptorProtos.GeneratedCodeInfo)) {
+        return super.equals(obj);
+      }
+      com.google.protobuf.DescriptorProtos.GeneratedCodeInfo other = (com.google.protobuf.DescriptorProtos.GeneratedCodeInfo) obj;
+
+      boolean result = true;
+      result = result && getAnnotationList()
+          .equals(other.getAnnotationList());
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (getAnnotationCount() > 0) {
+        hash = (37 * hash) + ANNOTATION_FIELD_NUMBER;
+        hash = (53 * hash) + getAnnotationList().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.GeneratedCodeInfo prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * <pre>
+     * Describes the relationship between generated code and its original source
+     * file. A GeneratedCodeInfo message is associated with only one generated
+     * source file, but may contain references to different source .proto files.
+     * </pre>
+     *
+     * Protobuf type {@code google.protobuf.GeneratedCodeInfo}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.GeneratedCodeInfo)
+        com.google.protobuf.DescriptorProtos.GeneratedCodeInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_GeneratedCodeInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_GeneratedCodeInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.class, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Builder.class);
+      }
+
+      // Construct using com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+          getAnnotationFieldBuilder();
+        }
+      }
+      public Builder clear() {
+        super.clear();
+        if (annotationBuilder_ == null) {
+          annotation_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          annotationBuilder_.clear();
+        }
+        return this;
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_GeneratedCodeInfo_descriptor;
+      }
+
+      public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo getDefaultInstanceForType() {
+        return com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.getDefaultInstance();
+      }
+
+      public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo build() {
+        com.google.protobuf.DescriptorProtos.GeneratedCodeInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo buildPartial() {
+        com.google.protobuf.DescriptorProtos.GeneratedCodeInfo result = new com.google.protobuf.DescriptorProtos.GeneratedCodeInfo(this);
+        int from_bitField0_ = bitField0_;
+        if (annotationBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            annotation_ = java.util.Collections.unmodifiableList(annotation_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.annotation_ = annotation_;
+        } else {
+          result.annotation_ = annotationBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof com.google.protobuf.DescriptorProtos.GeneratedCodeInfo) {
+          return mergeFrom((com.google.protobuf.DescriptorProtos.GeneratedCodeInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.GeneratedCodeInfo other) {
+        if (other == com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.getDefaultInstance()) return this;
+        if (annotationBuilder_ == null) {
+          if (!other.annotation_.isEmpty()) {
+            if (annotation_.isEmpty()) {
+              annotation_ = other.annotation_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureAnnotationIsMutable();
+              annotation_.addAll(other.annotation_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.annotation_.isEmpty()) {
+            if (annotationBuilder_.isEmpty()) {
+              annotationBuilder_.dispose();
+              annotationBuilder_ = null;
+              annotation_ = other.annotation_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              annotationBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getAnnotationFieldBuilder() : null;
+            } else {
+              annotationBuilder_.addAllMessages(other.annotation_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        com.google.protobuf.DescriptorProtos.GeneratedCodeInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (com.google.protobuf.DescriptorProtos.GeneratedCodeInfo) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.util.List<com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation> annotation_ =
+        java.util.Collections.emptyList();
+      private void ensureAnnotationIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          annotation_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation>(annotation_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.Builder, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.AnnotationOrBuilder> annotationBuilder_;
+
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation> getAnnotationList() {
+        if (annotationBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(annotation_);
+        } else {
+          return annotationBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public int getAnnotationCount() {
+        if (annotationBuilder_ == null) {
+          return annotation_.size();
+        } else {
+          return annotationBuilder_.getCount();
+        }
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation getAnnotation(int index) {
+        if (annotationBuilder_ == null) {
+          return annotation_.get(index);
+        } else {
+          return annotationBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public Builder setAnnotation(
+          int index, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation value) {
+        if (annotationBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAnnotationIsMutable();
+          annotation_.set(index, value);
+          onChanged();
+        } else {
+          annotationBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public Builder setAnnotation(
+          int index, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.Builder builderForValue) {
+        if (annotationBuilder_ == null) {
+          ensureAnnotationIsMutable();
+          annotation_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          annotationBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public Builder addAnnotation(com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation value) {
+        if (annotationBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAnnotationIsMutable();
+          annotation_.add(value);
+          onChanged();
+        } else {
+          annotationBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public Builder addAnnotation(
+          int index, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation value) {
+        if (annotationBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAnnotationIsMutable();
+          annotation_.add(index, value);
+          onChanged();
+        } else {
+          annotationBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public Builder addAnnotation(
+          com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.Builder builderForValue) {
+        if (annotationBuilder_ == null) {
+          ensureAnnotationIsMutable();
+          annotation_.add(builderForValue.build());
+          onChanged();
+        } else {
+          annotationBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public Builder addAnnotation(
+          int index, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.Builder builderForValue) {
+        if (annotationBuilder_ == null) {
+          ensureAnnotationIsMutable();
+          annotation_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          annotationBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public Builder addAllAnnotation(
+          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation> values) {
+        if (annotationBuilder_ == null) {
+          ensureAnnotationIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, annotation_);
+          onChanged();
+        } else {
+          annotationBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public Builder clearAnnotation() {
+        if (annotationBuilder_ == null) {
+          annotation_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          annotationBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public Builder removeAnnotation(int index) {
+        if (annotationBuilder_ == null) {
+          ensureAnnotationIsMutable();
+          annotation_.remove(index);
+          onChanged();
+        } else {
+          annotationBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.Builder getAnnotationBuilder(
+          int index) {
+        return getAnnotationFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.AnnotationOrBuilder getAnnotationOrBuilder(
+          int index) {
+        if (annotationBuilder_ == null) {
+          return annotation_.get(index);  } else {
+          return annotationBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.AnnotationOrBuilder> 
+           getAnnotationOrBuilderList() {
+        if (annotationBuilder_ != null) {
+          return annotationBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(annotation_);
+        }
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.Builder addAnnotationBuilder() {
+        return getAnnotationFieldBuilder().addBuilder(
+            com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.getDefaultInstance());
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.Builder addAnnotationBuilder(
+          int index) {
+        return getAnnotationFieldBuilder().addBuilder(
+            index, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.getDefaultInstance());
+      }
+      /**
+       * <pre>
+       * An Annotation connects some span of text in generated code to an element
+       * of its generating .proto file.
+       * </pre>
+       *
+       * <code>repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;</code>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.Builder> 
+           getAnnotationBuilderList() {
+        return getAnnotationFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.Builder, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.AnnotationOrBuilder> 
+          getAnnotationFieldBuilder() {
+        if (annotationBuilder_ == null) {
+          annotationBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.Annotation.Builder, com.google.protobuf.DescriptorProtos.GeneratedCodeInfo.AnnotationOrBuilder>(
+                  annotation_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          annotation_ = null;
+        }
+        return annotationBuilder_;
+      }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:google.protobuf.GeneratedCodeInfo)
+    }
+
+    // @@protoc_insertion_point(class_scope:google.protobuf.GeneratedCodeInfo)
+    private static final com.google.protobuf.DescriptorProtos.GeneratedCodeInfo DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.GeneratedCodeInfo();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.GeneratedCodeInfo getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<GeneratedCodeInfo>
+        PARSER = new com.google.protobuf.AbstractParser<GeneratedCodeInfo>() {
+      public GeneratedCodeInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new GeneratedCodeInfo(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<GeneratedCodeInfo> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<GeneratedCodeInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public com.google.protobuf.DescriptorProtos.GeneratedCodeInfo getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
   }
 
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_FileDescriptorSet_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_FileDescriptorProto_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_DescriptorProto_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_DescriptorProto_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_google_protobuf_DescriptorProto_ReservedRange_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_google_protobuf_DescriptorProto_ReservedRange_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_google_protobuf_ExtensionRangeOptions_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_google_protobuf_ExtensionRangeOptions_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_FieldDescriptorProto_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_OneofDescriptorProto_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_OneofDescriptorProto_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_EnumDescriptorProto_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_EnumValueDescriptorProto_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_ServiceDescriptorProto_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_MethodDescriptorProto_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_FileOptions_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_FileOptions_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_MessageOptions_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_MessageOptions_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_FieldOptions_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_FieldOptions_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_google_protobuf_OneofOptions_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_google_protobuf_OneofOptions_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_EnumOptions_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_EnumOptions_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_EnumValueOptions_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_ServiceOptions_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_ServiceOptions_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_MethodOptions_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_MethodOptions_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_UninterpretedOption_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_SourceCodeInfo_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_SourceCodeInfo_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_SourceCodeInfo_Location_descriptor;
-  private static
-    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_protobuf_SourceCodeInfo_Location_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_google_protobuf_GeneratedCodeInfo_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_google_protobuf_GeneratedCodeInfo_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_google_protobuf_GeneratedCodeInfo_Annotation_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_google_protobuf_GeneratedCodeInfo_Annotation_fieldAccessorTable;
 
   public static com.google.protobuf.Descriptors.FileDescriptor
@@ -30917,5 +40808,5 @@
     return descriptor;
   }
-  private static com.google.protobuf.Descriptors.FileDescriptor
+  private static  com.google.protobuf.Descriptors.FileDescriptor
       descriptor;
   static {
@@ -30923,5 +40814,5 @@
       "\n\020descriptor.proto\022\017google.protobuf\"G\n\021F" +
       "ileDescriptorSet\0222\n\004file\030\001 \003(\0132$.google." +
-      "protobuf.FileDescriptorProto\"\313\003\n\023FileDes" +
+      "protobuf.FileDescriptorProto\"\333\003\n\023FileDes" +
       "criptorProto\022\014\n\004name\030\001 \001(\t\022\017\n\007package\030\002 " +
       "\001(\t\022\022\n\ndependency\030\003 \003(\t\022\031\n\021public_depend" +
@@ -30935,106 +40826,139 @@
       "\0132\034.google.protobuf.FileOptions\0229\n\020sourc" +
       "e_code_info\030\t \001(\0132\037.google.protobuf.Sour" +
-      "ceCodeInfo\"\344\003\n\017DescriptorProto\022\014\n\004name\030\001" +
-      " \001(\t\0224\n\005field\030\002 \003(\0132%.google.protobuf.Fi" +
-      "eldDescriptorProto\0228\n\textension\030\006 \003(\0132%." +
-      "google.protobuf.FieldDescriptorProto\0225\n\013" +
-      "nested_type\030\003 \003(\0132 .google.protobuf.Desc" +
-      "riptorProto\0227\n\tenum_type\030\004 \003(\0132$.google.",
-      "protobuf.EnumDescriptorProto\022H\n\017extensio" +
-      "n_range\030\005 \003(\0132/.google.protobuf.Descript" +
-      "orProto.ExtensionRange\0229\n\noneof_decl\030\010 \003" +
-      "(\0132%.google.protobuf.OneofDescriptorProt" +
-      "o\0220\n\007options\030\007 \001(\0132\037.google.protobuf.Mes" +
-      "sageOptions\032,\n\016ExtensionRange\022\r\n\005start\030\001" +
-      " \001(\005\022\013\n\003end\030\002 \001(\005\"\251\005\n\024FieldDescriptorPro" +
-      "to\022\014\n\004name\030\001 \001(\t\022\016\n\006number\030\003 \001(\005\022:\n\005labe" +
-      "l\030\004 \001(\0162+.google.protobuf.FieldDescripto" +
-      "rProto.Label\0228\n\004type\030\005 \001(\0162*.google.prot",
-      "obuf.FieldDescriptorProto.Type\022\021\n\ttype_n" +
-      "ame\030\006 \001(\t\022\020\n\010extendee\030\002 \001(\t\022\025\n\rdefault_v" +
-      "alue\030\007 \001(\t\022\023\n\013oneof_index\030\t \001(\005\022.\n\007optio" +
-      "ns\030\010 \001(\0132\035.google.protobuf.FieldOptions\"" +
-      "\266\002\n\004Type\022\017\n\013TYPE_DOUBLE\020\001\022\016\n\nTYPE_FLOAT\020" +
-      "\002\022\016\n\nTYPE_INT64\020\003\022\017\n\013TYPE_UINT64\020\004\022\016\n\nTY" +
-      "PE_INT32\020\005\022\020\n\014TYPE_FIXED64\020\006\022\020\n\014TYPE_FIX" +
-      "ED32\020\007\022\r\n\tTYPE_BOOL\020\010\022\017\n\013TYPE_STRING\020\t\022\016" +
-      "\n\nTYPE_GROUP\020\n\022\020\n\014TYPE_MESSAGE\020\013\022\016\n\nTYPE" +
-      "_BYTES\020\014\022\017\n\013TYPE_UINT32\020\r\022\r\n\tTYPE_ENUM\020\016",
-      "\022\021\n\rTYPE_SFIXED32\020\017\022\021\n\rTYPE_SFIXED64\020\020\022\017" +
-      "\n\013TYPE_SINT32\020\021\022\017\n\013TYPE_SINT64\020\022\"C\n\005Labe" +
-      "l\022\022\n\016LABEL_OPTIONAL\020\001\022\022\n\016LABEL_REQUIRED\020" +
-      "\002\022\022\n\016LABEL_REPEATED\020\003\"$\n\024OneofDescriptor" +
-      "Proto\022\014\n\004name\030\001 \001(\t\"\214\001\n\023EnumDescriptorPr" +
-      "oto\022\014\n\004name\030\001 \001(\t\0228\n\005value\030\002 \003(\0132).googl" +
-      "e.protobuf.EnumValueDescriptorProto\022-\n\007o" +
-      "ptions\030\003 \001(\0132\034.google.protobuf.EnumOptio" +
-      "ns\"l\n\030EnumValueDescriptorProto\022\014\n\004name\030\001" +
-      " \001(\t\022\016\n\006number\030\002 \001(\005\0222\n\007options\030\003 \001(\0132!.",
-      "google.protobuf.EnumValueOptions\"\220\001\n\026Ser" +
-      "viceDescriptorProto\022\014\n\004name\030\001 \001(\t\0226\n\006met" +
-      "hod\030\002 \003(\0132&.google.protobuf.MethodDescri" +
-      "ptorProto\0220\n\007options\030\003 \001(\0132\037.google.prot" +
-      "obuf.ServiceOptions\"\177\n\025MethodDescriptorP" +
-      "roto\022\014\n\004name\030\001 \001(\t\022\022\n\ninput_type\030\002 \001(\t\022\023" +
-      "\n\013output_type\030\003 \001(\t\022/\n\007options\030\004 \001(\0132\036.g" +
-      "oogle.protobuf.MethodOptions\"\253\004\n\013FileOpt" +
-      "ions\022\024\n\014java_package\030\001 \001(\t\022\034\n\024java_outer" +
-      "_classname\030\010 \001(\t\022\"\n\023java_multiple_files\030",
-      "\n \001(\010:\005false\022,\n\035java_generate_equals_and" +
-      "_hash\030\024 \001(\010:\005false\022%\n\026java_string_check_" +
-      "utf8\030\033 \001(\010:\005false\022F\n\014optimize_for\030\t \001(\0162" +
-      ").google.protobuf.FileOptions.OptimizeMo" +
-      "de:\005SPEED\022\022\n\ngo_package\030\013 \001(\t\022\"\n\023cc_gene" +
-      "ric_services\030\020 \001(\010:\005false\022$\n\025java_generi" +
-      "c_services\030\021 \001(\010:\005false\022\"\n\023py_generic_se" +
-      "rvices\030\022 \001(\010:\005false\022\031\n\ndeprecated\030\027 \001(\010:" +
-      "\005false\022C\n\024uninterpreted_option\030\347\007 \003(\0132$." +
-      "google.protobuf.UninterpretedOption\":\n\014O",
-      "ptimizeMode\022\t\n\005SPEED\020\001\022\r\n\tCODE_SIZE\020\002\022\020\n" +
-      "\014LITE_RUNTIME\020\003*\t\010\350\007\020\200\200\200\200\002\"\323\001\n\016MessageOp" +
-      "tions\022&\n\027message_set_wire_format\030\001 \001(\010:\005" +
-      "false\022.\n\037no_standard_descriptor_accessor" +
-      "\030\002 \001(\010:\005false\022\031\n\ndeprecated\030\003 \001(\010:\005false" +
-      "\022C\n\024uninterpreted_option\030\347\007 \003(\0132$.google" +
-      ".protobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002" +
-      "\"\276\002\n\014FieldOptions\022:\n\005ctype\030\001 \001(\0162#.googl" +
+      "ceCodeInfo\022\016\n\006syntax\030\014 \001(\t\"\251\005\n\017Descripto" +
+      "rProto\022\014\n\004name\030\001 \001(\t\0224\n\005field\030\002 \003(\0132%.go" +
+      "ogle.protobuf.FieldDescriptorProto\0228\n\tex" +
+      "tension\030\006 \003(\0132%.google.protobuf.FieldDes" +
+      "criptorProto\0225\n\013nested_type\030\003 \003(\0132 .goog" +
+      "le.protobuf.DescriptorProto\0227\n\tenum_type",
+      "\030\004 \003(\0132$.google.protobuf.EnumDescriptorP" +
+      "roto\022H\n\017extension_range\030\005 \003(\0132/.google.p" +
+      "rotobuf.DescriptorProto.ExtensionRange\0229" +
+      "\n\noneof_decl\030\010 \003(\0132%.google.protobuf.One" +
+      "ofDescriptorProto\0220\n\007options\030\007 \001(\0132\037.goo" +
+      "gle.protobuf.MessageOptions\022F\n\016reserved_" +
+      "range\030\t \003(\0132..google.protobuf.Descriptor" +
+      "Proto.ReservedRange\022\025\n\rreserved_name\030\n \003" +
+      "(\t\032e\n\016ExtensionRange\022\r\n\005start\030\001 \001(\005\022\013\n\003e" +
+      "nd\030\002 \001(\005\0227\n\007options\030\003 \001(\0132&.google.proto",
+      "buf.ExtensionRangeOptions\032+\n\rReservedRan" +
+      "ge\022\r\n\005start\030\001 \001(\005\022\013\n\003end\030\002 \001(\005\"g\n\025Extens" +
+      "ionRangeOptions\022C\n\024uninterpreted_option\030" +
+      "\347\007 \003(\0132$.google.protobuf.UninterpretedOp" +
+      "tion*\t\010\350\007\020\200\200\200\200\002\"\274\005\n\024FieldDescriptorProto" +
+      "\022\014\n\004name\030\001 \001(\t\022\016\n\006number\030\003 \001(\005\022:\n\005label\030" +
+      "\004 \001(\0162+.google.protobuf.FieldDescriptorP" +
+      "roto.Label\0228\n\004type\030\005 \001(\0162*.google.protob" +
+      "uf.FieldDescriptorProto.Type\022\021\n\ttype_nam" +
+      "e\030\006 \001(\t\022\020\n\010extendee\030\002 \001(\t\022\025\n\rdefault_val",
+      "ue\030\007 \001(\t\022\023\n\013oneof_index\030\t \001(\005\022\021\n\tjson_na" +
+      "me\030\n \001(\t\022.\n\007options\030\010 \001(\0132\035.google.proto" +
+      "buf.FieldOptions\"\266\002\n\004Type\022\017\n\013TYPE_DOUBLE" +
+      "\020\001\022\016\n\nTYPE_FLOAT\020\002\022\016\n\nTYPE_INT64\020\003\022\017\n\013TY" +
+      "PE_UINT64\020\004\022\016\n\nTYPE_INT32\020\005\022\020\n\014TYPE_FIXE" +
+      "D64\020\006\022\020\n\014TYPE_FIXED32\020\007\022\r\n\tTYPE_BOOL\020\010\022\017" +
+      "\n\013TYPE_STRING\020\t\022\016\n\nTYPE_GROUP\020\n\022\020\n\014TYPE_" +
+      "MESSAGE\020\013\022\016\n\nTYPE_BYTES\020\014\022\017\n\013TYPE_UINT32" +
+      "\020\r\022\r\n\tTYPE_ENUM\020\016\022\021\n\rTYPE_SFIXED32\020\017\022\021\n\r" +
+      "TYPE_SFIXED64\020\020\022\017\n\013TYPE_SINT32\020\021\022\017\n\013TYPE",
+      "_SINT64\020\022\"C\n\005Label\022\022\n\016LABEL_OPTIONAL\020\001\022\022" +
+      "\n\016LABEL_REQUIRED\020\002\022\022\n\016LABEL_REPEATED\020\003\"T" +
+      "\n\024OneofDescriptorProto\022\014\n\004name\030\001 \001(\t\022.\n\007" +
+      "options\030\002 \001(\0132\035.google.protobuf.OneofOpt" +
+      "ions\"\214\001\n\023EnumDescriptorProto\022\014\n\004name\030\001 \001" +
+      "(\t\0228\n\005value\030\002 \003(\0132).google.protobuf.Enum" +
+      "ValueDescriptorProto\022-\n\007options\030\003 \001(\0132\034." +
+      "google.protobuf.EnumOptions\"l\n\030EnumValue" +
+      "DescriptorProto\022\014\n\004name\030\001 \001(\t\022\016\n\006number\030" +
+      "\002 \001(\005\0222\n\007options\030\003 \001(\0132!.google.protobuf",
+      ".EnumValueOptions\"\220\001\n\026ServiceDescriptorP" +
+      "roto\022\014\n\004name\030\001 \001(\t\0226\n\006method\030\002 \003(\0132&.goo" +
+      "gle.protobuf.MethodDescriptorProto\0220\n\007op" +
+      "tions\030\003 \001(\0132\037.google.protobuf.ServiceOpt" +
+      "ions\"\301\001\n\025MethodDescriptorProto\022\014\n\004name\030\001" +
+      " \001(\t\022\022\n\ninput_type\030\002 \001(\t\022\023\n\013output_type\030" +
+      "\003 \001(\t\022/\n\007options\030\004 \001(\0132\036.google.protobuf" +
+      ".MethodOptions\022\037\n\020client_streaming\030\005 \001(\010" +
+      ":\005false\022\037\n\020server_streaming\030\006 \001(\010:\005false" +
+      "\"\360\005\n\013FileOptions\022\024\n\014java_package\030\001 \001(\t\022\034",
+      "\n\024java_outer_classname\030\010 \001(\t\022\"\n\023java_mul" +
+      "tiple_files\030\n \001(\010:\005false\022)\n\035java_generat" +
+      "e_equals_and_hash\030\024 \001(\010B\002\030\001\022%\n\026java_stri" +
+      "ng_check_utf8\030\033 \001(\010:\005false\022F\n\014optimize_f" +
+      "or\030\t \001(\0162).google.protobuf.FileOptions.O" +
+      "ptimizeMode:\005SPEED\022\022\n\ngo_package\030\013 \001(\t\022\"" +
+      "\n\023cc_generic_services\030\020 \001(\010:\005false\022$\n\025ja" +
+      "va_generic_services\030\021 \001(\010:\005false\022\"\n\023py_g" +
+      "eneric_services\030\022 \001(\010:\005false\022#\n\024php_gene" +
+      "ric_services\030* \001(\010:\005false\022\031\n\ndeprecated\030",
+      "\027 \001(\010:\005false\022\037\n\020cc_enable_arenas\030\037 \001(\010:\005" +
+      "false\022\031\n\021objc_class_prefix\030$ \001(\t\022\030\n\020csha" +
+      "rp_namespace\030% \001(\t\022\024\n\014swift_prefix\030\' \001(\t" +
+      "\022\030\n\020php_class_prefix\030( \001(\t\022\025\n\rphp_namesp" +
+      "ace\030) \001(\t\022C\n\024uninterpreted_option\030\347\007 \003(\013" +
+      "2$.google.protobuf.UninterpretedOption\":" +
+      "\n\014OptimizeMode\022\t\n\005SPEED\020\001\022\r\n\tCODE_SIZE\020\002" +
+      "\022\020\n\014LITE_RUNTIME\020\003*\t\010\350\007\020\200\200\200\200\002J\004\010&\020\'\"\362\001\n\016" +
+      "MessageOptions\022&\n\027message_set_wire_forma" +
+      "t\030\001 \001(\010:\005false\022.\n\037no_standard_descriptor",
+      "_accessor\030\002 \001(\010:\005false\022\031\n\ndeprecated\030\003 \001" +
+      "(\010:\005false\022\021\n\tmap_entry\030\007 \001(\010\022C\n\024uninterp" +
+      "reted_option\030\347\007 \003(\0132$.google.protobuf.Un" +
+      "interpretedOption*\t\010\350\007\020\200\200\200\200\002J\004\010\010\020\tJ\004\010\t\020\n" +
+      "\"\236\003\n\014FieldOptions\022:\n\005ctype\030\001 \001(\0162#.googl" +
       "e.protobuf.FieldOptions.CType:\006STRING\022\016\n" +
-      "\006packed\030\002 \001(\010\022\023\n\004lazy\030\005 \001(\010:\005false\022\031\n\nde",
-      "precated\030\003 \001(\010:\005false\022\034\n\024experimental_ma" +
-      "p_key\030\t \001(\t\022\023\n\004weak\030\n \001(\010:\005false\022C\n\024unin" +
-      "terpreted_option\030\347\007 \003(\0132$.google.protobu" +
-      "f.UninterpretedOption\"/\n\005CType\022\n\n\006STRING" +
-      "\020\000\022\010\n\004CORD\020\001\022\020\n\014STRING_PIECE\020\002*\t\010\350\007\020\200\200\200\200" +
-      "\002\"\215\001\n\013EnumOptions\022\023\n\013allow_alias\030\002 \001(\010\022\031" +
-      "\n\ndeprecated\030\003 \001(\010:\005false\022C\n\024uninterpret" +
-      "ed_option\030\347\007 \003(\0132$.google.protobuf.Unint" +
-      "erpretedOption*\t\010\350\007\020\200\200\200\200\002\"}\n\020EnumValueOp" +
-      "tions\022\031\n\ndeprecated\030\001 \001(\010:\005false\022C\n\024unin",
-      "terpreted_option\030\347\007 \003(\0132$.google.protobu" +
-      "f.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"{\n\016Serv" +
-      "iceOptions\022\031\n\ndeprecated\030! \001(\010:\005false\022C\n" +
-      "\024uninterpreted_option\030\347\007 \003(\0132$.google.pr" +
-      "otobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"z\n" +
-      "\rMethodOptions\022\031\n\ndeprecated\030! \001(\010:\005fals" +
-      "e\022C\n\024uninterpreted_option\030\347\007 \003(\0132$.googl" +
-      "e.protobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200" +
-      "\002\"\236\002\n\023UninterpretedOption\022;\n\004name\030\002 \003(\0132" +
-      "-.google.protobuf.UninterpretedOption.Na",
-      "mePart\022\030\n\020identifier_value\030\003 \001(\t\022\032\n\022posi" +
-      "tive_int_value\030\004 \001(\004\022\032\n\022negative_int_val" +
-      "ue\030\005 \001(\003\022\024\n\014double_value\030\006 \001(\001\022\024\n\014string" +
-      "_value\030\007 \001(\014\022\027\n\017aggregate_value\030\010 \001(\t\0323\n" +
-      "\010NamePart\022\021\n\tname_part\030\001 \002(\t\022\024\n\014is_exten" +
-      "sion\030\002 \002(\010\"\261\001\n\016SourceCodeInfo\022:\n\010locatio" +
-      "n\030\001 \003(\0132(.google.protobuf.SourceCodeInfo" +
-      ".Location\032c\n\010Location\022\020\n\004path\030\001 \003(\005B\002\020\001\022" +
-      "\020\n\004span\030\002 \003(\005B\002\020\001\022\030\n\020leading_comments\030\003 " +
-      "\001(\t\022\031\n\021trailing_comments\030\004 \001(\tB)\n\023com.go",
-      "ogle.protobufB\020DescriptorProtosH\001"
+      "\006packed\030\002 \001(\010\022?\n\006jstype\030\006 \001(\0162$.google.p" +
+      "rotobuf.FieldOptions.JSType:\tJS_NORMAL\022\023" +
+      "\n\004lazy\030\005 \001(\010:\005false\022\031\n\ndeprecated\030\003 \001(\010:" +
+      "\005false\022\023\n\004weak\030\n \001(\010:\005false\022C\n\024uninterpr",
+      "eted_option\030\347\007 \003(\0132$.google.protobuf.Uni" +
+      "nterpretedOption\"/\n\005CType\022\n\n\006STRING\020\000\022\010\n" +
+      "\004CORD\020\001\022\020\n\014STRING_PIECE\020\002\"5\n\006JSType\022\r\n\tJ" +
+      "S_NORMAL\020\000\022\r\n\tJS_STRING\020\001\022\r\n\tJS_NUMBER\020\002" +
+      "*\t\010\350\007\020\200\200\200\200\002J\004\010\004\020\005\"^\n\014OneofOptions\022C\n\024uni" +
+      "nterpreted_option\030\347\007 \003(\0132$.google.protob" +
+      "uf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"\223\001\n\013En" +
+      "umOptions\022\023\n\013allow_alias\030\002 \001(\010\022\031\n\ndeprec" +
+      "ated\030\003 \001(\010:\005false\022C\n\024uninterpreted_optio" +
+      "n\030\347\007 \003(\0132$.google.protobuf.Uninterpreted",
+      "Option*\t\010\350\007\020\200\200\200\200\002J\004\010\005\020\006\"}\n\020EnumValueOpti" +
+      "ons\022\031\n\ndeprecated\030\001 \001(\010:\005false\022C\n\024uninte" +
+      "rpreted_option\030\347\007 \003(\0132$.google.protobuf." +
+      "UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"{\n\016Servic" +
+      "eOptions\022\031\n\ndeprecated\030! \001(\010:\005false\022C\n\024u" +
+      "ninterpreted_option\030\347\007 \003(\0132$.google.prot" +
+      "obuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"\255\002\n\r" +
+      "MethodOptions\022\031\n\ndeprecated\030! \001(\010:\005false" +
+      "\022_\n\021idempotency_level\030\" \001(\0162/.google.pro" +
+      "tobuf.MethodOptions.IdempotencyLevel:\023ID",
+      "EMPOTENCY_UNKNOWN\022C\n\024uninterpreted_optio" +
+      "n\030\347\007 \003(\0132$.google.protobuf.Uninterpreted" +
+      "Option\"P\n\020IdempotencyLevel\022\027\n\023IDEMPOTENC" +
+      "Y_UNKNOWN\020\000\022\023\n\017NO_SIDE_EFFECTS\020\001\022\016\n\nIDEM" +
+      "POTENT\020\002*\t\010\350\007\020\200\200\200\200\002\"\236\002\n\023UninterpretedOpt" +
+      "ion\022;\n\004name\030\002 \003(\0132-.google.protobuf.Unin" +
+      "terpretedOption.NamePart\022\030\n\020identifier_v" +
+      "alue\030\003 \001(\t\022\032\n\022positive_int_value\030\004 \001(\004\022\032" +
+      "\n\022negative_int_value\030\005 \001(\003\022\024\n\014double_val" +
+      "ue\030\006 \001(\001\022\024\n\014string_value\030\007 \001(\014\022\027\n\017aggreg",
+      "ate_value\030\010 \001(\t\0323\n\010NamePart\022\021\n\tname_part" +
+      "\030\001 \002(\t\022\024\n\014is_extension\030\002 \002(\010\"\325\001\n\016SourceC" +
+      "odeInfo\022:\n\010location\030\001 \003(\0132(.google.proto" +
+      "buf.SourceCodeInfo.Location\032\206\001\n\010Location" +
+      "\022\020\n\004path\030\001 \003(\005B\002\020\001\022\020\n\004span\030\002 \003(\005B\002\020\001\022\030\n\020" +
+      "leading_comments\030\003 \001(\t\022\031\n\021trailing_comme" +
+      "nts\030\004 \001(\t\022!\n\031leading_detached_comments\030\006" +
+      " \003(\t\"\247\001\n\021GeneratedCodeInfo\022A\n\nannotation" +
+      "\030\001 \003(\0132-.google.protobuf.GeneratedCodeIn" +
+      "fo.Annotation\032O\n\nAnnotation\022\020\n\004path\030\001 \003(",
+      "\005B\002\020\001\022\023\n\013source_file\030\002 \001(\t\022\r\n\005begin\030\003 \001(" +
+      "\005\022\013\n\003end\030\004 \001(\005B\214\001\n\023com.google.protobufB\020" +
+      "DescriptorProtosH\001Z>github.com/golang/pr" +
+      "otobuf/protoc-gen-go/descriptor;descript" +
+      "or\242\002\003GPB\252\002\032Google.Protobuf.Reflection"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
         new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
-          @Override
-		public com.google.protobuf.ExtensionRegistry assignDescriptors(
+          public com.google.protobuf.ExtensionRegistry assignDescriptors(
               com.google.protobuf.Descriptors.FileDescriptor root) {
             descriptor = root;
@@ -31049,5 +40973,5 @@
       getDescriptor().getMessageTypes().get(0);
     internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_FileDescriptorSet_descriptor,
         new java.lang.String[] { "File", });
@@ -31055,101 +40979,119 @@
       getDescriptor().getMessageTypes().get(1);
     internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_FileDescriptorProto_descriptor,
-        new java.lang.String[] { "Name", "Package", "Dependency", "PublicDependency", "WeakDependency", "MessageType", "EnumType", "Service", "Extension", "Options", "SourceCodeInfo", });
+        new java.lang.String[] { "Name", "Package", "Dependency", "PublicDependency", "WeakDependency", "MessageType", "EnumType", "Service", "Extension", "Options", "SourceCodeInfo", "Syntax", });
     internal_static_google_protobuf_DescriptorProto_descriptor =
       getDescriptor().getMessageTypes().get(2);
     internal_static_google_protobuf_DescriptorProto_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_DescriptorProto_descriptor,
-        new java.lang.String[] { "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "OneofDecl", "Options", });
+        new java.lang.String[] { "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "OneofDecl", "Options", "ReservedRange", "ReservedName", });
     internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor =
       internal_static_google_protobuf_DescriptorProto_descriptor.getNestedTypes().get(0);
     internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor,
+        new java.lang.String[] { "Start", "End", "Options", });
+    internal_static_google_protobuf_DescriptorProto_ReservedRange_descriptor =
+      internal_static_google_protobuf_DescriptorProto_descriptor.getNestedTypes().get(1);
+    internal_static_google_protobuf_DescriptorProto_ReservedRange_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_google_protobuf_DescriptorProto_ReservedRange_descriptor,
         new java.lang.String[] { "Start", "End", });
+    internal_static_google_protobuf_ExtensionRangeOptions_descriptor =
+      getDescriptor().getMessageTypes().get(3);
+    internal_static_google_protobuf_ExtensionRangeOptions_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_google_protobuf_ExtensionRangeOptions_descriptor,
+        new java.lang.String[] { "UninterpretedOption", });
     internal_static_google_protobuf_FieldDescriptorProto_descriptor =
-      getDescriptor().getMessageTypes().get(3);
+      getDescriptor().getMessageTypes().get(4);
     internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_FieldDescriptorProto_descriptor,
-        new java.lang.String[] { "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "OneofIndex", "Options", });
+        new java.lang.String[] { "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "OneofIndex", "JsonName", "Options", });
     internal_static_google_protobuf_OneofDescriptorProto_descriptor =
-      getDescriptor().getMessageTypes().get(4);
+      getDescriptor().getMessageTypes().get(5);
     internal_static_google_protobuf_OneofDescriptorProto_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_OneofDescriptorProto_descriptor,
-        new java.lang.String[] { "Name", });
+        new java.lang.String[] { "Name", "Options", });
     internal_static_google_protobuf_EnumDescriptorProto_descriptor =
-      getDescriptor().getMessageTypes().get(5);
+      getDescriptor().getMessageTypes().get(6);
     internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_EnumDescriptorProto_descriptor,
         new java.lang.String[] { "Name", "Value", "Options", });
     internal_static_google_protobuf_EnumValueDescriptorProto_descriptor =
-      getDescriptor().getMessageTypes().get(6);
+      getDescriptor().getMessageTypes().get(7);
     internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_EnumValueDescriptorProto_descriptor,
         new java.lang.String[] { "Name", "Number", "Options", });
     internal_static_google_protobuf_ServiceDescriptorProto_descriptor =
-      getDescriptor().getMessageTypes().get(7);
+      getDescriptor().getMessageTypes().get(8);
     internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_ServiceDescriptorProto_descriptor,
         new java.lang.String[] { "Name", "Method", "Options", });
     internal_static_google_protobuf_MethodDescriptorProto_descriptor =
-      getDescriptor().getMessageTypes().get(8);
+      getDescriptor().getMessageTypes().get(9);
     internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_MethodDescriptorProto_descriptor,
-        new java.lang.String[] { "Name", "InputType", "OutputType", "Options", });
+        new java.lang.String[] { "Name", "InputType", "OutputType", "Options", "ClientStreaming", "ServerStreaming", });
     internal_static_google_protobuf_FileOptions_descriptor =
-      getDescriptor().getMessageTypes().get(9);
+      getDescriptor().getMessageTypes().get(10);
     internal_static_google_protobuf_FileOptions_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_FileOptions_descriptor,
-        new java.lang.String[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "JavaGenerateEqualsAndHash", "JavaStringCheckUtf8", "OptimizeFor", "GoPackage", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "Deprecated", "UninterpretedOption", });
+        new java.lang.String[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "JavaGenerateEqualsAndHash", "JavaStringCheckUtf8", "OptimizeFor", "GoPackage", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "PhpGenericServices", "Deprecated", "CcEnableArenas", "ObjcClassPrefix", "CsharpNamespace", "SwiftPrefix", "PhpClassPrefix", "PhpNamespace", "UninterpretedOption", });
     internal_static_google_protobuf_MessageOptions_descriptor =
-      getDescriptor().getMessageTypes().get(10);
+      getDescriptor().getMessageTypes().get(11);
     internal_static_google_protobuf_MessageOptions_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_MessageOptions_descriptor,
-        new java.lang.String[] { "MessageSetWireFormat", "NoStandardDescriptorAccessor", "Deprecated", "UninterpretedOption", });
+        new java.lang.String[] { "MessageSetWireFormat", "NoStandardDescriptorAccessor", "Deprecated", "MapEntry", "UninterpretedOption", });
     internal_static_google_protobuf_FieldOptions_descriptor =
-      getDescriptor().getMessageTypes().get(11);
+      getDescriptor().getMessageTypes().get(12);
     internal_static_google_protobuf_FieldOptions_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_FieldOptions_descriptor,
-        new java.lang.String[] { "Ctype", "Packed", "Lazy", "Deprecated", "ExperimentalMapKey", "Weak", "UninterpretedOption", });
+        new java.lang.String[] { "Ctype", "Packed", "Jstype", "Lazy", "Deprecated", "Weak", "UninterpretedOption", });
+    internal_static_google_protobuf_OneofOptions_descriptor =
+      getDescriptor().getMessageTypes().get(13);
+    internal_static_google_protobuf_OneofOptions_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_google_protobuf_OneofOptions_descriptor,
+        new java.lang.String[] { "UninterpretedOption", });
     internal_static_google_protobuf_EnumOptions_descriptor =
-      getDescriptor().getMessageTypes().get(12);
+      getDescriptor().getMessageTypes().get(14);
     internal_static_google_protobuf_EnumOptions_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_EnumOptions_descriptor,
         new java.lang.String[] { "AllowAlias", "Deprecated", "UninterpretedOption", });
     internal_static_google_protobuf_EnumValueOptions_descriptor =
-      getDescriptor().getMessageTypes().get(13);
+      getDescriptor().getMessageTypes().get(15);
     internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_EnumValueOptions_descriptor,
         new java.lang.String[] { "Deprecated", "UninterpretedOption", });
     internal_static_google_protobuf_ServiceOptions_descriptor =
-      getDescriptor().getMessageTypes().get(14);
+      getDescriptor().getMessageTypes().get(16);
     internal_static_google_protobuf_ServiceOptions_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_ServiceOptions_descriptor,
         new java.lang.String[] { "Deprecated", "UninterpretedOption", });
     internal_static_google_protobuf_MethodOptions_descriptor =
-      getDescriptor().getMessageTypes().get(15);
+      getDescriptor().getMessageTypes().get(17);
     internal_static_google_protobuf_MethodOptions_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_MethodOptions_descriptor,
-        new java.lang.String[] { "Deprecated", "UninterpretedOption", });
+        new java.lang.String[] { "Deprecated", "IdempotencyLevel", "UninterpretedOption", });
     internal_static_google_protobuf_UninterpretedOption_descriptor =
-      getDescriptor().getMessageTypes().get(16);
+      getDescriptor().getMessageTypes().get(18);
     internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_UninterpretedOption_descriptor,
         new java.lang.String[] { "Name", "IdentifierValue", "PositiveIntValue", "NegativeIntValue", "DoubleValue", "StringValue", "AggregateValue", });
@@ -31157,11 +41099,11 @@
       internal_static_google_protobuf_UninterpretedOption_descriptor.getNestedTypes().get(0);
     internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor,
         new java.lang.String[] { "NamePart", "IsExtension", });
     internal_static_google_protobuf_SourceCodeInfo_descriptor =
-      getDescriptor().getMessageTypes().get(17);
+      getDescriptor().getMessageTypes().get(19);
     internal_static_google_protobuf_SourceCodeInfo_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_SourceCodeInfo_descriptor,
         new java.lang.String[] { "Location", });
@@ -31169,7 +41111,19 @@
       internal_static_google_protobuf_SourceCodeInfo_descriptor.getNestedTypes().get(0);
     internal_static_google_protobuf_SourceCodeInfo_Location_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_google_protobuf_SourceCodeInfo_Location_descriptor,
-        new java.lang.String[] { "Path", "Span", "LeadingComments", "TrailingComments", });
+        new java.lang.String[] { "Path", "Span", "LeadingComments", "TrailingComments", "LeadingDetachedComments", });
+    internal_static_google_protobuf_GeneratedCodeInfo_descriptor =
+      getDescriptor().getMessageTypes().get(20);
+    internal_static_google_protobuf_GeneratedCodeInfo_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_google_protobuf_GeneratedCodeInfo_descriptor,
+        new java.lang.String[] { "Annotation", });
+    internal_static_google_protobuf_GeneratedCodeInfo_Annotation_descriptor =
+      internal_static_google_protobuf_GeneratedCodeInfo_descriptor.getNestedTypes().get(0);
+    internal_static_google_protobuf_GeneratedCodeInfo_Annotation_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_google_protobuf_GeneratedCodeInfo_Annotation_descriptor,
+        new java.lang.String[] { "Path", "SourceFile", "Begin", "End", });
   }
 
Index: applications/editors/josm/plugins/pbf/gen/crosby/binary/Fileformat.java
===================================================================
--- applications/editors/josm/plugins/pbf/gen/crosby/binary/Fileformat.java	(revision 33771)
+++ applications/editors/josm/plugins/pbf/gen/crosby/binary/Fileformat.java	(revision 33772)
@@ -14,85 +14,85 @@
 
     /**
+     * <pre>
+     * No compression
+     * </pre>
+     *
      * <code>optional bytes raw = 1;</code>
-     *
+     */
+    boolean hasRaw();
+    /**
      * <pre>
      * No compression
      * </pre>
-     */
-    boolean hasRaw();
-    /**
+     *
      * <code>optional bytes raw = 1;</code>
-     *
-     * <pre>
-     * No compression
-     * </pre>
      */
     com.google.protobuf.ByteString getRaw();
 
     /**
+     * <pre>
+     * When compressed, the uncompressed size
+     * </pre>
+     *
      * <code>optional int32 raw_size = 2;</code>
-     *
+     */
+    boolean hasRawSize();
+    /**
      * <pre>
      * When compressed, the uncompressed size
      * </pre>
-     */
-    boolean hasRawSize();
-    /**
+     *
      * <code>optional int32 raw_size = 2;</code>
-     *
-     * <pre>
-     * When compressed, the uncompressed size
-     * </pre>
      */
     int getRawSize();
 
     /**
+     * <pre>
+     * Possible compressed versions of the data.
+     * </pre>
+     *
      * <code>optional bytes zlib_data = 3;</code>
-     *
+     */
+    boolean hasZlibData();
+    /**
      * <pre>
      * Possible compressed versions of the data.
      * </pre>
-     */
-    boolean hasZlibData();
-    /**
+     *
      * <code>optional bytes zlib_data = 3;</code>
-     *
-     * <pre>
-     * Possible compressed versions of the data.
-     * </pre>
      */
     com.google.protobuf.ByteString getZlibData();
 
     /**
+     * <pre>
+     * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
+     * </pre>
+     *
      * <code>optional bytes lzma_data = 4;</code>
-     *
+     */
+    boolean hasLzmaData();
+    /**
      * <pre>
      * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
      * </pre>
-     */
-    boolean hasLzmaData();
-    /**
+     *
      * <code>optional bytes lzma_data = 4;</code>
-     *
-     * <pre>
-     * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
-     * </pre>
      */
     com.google.protobuf.ByteString getLzmaData();
 
     /**
+     * <pre>
+     * Formerly used for bzip2 compressed data. Depreciated in 2010.
+     * </pre>
+     *
      * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
-     *
+     */
+    @java.lang.Deprecated boolean hasOBSOLETEBzip2Data();
+    /**
      * <pre>
      * Formerly used for bzip2 compressed data. Depreciated in 2010.
      * </pre>
-     */
-    @java.lang.Deprecated boolean hasOBSOLETEBzip2Data();
-    /**
+     *
      * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
-     *
-     * <pre>
-     * Formerly used for bzip2 compressed data. Depreciated in 2010.
-     * </pre>
      */
     @java.lang.Deprecated com.google.protobuf.ByteString getOBSOLETEBzip2Data();
@@ -101,135 +101,62 @@
    * Protobuf type {@code OSMPBF.Blob}
    */
-  public static final class Blob extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class Blob extends
+      com.google.protobuf.GeneratedMessageLite<
+          Blob, Blob.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.Blob)
       BlobOrBuilder {
-    // Use Blob.newBuilder() to construct.
-    private Blob(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private Blob(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final Blob defaultInstance;
-    public static Blob getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public Blob getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private Blob(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 10: {
-              bitField0_ |= 0x00000001;
-              raw_ = input.readBytes();
-              break;
-            }
-            case 16: {
-              bitField0_ |= 0x00000002;
-              rawSize_ = input.readInt32();
-              break;
-            }
-            case 26: {
-              bitField0_ |= 0x00000004;
-              zlibData_ = input.readBytes();
-              break;
-            }
-            case 34: {
-              bitField0_ |= 0x00000008;
-              lzmaData_ = input.readBytes();
-              break;
-            }
-            case 42: {
-              bitField0_ |= 0x00000010;
-              oBSOLETEBzip2Data_ = input.readBytes();
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<Blob> PARSER =
-        new com.google.protobuf.AbstractParser<Blob>() {
-      @Override
-	public Blob parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Blob(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<Blob> getParserForType() {
-      return PARSER;
-    }
-
+    private Blob() {
+      raw_ = com.google.protobuf.ByteString.EMPTY;
+      zlibData_ = com.google.protobuf.ByteString.EMPTY;
+      lzmaData_ = com.google.protobuf.ByteString.EMPTY;
+      oBSOLETEBzip2Data_ = com.google.protobuf.ByteString.EMPTY;
+    }
     private int bitField0_;
     public static final int RAW_FIELD_NUMBER = 1;
     private com.google.protobuf.ByteString raw_;
     /**
+     * <pre>
+     * No compression
+     * </pre>
+     *
      * <code>optional bytes raw = 1;</code>
-     *
+     */
+    public boolean hasRaw() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
      * <pre>
      * No compression
      * </pre>
-     */
-    @Override
-	public boolean hasRaw() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
+     *
      * <code>optional bytes raw = 1;</code>
-     *
+     */
+    public com.google.protobuf.ByteString getRaw() {
+      return raw_;
+    }
+    /**
      * <pre>
      * No compression
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString getRaw() {
-      return raw_;
+     *
+     * <code>optional bytes raw = 1;</code>
+     */
+    private void setRaw(com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+      raw_ = value;
+    }
+    /**
+     * <pre>
+     * No compression
+     * </pre>
+     *
+     * <code>optional bytes raw = 1;</code>
+     */
+    private void clearRaw() {
+      bitField0_ = (bitField0_ & ~0x00000001);
+      raw_ = getDefaultInstance().getRaw();
     }
 
@@ -237,24 +164,44 @@
     private int rawSize_;
     /**
+     * <pre>
+     * When compressed, the uncompressed size
+     * </pre>
+     *
      * <code>optional int32 raw_size = 2;</code>
-     *
+     */
+    public boolean hasRawSize() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
      * <pre>
      * When compressed, the uncompressed size
      * </pre>
-     */
-    @Override
-	public boolean hasRawSize() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
+     *
      * <code>optional int32 raw_size = 2;</code>
-     *
+     */
+    public int getRawSize() {
+      return rawSize_;
+    }
+    /**
      * <pre>
      * When compressed, the uncompressed size
      * </pre>
-     */
-    @Override
-	public int getRawSize() {
-      return rawSize_;
+     *
+     * <code>optional int32 raw_size = 2;</code>
+     */
+    private void setRawSize(int value) {
+      bitField0_ |= 0x00000002;
+      rawSize_ = value;
+    }
+    /**
+     * <pre>
+     * When compressed, the uncompressed size
+     * </pre>
+     *
+     * <code>optional int32 raw_size = 2;</code>
+     */
+    private void clearRawSize() {
+      bitField0_ = (bitField0_ & ~0x00000002);
+      rawSize_ = 0;
     }
 
@@ -262,24 +209,47 @@
     private com.google.protobuf.ByteString zlibData_;
     /**
+     * <pre>
+     * Possible compressed versions of the data.
+     * </pre>
+     *
      * <code>optional bytes zlib_data = 3;</code>
-     *
+     */
+    public boolean hasZlibData() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
      * <pre>
      * Possible compressed versions of the data.
      * </pre>
-     */
-    @Override
-	public boolean hasZlibData() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
+     *
      * <code>optional bytes zlib_data = 3;</code>
-     *
+     */
+    public com.google.protobuf.ByteString getZlibData() {
+      return zlibData_;
+    }
+    /**
      * <pre>
      * Possible compressed versions of the data.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString getZlibData() {
-      return zlibData_;
+     *
+     * <code>optional bytes zlib_data = 3;</code>
+     */
+    private void setZlibData(com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+      zlibData_ = value;
+    }
+    /**
+     * <pre>
+     * Possible compressed versions of the data.
+     * </pre>
+     *
+     * <code>optional bytes zlib_data = 3;</code>
+     */
+    private void clearZlibData() {
+      bitField0_ = (bitField0_ & ~0x00000004);
+      zlibData_ = getDefaultInstance().getZlibData();
     }
 
@@ -287,24 +257,47 @@
     private com.google.protobuf.ByteString lzmaData_;
     /**
+     * <pre>
+     * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
+     * </pre>
+     *
      * <code>optional bytes lzma_data = 4;</code>
-     *
+     */
+    public boolean hasLzmaData() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
      * <pre>
      * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
      * </pre>
-     */
-    @Override
-	public boolean hasLzmaData() {
-      return ((bitField0_ & 0x00000008) == 0x00000008);
-    }
-    /**
+     *
      * <code>optional bytes lzma_data = 4;</code>
-     *
+     */
+    public com.google.protobuf.ByteString getLzmaData() {
+      return lzmaData_;
+    }
+    /**
      * <pre>
      * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString getLzmaData() {
-      return lzmaData_;
+     *
+     * <code>optional bytes lzma_data = 4;</code>
+     */
+    private void setLzmaData(com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+      lzmaData_ = value;
+    }
+    /**
+     * <pre>
+     * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
+     * </pre>
+     *
+     * <code>optional bytes lzma_data = 4;</code>
+     */
+    private void clearLzmaData() {
+      bitField0_ = (bitField0_ & ~0x00000008);
+      lzmaData_ = getDefaultInstance().getLzmaData();
     }
 
@@ -312,48 +305,51 @@
     private com.google.protobuf.ByteString oBSOLETEBzip2Data_;
     /**
+     * <pre>
+     * Formerly used for bzip2 compressed data. Depreciated in 2010.
+     * </pre>
+     *
      * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
-     *
+     */
+    @java.lang.Deprecated public boolean hasOBSOLETEBzip2Data() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
      * <pre>
      * Formerly used for bzip2 compressed data. Depreciated in 2010.
      * </pre>
-     */
-    @Override
-	@java.lang.Deprecated public boolean hasOBSOLETEBzip2Data() {
-      return ((bitField0_ & 0x00000010) == 0x00000010);
-    }
-    /**
+     *
      * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
-     *
+     */
+    @java.lang.Deprecated public com.google.protobuf.ByteString getOBSOLETEBzip2Data() {
+      return oBSOLETEBzip2Data_;
+    }
+    /**
      * <pre>
      * Formerly used for bzip2 compressed data. Depreciated in 2010.
      * </pre>
-     */
-    @Override
-	@java.lang.Deprecated public com.google.protobuf.ByteString getOBSOLETEBzip2Data() {
-      return oBSOLETEBzip2Data_;
-    }
-
-    private void initFields() {
-      raw_ = com.google.protobuf.ByteString.EMPTY;
-      rawSize_ = 0;
-      zlibData_ = com.google.protobuf.ByteString.EMPTY;
-      lzmaData_ = com.google.protobuf.ByteString.EMPTY;
-      oBSOLETEBzip2Data_ = com.google.protobuf.ByteString.EMPTY;
-    }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+     *
+     * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
+     */
+    private void setOBSOLETEBzip2Data(com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+      oBSOLETEBzip2Data_ = value;
+    }
+    /**
+     * <pre>
+     * Formerly used for bzip2 compressed data. Depreciated in 2010.
+     * </pre>
+     *
+     * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
+     */
+    private void clearOBSOLETEBzip2Data() {
+      bitField0_ = (bitField0_ & ~0x00000010);
+      oBSOLETEBzip2Data_ = getDefaultInstance().getOBSOLETEBzip2Data();
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeBytes(1, raw_);
@@ -371,10 +367,8 @@
         output.writeBytes(5, oBSOLETEBzip2Data_);
       }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -401,20 +395,27 @@
           .computeBytesSize(5, oBSOLETEBzip2Data_);
       }
-      size += unknownFields.size();
+      size += unknownFields.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 crosby.binary.Fileformat.Blob parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Fileformat.Blob parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Fileformat.Blob parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Fileformat.Blob parseFrom(
@@ -422,9 +423,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Fileformat.Blob parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Fileformat.Blob parseFrom(
@@ -432,9 +435,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Fileformat.Blob parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Fileformat.Blob parseFrom(
@@ -442,9 +447,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Fileformat.Blob parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Fileformat.Blob parseDelimitedFrom(
@@ -452,10 +458,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Fileformat.Blob parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Fileformat.Blob parseFrom(
@@ -463,15 +470,14 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Fileformat.Blob prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
 
     /**
@@ -480,402 +486,370 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Fileformat.Blob, Builder>
-        implements
+          crosby.binary.Fileformat.Blob, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.Blob)
         crosby.binary.Fileformat.BlobOrBuilder {
       // Construct using crosby.binary.Fileformat.Blob.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        raw_ = com.google.protobuf.ByteString.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        rawSize_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000002);
-        zlibData_ = com.google.protobuf.ByteString.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000004);
-        lzmaData_ = com.google.protobuf.ByteString.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000008);
-        oBSOLETEBzip2Data_ = com.google.protobuf.ByteString.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000010);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Fileformat.Blob getDefaultInstanceForType() {
-        return crosby.binary.Fileformat.Blob.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Fileformat.Blob build() {
-        crosby.binary.Fileformat.Blob result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Fileformat.Blob buildPartial() {
-        crosby.binary.Fileformat.Blob result = new crosby.binary.Fileformat.Blob(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.raw_ = raw_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.rawSize_ = rawSize_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.zlibData_ = zlibData_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.lzmaData_ = lzmaData_;
-        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
-          to_bitField0_ |= 0x00000010;
-        }
-        result.oBSOLETEBzip2Data_ = oBSOLETEBzip2Data_;
-        result.bitField0_ = to_bitField0_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Fileformat.Blob other) {
-        if (other == crosby.binary.Fileformat.Blob.getDefaultInstance()) return this;
-        if (other.hasRaw()) {
-          setRaw(other.getRaw());
-        }
-        if (other.hasRawSize()) {
-          setRawSize(other.getRawSize());
-        }
-        if (other.hasZlibData()) {
-          setZlibData(other.getZlibData());
-        }
-        if (other.hasLzmaData()) {
-          setLzmaData(other.getLzmaData());
-        }
-        if (other.hasOBSOLETEBzip2Data()) {
-          setOBSOLETEBzip2Data(other.getOBSOLETEBzip2Data());
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Fileformat.Blob parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Fileformat.Blob) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <pre>
+       * No compression
+       * </pre>
+       *
+       * <code>optional bytes raw = 1;</code>
+       */
+      public boolean hasRaw() {
+        return instance.hasRaw();
+      }
+      /**
+       * <pre>
+       * No compression
+       * </pre>
+       *
+       * <code>optional bytes raw = 1;</code>
+       */
+      public com.google.protobuf.ByteString getRaw() {
+        return instance.getRaw();
+      }
+      /**
+       * <pre>
+       * No compression
+       * </pre>
+       *
+       * <code>optional bytes raw = 1;</code>
+       */
+      public Builder setRaw(com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setRaw(value);
+        return this;
+      }
+      /**
+       * <pre>
+       * No compression
+       * </pre>
+       *
+       * <code>optional bytes raw = 1;</code>
+       */
+      public Builder clearRaw() {
+        copyOnWrite();
+        instance.clearRaw();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * When compressed, the uncompressed size
+       * </pre>
+       *
+       * <code>optional int32 raw_size = 2;</code>
+       */
+      public boolean hasRawSize() {
+        return instance.hasRawSize();
+      }
+      /**
+       * <pre>
+       * When compressed, the uncompressed size
+       * </pre>
+       *
+       * <code>optional int32 raw_size = 2;</code>
+       */
+      public int getRawSize() {
+        return instance.getRawSize();
+      }
+      /**
+       * <pre>
+       * When compressed, the uncompressed size
+       * </pre>
+       *
+       * <code>optional int32 raw_size = 2;</code>
+       */
+      public Builder setRawSize(int value) {
+        copyOnWrite();
+        instance.setRawSize(value);
+        return this;
+      }
+      /**
+       * <pre>
+       * When compressed, the uncompressed size
+       * </pre>
+       *
+       * <code>optional int32 raw_size = 2;</code>
+       */
+      public Builder clearRawSize() {
+        copyOnWrite();
+        instance.clearRawSize();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * Possible compressed versions of the data.
+       * </pre>
+       *
+       * <code>optional bytes zlib_data = 3;</code>
+       */
+      public boolean hasZlibData() {
+        return instance.hasZlibData();
+      }
+      /**
+       * <pre>
+       * Possible compressed versions of the data.
+       * </pre>
+       *
+       * <code>optional bytes zlib_data = 3;</code>
+       */
+      public com.google.protobuf.ByteString getZlibData() {
+        return instance.getZlibData();
+      }
+      /**
+       * <pre>
+       * Possible compressed versions of the data.
+       * </pre>
+       *
+       * <code>optional bytes zlib_data = 3;</code>
+       */
+      public Builder setZlibData(com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setZlibData(value);
+        return this;
+      }
+      /**
+       * <pre>
+       * Possible compressed versions of the data.
+       * </pre>
+       *
+       * <code>optional bytes zlib_data = 3;</code>
+       */
+      public Builder clearZlibData() {
+        copyOnWrite();
+        instance.clearZlibData();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
+       * </pre>
+       *
+       * <code>optional bytes lzma_data = 4;</code>
+       */
+      public boolean hasLzmaData() {
+        return instance.hasLzmaData();
+      }
+      /**
+       * <pre>
+       * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
+       * </pre>
+       *
+       * <code>optional bytes lzma_data = 4;</code>
+       */
+      public com.google.protobuf.ByteString getLzmaData() {
+        return instance.getLzmaData();
+      }
+      /**
+       * <pre>
+       * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
+       * </pre>
+       *
+       * <code>optional bytes lzma_data = 4;</code>
+       */
+      public Builder setLzmaData(com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setLzmaData(value);
+        return this;
+      }
+      /**
+       * <pre>
+       * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
+       * </pre>
+       *
+       * <code>optional bytes lzma_data = 4;</code>
+       */
+      public Builder clearLzmaData() {
+        copyOnWrite();
+        instance.clearLzmaData();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * Formerly used for bzip2 compressed data. Depreciated in 2010.
+       * </pre>
+       *
+       * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
+       */
+      @java.lang.Deprecated public boolean hasOBSOLETEBzip2Data() {
+        return instance.hasOBSOLETEBzip2Data();
+      }
+      /**
+       * <pre>
+       * Formerly used for bzip2 compressed data. Depreciated in 2010.
+       * </pre>
+       *
+       * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
+       */
+      @java.lang.Deprecated public com.google.protobuf.ByteString getOBSOLETEBzip2Data() {
+        return instance.getOBSOLETEBzip2Data();
+      }
+      /**
+       * <pre>
+       * Formerly used for bzip2 compressed data. Depreciated in 2010.
+       * </pre>
+       *
+       * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
+       */
+      @java.lang.Deprecated public Builder setOBSOLETEBzip2Data(com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setOBSOLETEBzip2Data(value);
+        return this;
+      }
+      /**
+       * <pre>
+       * Formerly used for bzip2 compressed data. Depreciated in 2010.
+       * </pre>
+       *
+       * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
+       */
+      @java.lang.Deprecated public Builder clearOBSOLETEBzip2Data() {
+        copyOnWrite();
+        instance.clearOBSOLETEBzip2Data();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:OSMPBF.Blob)
+    }
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Fileformat.Blob();
+        }
+        case IS_INITIALIZED: {
+          return DEFAULT_INSTANCE;
+        }
+        case MAKE_IMMUTABLE: {
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Fileformat.Blob other = (crosby.binary.Fileformat.Blob) arg1;
+          raw_ = visitor.visitByteString(
+              hasRaw(), raw_,
+              other.hasRaw(), other.raw_);
+          rawSize_ = visitor.visitInt(
+              hasRawSize(), rawSize_,
+              other.hasRawSize(), other.rawSize_);
+          zlibData_ = visitor.visitByteString(
+              hasZlibData(), zlibData_,
+              other.hasZlibData(), other.zlibData_);
+          lzmaData_ = visitor.visitByteString(
+              hasLzmaData(), lzmaData_,
+              other.hasLzmaData(), other.lzmaData_);
+          oBSOLETEBzip2Data_ = visitor.visitByteString(
+              hasOBSOLETEBzip2Data(), oBSOLETEBzip2Data_,
+              other.hasOBSOLETEBzip2Data(), other.oBSOLETEBzip2Data_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+            bitField0_ |= other.bitField0_;
           }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private com.google.protobuf.ByteString raw_ = com.google.protobuf.ByteString.EMPTY;
-      /**
-       * <code>optional bytes raw = 1;</code>
-       *
-       * <pre>
-       * No compression
-       * </pre>
-       */
-      @Override
-	public boolean hasRaw() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>optional bytes raw = 1;</code>
-       *
-       * <pre>
-       * No compression
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString getRaw() {
-        return raw_;
-      }
-      /**
-       * <code>optional bytes raw = 1;</code>
-       *
-       * <pre>
-       * No compression
-       * </pre>
-       */
-      public Builder setRaw(com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        raw_ = value;
-
-        return this;
-      }
-      /**
-       * <code>optional bytes raw = 1;</code>
-       *
-       * <pre>
-       * No compression
-       * </pre>
-       */
-      public Builder clearRaw() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        raw_ = getDefaultInstance().getRaw();
-
-        return this;
-      }
-
-      private int rawSize_ ;
-      /**
-       * <code>optional int32 raw_size = 2;</code>
-       *
-       * <pre>
-       * When compressed, the uncompressed size
-       * </pre>
-       */
-      @Override
-	public boolean hasRawSize() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>optional int32 raw_size = 2;</code>
-       *
-       * <pre>
-       * When compressed, the uncompressed size
-       * </pre>
-       */
-      @Override
-	public int getRawSize() {
-        return rawSize_;
-      }
-      /**
-       * <code>optional int32 raw_size = 2;</code>
-       *
-       * <pre>
-       * When compressed, the uncompressed size
-       * </pre>
-       */
-      public Builder setRawSize(int value) {
-        bitField0_ |= 0x00000002;
-        rawSize_ = value;
-
-        return this;
-      }
-      /**
-       * <code>optional int32 raw_size = 2;</code>
-       *
-       * <pre>
-       * When compressed, the uncompressed size
-       * </pre>
-       */
-      public Builder clearRawSize() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        rawSize_ = 0;
-
-        return this;
-      }
-
-      private com.google.protobuf.ByteString zlibData_ = com.google.protobuf.ByteString.EMPTY;
-      /**
-       * <code>optional bytes zlib_data = 3;</code>
-       *
-       * <pre>
-       * Possible compressed versions of the data.
-       * </pre>
-       */
-      @Override
-	public boolean hasZlibData() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
-       * <code>optional bytes zlib_data = 3;</code>
-       *
-       * <pre>
-       * Possible compressed versions of the data.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString getZlibData() {
-        return zlibData_;
-      }
-      /**
-       * <code>optional bytes zlib_data = 3;</code>
-       *
-       * <pre>
-       * Possible compressed versions of the data.
-       * </pre>
-       */
-      public Builder setZlibData(com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-        zlibData_ = value;
-
-        return this;
-      }
-      /**
-       * <code>optional bytes zlib_data = 3;</code>
-       *
-       * <pre>
-       * Possible compressed versions of the data.
-       * </pre>
-       */
-      public Builder clearZlibData() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        zlibData_ = getDefaultInstance().getZlibData();
-
-        return this;
-      }
-
-      private com.google.protobuf.ByteString lzmaData_ = com.google.protobuf.ByteString.EMPTY;
-      /**
-       * <code>optional bytes lzma_data = 4;</code>
-       *
-       * <pre>
-       * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
-       * </pre>
-       */
-      @Override
-	public boolean hasLzmaData() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
-       * <code>optional bytes lzma_data = 4;</code>
-       *
-       * <pre>
-       * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString getLzmaData() {
-        return lzmaData_;
-      }
-      /**
-       * <code>optional bytes lzma_data = 4;</code>
-       *
-       * <pre>
-       * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
-       * </pre>
-       */
-      public Builder setLzmaData(com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000008;
-        lzmaData_ = value;
-
-        return this;
-      }
-      /**
-       * <code>optional bytes lzma_data = 4;</code>
-       *
-       * <pre>
-       * PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
-       * </pre>
-       */
-      public Builder clearLzmaData() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        lzmaData_ = getDefaultInstance().getLzmaData();
-
-        return this;
-      }
-
-      private com.google.protobuf.ByteString oBSOLETEBzip2Data_ = com.google.protobuf.ByteString.EMPTY;
-      /**
-       * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
-       *
-       * <pre>
-       * Formerly used for bzip2 compressed data. Depreciated in 2010.
-       * </pre>
-       */
-      @Override
-	@java.lang.Deprecated public boolean hasOBSOLETEBzip2Data() {
-        return ((bitField0_ & 0x00000010) == 0x00000010);
-      }
-      /**
-       * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
-       *
-       * <pre>
-       * Formerly used for bzip2 compressed data. Depreciated in 2010.
-       * </pre>
-       */
-      @Override
-	@java.lang.Deprecated public com.google.protobuf.ByteString getOBSOLETEBzip2Data() {
-        return oBSOLETEBzip2Data_;
-      }
-      /**
-       * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
-       *
-       * <pre>
-       * Formerly used for bzip2 compressed data. Depreciated in 2010.
-       * </pre>
-       */
-      @java.lang.Deprecated public Builder setOBSOLETEBzip2Data(com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000010;
-        oBSOLETEBzip2Data_ = value;
-
-        return this;
-      }
-      /**
-       * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
-       *
-       * <pre>
-       * Formerly used for bzip2 compressed data. Depreciated in 2010.
-       * </pre>
-       */
-      @java.lang.Deprecated public Builder clearOBSOLETEBzip2Data() {
-        bitField0_ = (bitField0_ & ~0x00000010);
-        oBSOLETEBzip2Data_ = getDefaultInstance().getOBSOLETEBzip2Data();
-
-        return this;
-      }
-
-      // @@protoc_insertion_point(builder_scope:OSMPBF.Blob)
-    }
-
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  bitField0_ |= 0x00000001;
+                  raw_ = input.readBytes();
+                  break;
+                }
+                case 16: {
+                  bitField0_ |= 0x00000002;
+                  rawSize_ = input.readInt32();
+                  break;
+                }
+                case 26: {
+                  bitField0_ |= 0x00000004;
+                  zlibData_ = input.readBytes();
+                  break;
+                }
+                case 34: {
+                  bitField0_ |= 0x00000008;
+                  lzmaData_ = input.readBytes();
+                  break;
+                }
+                case 42: {
+                  bitField0_ |= 0x00000010;
+                  oBSOLETEBzip2Data_ = input.readBytes();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Fileformat.Blob.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.Blob)
+    private static final crosby.binary.Fileformat.Blob DEFAULT_INSTANCE;
     static {
-      defaultInstance = new Blob(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.Blob)
+      DEFAULT_INSTANCE = new Blob();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Fileformat.Blob getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<Blob> PARSER;
+
+    public static com.google.protobuf.Parser<Blob> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
@@ -919,110 +893,20 @@
    * Protobuf type {@code OSMPBF.BlobHeader}
    */
-  public static final class BlobHeader extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class BlobHeader extends
+      com.google.protobuf.GeneratedMessageLite<
+          BlobHeader, BlobHeader.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.BlobHeader)
       BlobHeaderOrBuilder {
-    // Use BlobHeader.newBuilder() to construct.
-    private BlobHeader(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private BlobHeader(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final BlobHeader defaultInstance;
-    public static BlobHeader getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public BlobHeader getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private BlobHeader(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 10: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000001;
-              type_ = bs;
-              break;
-            }
-            case 18: {
-              bitField0_ |= 0x00000002;
-              indexdata_ = input.readBytes();
-              break;
-            }
-            case 24: {
-              bitField0_ |= 0x00000004;
-              datasize_ = input.readInt32();
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<BlobHeader> PARSER =
-        new com.google.protobuf.AbstractParser<BlobHeader>() {
-      @Override
-	public BlobHeader parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new BlobHeader(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<BlobHeader> getParserForType() {
-      return PARSER;
-    }
-
+    private BlobHeader() {
+      type_ = "";
+      indexdata_ = com.google.protobuf.ByteString.EMPTY;
+    }
     private int bitField0_;
     public static final int TYPE_FIELD_NUMBER = 1;
-    private java.lang.Object type_;
+    private java.lang.String type_;
     /**
      * <code>required string type = 1;</code>
      */
-    @Override
-	public boolean hasType() {
+    public boolean hasType() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -1030,35 +914,42 @@
      * <code>required string type = 1;</code>
      */
-    @Override
-	public java.lang.String getType() {
-      java.lang.Object ref = type_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          type_ = s;
-        }
-        return s;
-      }
+    public java.lang.String getType() {
+      return type_;
     }
     /**
      * <code>required string type = 1;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString
+    public com.google.protobuf.ByteString
         getTypeBytes() {
-      java.lang.Object ref = type_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        type_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
+      return com.google.protobuf.ByteString.copyFromUtf8(type_);
+    }
+    /**
+     * <code>required string type = 1;</code>
+     */
+    private void setType(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+      type_ = value;
+    }
+    /**
+     * <code>required string type = 1;</code>
+     */
+    private void clearType() {
+      bitField0_ = (bitField0_ & ~0x00000001);
+      type_ = getDefaultInstance().getType();
+    }
+    /**
+     * <code>required string type = 1;</code>
+     */
+    private void setTypeBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+      type_ = value.toStringUtf8();
     }
 
@@ -1068,6 +959,5 @@
      * <code>optional bytes indexdata = 2;</code>
      */
-    @Override
-	public boolean hasIndexdata() {
+    public boolean hasIndexdata() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
@@ -1075,7 +965,23 @@
      * <code>optional bytes indexdata = 2;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString getIndexdata() {
+    public com.google.protobuf.ByteString getIndexdata() {
       return indexdata_;
+    }
+    /**
+     * <code>optional bytes indexdata = 2;</code>
+     */
+    private void setIndexdata(com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+      indexdata_ = value;
+    }
+    /**
+     * <code>optional bytes indexdata = 2;</code>
+     */
+    private void clearIndexdata() {
+      bitField0_ = (bitField0_ & ~0x00000002);
+      indexdata_ = getDefaultInstance().getIndexdata();
     }
 
@@ -1085,6 +991,5 @@
      * <code>required int32 datasize = 3;</code>
      */
-    @Override
-	public boolean hasDatasize() {
+    public boolean hasDatasize() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
@@ -1092,39 +997,26 @@
      * <code>required int32 datasize = 3;</code>
      */
-    @Override
-	public int getDatasize() {
+    public int getDatasize() {
       return datasize_;
     }
-
-    private void initFields() {
-      type_ = "";
-      indexdata_ = com.google.protobuf.ByteString.EMPTY;
+    /**
+     * <code>required int32 datasize = 3;</code>
+     */
+    private void setDatasize(int value) {
+      bitField0_ |= 0x00000004;
+      datasize_ = value;
+    }
+    /**
+     * <code>required int32 datasize = 3;</code>
+     */
+    private void clearDatasize() {
+      bitField0_ = (bitField0_ & ~0x00000004);
       datasize_ = 0;
     }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      if (!hasType()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      if (!hasDatasize()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(1, getTypeBytes());
+        output.writeString(1, getType());
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
@@ -1134,10 +1026,8 @@
         output.writeInt32(3, datasize_);
       }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -1146,5 +1036,5 @@
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(1, getTypeBytes());
+          .computeStringSize(1, getType());
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
@@ -1156,20 +1046,27 @@
           .computeInt32Size(3, datasize_);
       }
-      size += unknownFields.size();
+      size += unknownFields.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 crosby.binary.Fileformat.BlobHeader parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Fileformat.BlobHeader parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Fileformat.BlobHeader parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Fileformat.BlobHeader parseFrom(
@@ -1177,9 +1074,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Fileformat.BlobHeader parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Fileformat.BlobHeader parseFrom(
@@ -1187,9 +1086,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Fileformat.BlobHeader parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Fileformat.BlobHeader parseFrom(
@@ -1197,9 +1098,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Fileformat.BlobHeader parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Fileformat.BlobHeader parseDelimitedFrom(
@@ -1207,10 +1109,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Fileformat.BlobHeader parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Fileformat.BlobHeader parseFrom(
@@ -1218,15 +1121,14 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Fileformat.BlobHeader prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
 
     /**
@@ -1235,165 +1137,31 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Fileformat.BlobHeader, Builder>
-        implements
+          crosby.binary.Fileformat.BlobHeader, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.BlobHeader)
         crosby.binary.Fileformat.BlobHeaderOrBuilder {
       // Construct using crosby.binary.Fileformat.BlobHeader.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        type_ = "";
-        bitField0_ = (bitField0_ & ~0x00000001);
-        indexdata_ = com.google.protobuf.ByteString.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000002);
-        datasize_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000004);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Fileformat.BlobHeader getDefaultInstanceForType() {
-        return crosby.binary.Fileformat.BlobHeader.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Fileformat.BlobHeader build() {
-        crosby.binary.Fileformat.BlobHeader result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Fileformat.BlobHeader buildPartial() {
-        crosby.binary.Fileformat.BlobHeader result = new crosby.binary.Fileformat.BlobHeader(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.type_ = type_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.indexdata_ = indexdata_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.datasize_ = datasize_;
-        result.bitField0_ = to_bitField0_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Fileformat.BlobHeader other) {
-        if (other == crosby.binary.Fileformat.BlobHeader.getDefaultInstance()) return this;
-        if (other.hasType()) {
-          bitField0_ |= 0x00000001;
-          type_ = other.type_;
-
-        }
-        if (other.hasIndexdata()) {
-          setIndexdata(other.getIndexdata());
-        }
-        if (other.hasDatasize()) {
-          setDatasize(other.getDatasize());
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        if (!hasType()) {
-
-          return false;
-        }
-        if (!hasDatasize()) {
-
-          return false;
-        }
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Fileformat.BlobHeader parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Fileformat.BlobHeader) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.lang.Object type_ = "";
+        super(DEFAULT_INSTANCE);
+      }
+
+
       /**
        * <code>required string type = 1;</code>
        */
-      @Override
-	public boolean hasType() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
+      public boolean hasType() {
+        return instance.hasType();
       }
       /**
        * <code>required string type = 1;</code>
        */
-      @Override
-	public java.lang.String getType() {
-        java.lang.Object ref = type_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            type_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
+      public java.lang.String getType() {
+        return instance.getType();
       }
       /**
        * <code>required string type = 1;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getTypeBytes() {
-        java.lang.Object ref = type_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          type_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
+        return instance.getTypeBytes();
       }
       /**
@@ -1402,10 +1170,6 @@
       public Builder setType(
           java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        type_ = value;
-
+        copyOnWrite();
+        instance.setType(value);
         return this;
       }
@@ -1414,7 +1178,6 @@
        */
       public Builder clearType() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        type_ = getDefaultInstance().getType();
-
+        copyOnWrite();
+        instance.clearType();
         return this;
       }
@@ -1424,27 +1187,20 @@
       public Builder setTypeBytes(
           com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        type_ = value;
-
-        return this;
-      }
-
-      private com.google.protobuf.ByteString indexdata_ = com.google.protobuf.ByteString.EMPTY;
+        copyOnWrite();
+        instance.setTypeBytes(value);
+        return this;
+      }
+
       /**
        * <code>optional bytes indexdata = 2;</code>
        */
-      @Override
-	public boolean hasIndexdata() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
+      public boolean hasIndexdata() {
+        return instance.hasIndexdata();
       }
       /**
        * <code>optional bytes indexdata = 2;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString getIndexdata() {
-        return indexdata_;
+      public com.google.protobuf.ByteString getIndexdata() {
+        return instance.getIndexdata();
       }
       /**
@@ -1452,10 +1208,6 @@
        */
       public Builder setIndexdata(com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        indexdata_ = value;
-
+        copyOnWrite();
+        instance.setIndexdata(value);
         return this;
       }
@@ -1464,24 +1216,20 @@
        */
       public Builder clearIndexdata() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        indexdata_ = getDefaultInstance().getIndexdata();
-
-        return this;
-      }
-
-      private int datasize_ ;
+        copyOnWrite();
+        instance.clearIndexdata();
+        return this;
+      }
+
       /**
        * <code>required int32 datasize = 3;</code>
        */
-      @Override
-	public boolean hasDatasize() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
+      public boolean hasDatasize() {
+        return instance.hasDatasize();
       }
       /**
        * <code>required int32 datasize = 3;</code>
        */
-      @Override
-	public int getDatasize() {
-        return datasize_;
+      public int getDatasize() {
+        return instance.getDatasize();
       }
       /**
@@ -1489,7 +1237,6 @@
        */
       public Builder setDatasize(int value) {
-        bitField0_ |= 0x00000004;
-        datasize_ = value;
-
+        copyOnWrite();
+        instance.setDatasize(value);
         return this;
       }
@@ -1498,7 +1245,6 @@
        */
       public Builder clearDatasize() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        datasize_ = 0;
-
+        copyOnWrite();
+        instance.clearDatasize();
         return this;
       }
@@ -1506,11 +1252,139 @@
       // @@protoc_insertion_point(builder_scope:OSMPBF.BlobHeader)
     }
-
+    private byte memoizedIsInitialized = -1;
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Fileformat.BlobHeader();
+        }
+        case IS_INITIALIZED: {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized == 1) return DEFAULT_INSTANCE;
+          if (isInitialized == 0) return null;
+
+          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
+          if (!hasType()) {
+            if (shouldMemoize) {
+              memoizedIsInitialized = 0;
+            }
+            return null;
+          }
+          if (!hasDatasize()) {
+            if (shouldMemoize) {
+              memoizedIsInitialized = 0;
+            }
+            return null;
+          }
+          if (shouldMemoize) memoizedIsInitialized = 1;
+          return DEFAULT_INSTANCE;
+
+        }
+        case MAKE_IMMUTABLE: {
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Fileformat.BlobHeader other = (crosby.binary.Fileformat.BlobHeader) arg1;
+          type_ = visitor.visitString(
+              hasType(), type_,
+              other.hasType(), other.type_);
+          indexdata_ = visitor.visitByteString(
+              hasIndexdata(), indexdata_,
+              other.hasIndexdata(), other.indexdata_);
+          datasize_ = visitor.visitInt(
+              hasDatasize(), datasize_,
+              other.hasDatasize(), other.datasize_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+            bitField0_ |= other.bitField0_;
+          }
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  java.lang.String s = input.readString();
+                  bitField0_ |= 0x00000001;
+                  type_ = s;
+                  break;
+                }
+                case 18: {
+                  bitField0_ |= 0x00000002;
+                  indexdata_ = input.readBytes();
+                  break;
+                }
+                case 24: {
+                  bitField0_ |= 0x00000004;
+                  datasize_ = input.readInt32();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Fileformat.BlobHeader.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.BlobHeader)
+    private static final crosby.binary.Fileformat.BlobHeader DEFAULT_INSTANCE;
     static {
-      defaultInstance = new BlobHeader(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.BlobHeader)
+      DEFAULT_INSTANCE = new BlobHeader();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Fileformat.BlobHeader getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<BlobHeader> PARSER;
+
+    public static com.google.protobuf.Parser<BlobHeader> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
Index: applications/editors/josm/plugins/pbf/gen/crosby/binary/Osmformat.java
===================================================================
--- applications/editors/josm/plugins/pbf/gen/crosby/binary/Osmformat.java	(revision 33771)
+++ applications/editors/josm/plugins/pbf/gen/crosby/binary/Osmformat.java	(revision 33772)
@@ -23,34 +23,34 @@
 
     /**
+     * <pre>
+     * Additional tags to aid in parsing this dataset 
+     * </pre>
+     *
      * <code>repeated string required_features = 4;</code>
-     *
-     * <pre>
-     * Additional tags to aid in parsing this dataset
-     * </pre>
-     */
-    com.google.protobuf.ProtocolStringList
+     */
+    java.util.List<java.lang.String>
         getRequiredFeaturesList();
     /**
+     * <pre>
+     * Additional tags to aid in parsing this dataset 
+     * </pre>
+     *
      * <code>repeated string required_features = 4;</code>
-     *
-     * <pre>
-     * Additional tags to aid in parsing this dataset
-     * </pre>
      */
     int getRequiredFeaturesCount();
     /**
+     * <pre>
+     * Additional tags to aid in parsing this dataset 
+     * </pre>
+     *
      * <code>repeated string required_features = 4;</code>
-     *
-     * <pre>
-     * Additional tags to aid in parsing this dataset
-     * </pre>
      */
     java.lang.String getRequiredFeatures(int index);
     /**
+     * <pre>
+     * Additional tags to aid in parsing this dataset 
+     * </pre>
+     *
      * <code>repeated string required_features = 4;</code>
-     *
-     * <pre>
-     * Additional tags to aid in parsing this dataset
-     * </pre>
      */
     com.google.protobuf.ByteString
@@ -60,5 +60,5 @@
      * <code>repeated string optional_features = 5;</code>
      */
-    com.google.protobuf.ProtocolStringList
+    java.util.List<java.lang.String>
         getOptionalFeaturesList();
     /**
@@ -91,25 +91,25 @@
 
     /**
+     * <pre>
+     * From the bbox field.
+     * </pre>
+     *
      * <code>optional string source = 17;</code>
-     *
+     */
+    boolean hasSource();
+    /**
      * <pre>
      * From the bbox field.
      * </pre>
-     */
-    boolean hasSource();
-    /**
+     *
      * <code>optional string source = 17;</code>
-     *
+     */
+    java.lang.String getSource();
+    /**
      * <pre>
      * From the bbox field.
      * </pre>
-     */
-    java.lang.String getSource();
-    /**
+     *
      * <code>optional string source = 17;</code>
-     *
-     * <pre>
-     * From the bbox field.
-     * </pre>
      */
     com.google.protobuf.ByteString
@@ -117,63 +117,63 @@
 
     /**
-     * <code>optional int64 osmosis_replication_timestamp = 32;</code>
-     *
-     * <pre>
-     * replication timestamp, expressed in seconds since the epoch,
+     * <pre>
+     * replication timestamp, expressed in seconds since the epoch, 
      * otherwise the same value as in the "timestamp=..." field
      * in the state.txt file used by Osmosis
      * </pre>
+     *
+     * <code>optional int64 osmosis_replication_timestamp = 32;</code>
      */
     boolean hasOsmosisReplicationTimestamp();
     /**
-     * <code>optional int64 osmosis_replication_timestamp = 32;</code>
-     *
-     * <pre>
-     * replication timestamp, expressed in seconds since the epoch,
+     * <pre>
+     * replication timestamp, expressed in seconds since the epoch, 
      * otherwise the same value as in the "timestamp=..." field
      * in the state.txt file used by Osmosis
      * </pre>
+     *
+     * <code>optional int64 osmosis_replication_timestamp = 32;</code>
      */
     long getOsmosisReplicationTimestamp();
 
     /**
+     * <pre>
+     * replication sequence number (sequenceNumber in state.txt)
+     * </pre>
+     *
      * <code>optional int64 osmosis_replication_sequence_number = 33;</code>
-     *
+     */
+    boolean hasOsmosisReplicationSequenceNumber();
+    /**
      * <pre>
      * replication sequence number (sequenceNumber in state.txt)
      * </pre>
-     */
-    boolean hasOsmosisReplicationSequenceNumber();
-    /**
+     *
      * <code>optional int64 osmosis_replication_sequence_number = 33;</code>
-     *
-     * <pre>
-     * replication sequence number (sequenceNumber in state.txt)
-     * </pre>
      */
     long getOsmosisReplicationSequenceNumber();
 
     /**
+     * <pre>
+     * replication base URL (from Osmosis' configuration.txt file)
+     * </pre>
+     *
      * <code>optional string osmosis_replication_base_url = 34;</code>
-     *
+     */
+    boolean hasOsmosisReplicationBaseUrl();
+    /**
      * <pre>
      * replication base URL (from Osmosis' configuration.txt file)
      * </pre>
-     */
-    boolean hasOsmosisReplicationBaseUrl();
-    /**
+     *
      * <code>optional string osmosis_replication_base_url = 34;</code>
-     *
+     */
+    java.lang.String getOsmosisReplicationBaseUrl();
+    /**
      * <pre>
      * replication base URL (from Osmosis' configuration.txt file)
      * </pre>
-     */
-    java.lang.String getOsmosisReplicationBaseUrl();
-    /**
+     *
      * <code>optional string osmosis_replication_base_url = 34;</code>
-     *
-     * <pre>
-     * replication base URL (from Osmosis' configuration.txt file)
-     * </pre>
      */
     com.google.protobuf.ByteString
@@ -183,151 +183,16 @@
    * Protobuf type {@code OSMPBF.HeaderBlock}
    */
-  public static final class HeaderBlock extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class HeaderBlock extends
+      com.google.protobuf.GeneratedMessageLite<
+          HeaderBlock, HeaderBlock.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.HeaderBlock)
       HeaderBlockOrBuilder {
-    // Use HeaderBlock.newBuilder() to construct.
-    private HeaderBlock(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private HeaderBlock(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final HeaderBlock defaultInstance;
-    public static HeaderBlock getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public HeaderBlock getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private HeaderBlock(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 10: {
-              crosby.binary.Osmformat.HeaderBBox.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000001) == 0x00000001)) {
-                subBuilder = bbox_.toBuilder();
-              }
-              bbox_ = input.readMessage(crosby.binary.Osmformat.HeaderBBox.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(bbox_);
-                bbox_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000001;
-              break;
-            }
-            case 34: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                requiredFeatures_ = new com.google.protobuf.LazyStringArrayList();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              requiredFeatures_.add(bs);
-              break;
-            }
-            case 42: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-                optionalFeatures_ = new com.google.protobuf.LazyStringArrayList();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              optionalFeatures_.add(bs);
-              break;
-            }
-            case 130: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000002;
-              writingprogram_ = bs;
-              break;
-            }
-            case 138: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000004;
-              source_ = bs;
-              break;
-            }
-            case 256: {
-              bitField0_ |= 0x00000008;
-              osmosisReplicationTimestamp_ = input.readInt64();
-              break;
-            }
-            case 264: {
-              bitField0_ |= 0x00000010;
-              osmosisReplicationSequenceNumber_ = input.readInt64();
-              break;
-            }
-            case 274: {
-              com.google.protobuf.ByteString bs = input.readBytes();
-              bitField0_ |= 0x00000020;
-              osmosisReplicationBaseUrl_ = bs;
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-          requiredFeatures_ = requiredFeatures_.getUnmodifiableView();
-        }
-        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-          optionalFeatures_ = optionalFeatures_.getUnmodifiableView();
-        }
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<HeaderBlock> PARSER =
-        new com.google.protobuf.AbstractParser<HeaderBlock>() {
-      @Override
-	public HeaderBlock parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new HeaderBlock(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<HeaderBlock> getParserForType() {
-      return PARSER;
-    }
-
+    private HeaderBlock() {
+      requiredFeatures_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+      optionalFeatures_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+      writingprogram_ = "";
+      source_ = "";
+      osmosisReplicationBaseUrl_ = "";
+    }
     private int bitField0_;
     public static final int BBOX_FIELD_NUMBER = 1;
@@ -336,6 +201,5 @@
      * <code>optional .OSMPBF.HeaderBBox bbox = 1;</code>
      */
-    @Override
-	public boolean hasBbox() {
+    public boolean hasBbox() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -343,66 +207,170 @@
      * <code>optional .OSMPBF.HeaderBBox bbox = 1;</code>
      */
-    @Override
-	public crosby.binary.Osmformat.HeaderBBox getBbox() {
-      return bbox_;
+    public crosby.binary.Osmformat.HeaderBBox getBbox() {
+      return bbox_ == null ? crosby.binary.Osmformat.HeaderBBox.getDefaultInstance() : bbox_;
+    }
+    /**
+     * <code>optional .OSMPBF.HeaderBBox bbox = 1;</code>
+     */
+    private void setBbox(crosby.binary.Osmformat.HeaderBBox value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      bbox_ = value;
+      bitField0_ |= 0x00000001;
+      }
+    /**
+     * <code>optional .OSMPBF.HeaderBBox bbox = 1;</code>
+     */
+    private void setBbox(
+        crosby.binary.Osmformat.HeaderBBox.Builder builderForValue) {
+      bbox_ = builderForValue.build();
+      bitField0_ |= 0x00000001;
+    }
+    /**
+     * <code>optional .OSMPBF.HeaderBBox bbox = 1;</code>
+     */
+    private void mergeBbox(crosby.binary.Osmformat.HeaderBBox value) {
+      if (bbox_ != null &&
+          bbox_ != crosby.binary.Osmformat.HeaderBBox.getDefaultInstance()) {
+        bbox_ =
+          crosby.binary.Osmformat.HeaderBBox.newBuilder(bbox_).mergeFrom(value).buildPartial();
+      } else {
+        bbox_ = value;
+      }
+      bitField0_ |= 0x00000001;
+    }
+    /**
+     * <code>optional .OSMPBF.HeaderBBox bbox = 1;</code>
+     */
+    private void clearBbox() {  bbox_ = null;
+      bitField0_ = (bitField0_ & ~0x00000001);
     }
 
     public static final int REQUIRED_FEATURES_FIELD_NUMBER = 4;
-    private com.google.protobuf.LazyStringList requiredFeatures_;
-    /**
+    private com.google.protobuf.Internal.ProtobufList<java.lang.String> requiredFeatures_;
+    /**
+     * <pre>
+     * Additional tags to aid in parsing this dataset 
+     * </pre>
+     *
      * <code>repeated string required_features = 4;</code>
-     *
-     * <pre>
-     * Additional tags to aid in parsing this dataset
-     * </pre>
-     */
-    @Override
-	public com.google.protobuf.ProtocolStringList
-        getRequiredFeaturesList() {
+     */
+    public java.util.List<java.lang.String> getRequiredFeaturesList() {
       return requiredFeatures_;
     }
     /**
+     * <pre>
+     * Additional tags to aid in parsing this dataset 
+     * </pre>
+     *
      * <code>repeated string required_features = 4;</code>
-     *
-     * <pre>
-     * Additional tags to aid in parsing this dataset
-     * </pre>
-     */
-    @Override
-	public int getRequiredFeaturesCount() {
+     */
+    public int getRequiredFeaturesCount() {
       return requiredFeatures_.size();
     }
     /**
+     * <pre>
+     * Additional tags to aid in parsing this dataset 
+     * </pre>
+     *
      * <code>repeated string required_features = 4;</code>
-     *
-     * <pre>
-     * Additional tags to aid in parsing this dataset
-     * </pre>
-     */
-    @Override
-	public java.lang.String getRequiredFeatures(int index) {
+     */
+    public java.lang.String getRequiredFeatures(int index) {
       return requiredFeatures_.get(index);
     }
     /**
+     * <pre>
+     * Additional tags to aid in parsing this dataset 
+     * </pre>
+     *
      * <code>repeated string required_features = 4;</code>
-     *
-     * <pre>
-     * Additional tags to aid in parsing this dataset
-     * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
+     */
+    public com.google.protobuf.ByteString
         getRequiredFeaturesBytes(int index) {
-      return requiredFeatures_.getByteString(index);
+      return com.google.protobuf.ByteString.copyFromUtf8(
+          requiredFeatures_.get(index));
+    }
+    private void ensureRequiredFeaturesIsMutable() {
+      if (!requiredFeatures_.isModifiable()) {
+        requiredFeatures_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(requiredFeatures_);
+       }
+    }
+    /**
+     * <pre>
+     * Additional tags to aid in parsing this dataset 
+     * </pre>
+     *
+     * <code>repeated string required_features = 4;</code>
+     */
+    private void setRequiredFeatures(
+        int index, java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRequiredFeaturesIsMutable();
+      requiredFeatures_.set(index, value);
+    }
+    /**
+     * <pre>
+     * Additional tags to aid in parsing this dataset 
+     * </pre>
+     *
+     * <code>repeated string required_features = 4;</code>
+     */
+    private void addRequiredFeatures(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRequiredFeaturesIsMutable();
+      requiredFeatures_.add(value);
+    }
+    /**
+     * <pre>
+     * Additional tags to aid in parsing this dataset 
+     * </pre>
+     *
+     * <code>repeated string required_features = 4;</code>
+     */
+    private void addAllRequiredFeatures(
+        java.lang.Iterable<java.lang.String> values) {
+      ensureRequiredFeaturesIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, requiredFeatures_);
+    }
+    /**
+     * <pre>
+     * Additional tags to aid in parsing this dataset 
+     * </pre>
+     *
+     * <code>repeated string required_features = 4;</code>
+     */
+    private void clearRequiredFeatures() {
+      requiredFeatures_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+    }
+    /**
+     * <pre>
+     * Additional tags to aid in parsing this dataset 
+     * </pre>
+     *
+     * <code>repeated string required_features = 4;</code>
+     */
+    private void addRequiredFeaturesBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRequiredFeaturesIsMutable();
+      requiredFeatures_.add(value.toStringUtf8());
     }
 
     public static final int OPTIONAL_FEATURES_FIELD_NUMBER = 5;
-    private com.google.protobuf.LazyStringList optionalFeatures_;
+    private com.google.protobuf.Internal.ProtobufList<java.lang.String> optionalFeatures_;
     /**
      * <code>repeated string optional_features = 5;</code>
      */
-    @Override
-	public com.google.protobuf.ProtocolStringList
-        getOptionalFeaturesList() {
+    public java.util.List<java.lang.String> getOptionalFeaturesList() {
       return optionalFeatures_;
     }
@@ -410,6 +378,5 @@
      * <code>repeated string optional_features = 5;</code>
      */
-    @Override
-	public int getOptionalFeaturesCount() {
+    public int getOptionalFeaturesCount() {
       return optionalFeatures_.size();
     }
@@ -417,6 +384,5 @@
      * <code>repeated string optional_features = 5;</code>
      */
-    @Override
-	public java.lang.String getOptionalFeatures(int index) {
+    public java.lang.String getOptionalFeatures(int index) {
       return optionalFeatures_.get(index);
     }
@@ -424,17 +390,70 @@
      * <code>repeated string optional_features = 5;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString
+    public com.google.protobuf.ByteString
         getOptionalFeaturesBytes(int index) {
-      return optionalFeatures_.getByteString(index);
+      return com.google.protobuf.ByteString.copyFromUtf8(
+          optionalFeatures_.get(index));
+    }
+    private void ensureOptionalFeaturesIsMutable() {
+      if (!optionalFeatures_.isModifiable()) {
+        optionalFeatures_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(optionalFeatures_);
+       }
+    }
+    /**
+     * <code>repeated string optional_features = 5;</code>
+     */
+    private void setOptionalFeatures(
+        int index, java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureOptionalFeaturesIsMutable();
+      optionalFeatures_.set(index, value);
+    }
+    /**
+     * <code>repeated string optional_features = 5;</code>
+     */
+    private void addOptionalFeatures(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureOptionalFeaturesIsMutable();
+      optionalFeatures_.add(value);
+    }
+    /**
+     * <code>repeated string optional_features = 5;</code>
+     */
+    private void addAllOptionalFeatures(
+        java.lang.Iterable<java.lang.String> values) {
+      ensureOptionalFeaturesIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, optionalFeatures_);
+    }
+    /**
+     * <code>repeated string optional_features = 5;</code>
+     */
+    private void clearOptionalFeatures() {
+      optionalFeatures_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+    }
+    /**
+     * <code>repeated string optional_features = 5;</code>
+     */
+    private void addOptionalFeaturesBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureOptionalFeaturesIsMutable();
+      optionalFeatures_.add(value.toStringUtf8());
     }
 
     public static final int WRITINGPROGRAM_FIELD_NUMBER = 16;
-    private java.lang.Object writingprogram_;
+    private java.lang.String writingprogram_;
     /**
      * <code>optional string writingprogram = 16;</code>
      */
-    @Override
-	public boolean hasWritingprogram() {
+    public boolean hasWritingprogram() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
@@ -442,92 +461,117 @@
      * <code>optional string writingprogram = 16;</code>
      */
-    @Override
-	public java.lang.String getWritingprogram() {
-      java.lang.Object ref = writingprogram_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          writingprogram_ = s;
-        }
-        return s;
-      }
+    public java.lang.String getWritingprogram() {
+      return writingprogram_;
     }
     /**
      * <code>optional string writingprogram = 16;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString
+    public com.google.protobuf.ByteString
         getWritingprogramBytes() {
-      java.lang.Object ref = writingprogram_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        writingprogram_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
+      return com.google.protobuf.ByteString.copyFromUtf8(writingprogram_);
+    }
+    /**
+     * <code>optional string writingprogram = 16;</code>
+     */
+    private void setWritingprogram(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+      writingprogram_ = value;
+    }
+    /**
+     * <code>optional string writingprogram = 16;</code>
+     */
+    private void clearWritingprogram() {
+      bitField0_ = (bitField0_ & ~0x00000002);
+      writingprogram_ = getDefaultInstance().getWritingprogram();
+    }
+    /**
+     * <code>optional string writingprogram = 16;</code>
+     */
+    private void setWritingprogramBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+      writingprogram_ = value.toStringUtf8();
     }
 
     public static final int SOURCE_FIELD_NUMBER = 17;
-    private java.lang.Object source_;
-    /**
+    private java.lang.String source_;
+    /**
+     * <pre>
+     * From the bbox field.
+     * </pre>
+     *
      * <code>optional string source = 17;</code>
-     *
+     */
+    public boolean hasSource() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
      * <pre>
      * From the bbox field.
      * </pre>
-     */
-    @Override
-	public boolean hasSource() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
+     *
      * <code>optional string source = 17;</code>
-     *
+     */
+    public java.lang.String getSource() {
+      return source_;
+    }
+    /**
      * <pre>
      * From the bbox field.
      * </pre>
-     */
-    @Override
-	public java.lang.String getSource() {
-      java.lang.Object ref = source_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          source_ = s;
-        }
-        return s;
-      }
-    }
-    /**
+     *
      * <code>optional string source = 17;</code>
-     *
+     */
+    public com.google.protobuf.ByteString
+        getSourceBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(source_);
+    }
+    /**
      * <pre>
      * From the bbox field.
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
-        getSourceBytes() {
-      java.lang.Object ref = source_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        source_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
+     *
+     * <code>optional string source = 17;</code>
+     */
+    private void setSource(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+      source_ = value;
+    }
+    /**
+     * <pre>
+     * From the bbox field.
+     * </pre>
+     *
+     * <code>optional string source = 17;</code>
+     */
+    private void clearSource() {
+      bitField0_ = (bitField0_ & ~0x00000004);
+      source_ = getDefaultInstance().getSource();
+    }
+    /**
+     * <pre>
+     * From the bbox field.
+     * </pre>
+     *
+     * <code>optional string source = 17;</code>
+     */
+    private void setSourceBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+      source_ = value.toStringUtf8();
     }
 
@@ -535,28 +579,52 @@
     private long osmosisReplicationTimestamp_;
     /**
-     * <code>optional int64 osmosis_replication_timestamp = 32;</code>
-     *
-     * <pre>
-     * replication timestamp, expressed in seconds since the epoch,
+     * <pre>
+     * replication timestamp, expressed in seconds since the epoch, 
      * otherwise the same value as in the "timestamp=..." field
      * in the state.txt file used by Osmosis
      * </pre>
-     */
-    @Override
-	public boolean hasOsmosisReplicationTimestamp() {
+     *
+     * <code>optional int64 osmosis_replication_timestamp = 32;</code>
+     */
+    public boolean hasOsmosisReplicationTimestamp() {
       return ((bitField0_ & 0x00000008) == 0x00000008);
     }
     /**
-     * <code>optional int64 osmosis_replication_timestamp = 32;</code>
-     *
-     * <pre>
-     * replication timestamp, expressed in seconds since the epoch,
+     * <pre>
+     * replication timestamp, expressed in seconds since the epoch, 
      * otherwise the same value as in the "timestamp=..." field
      * in the state.txt file used by Osmosis
      * </pre>
-     */
-    @Override
-	public long getOsmosisReplicationTimestamp() {
+     *
+     * <code>optional int64 osmosis_replication_timestamp = 32;</code>
+     */
+    public long getOsmosisReplicationTimestamp() {
       return osmosisReplicationTimestamp_;
+    }
+    /**
+     * <pre>
+     * replication timestamp, expressed in seconds since the epoch, 
+     * otherwise the same value as in the "timestamp=..." field
+     * in the state.txt file used by Osmosis
+     * </pre>
+     *
+     * <code>optional int64 osmosis_replication_timestamp = 32;</code>
+     */
+    private void setOsmosisReplicationTimestamp(long value) {
+      bitField0_ |= 0x00000008;
+      osmosisReplicationTimestamp_ = value;
+    }
+    /**
+     * <pre>
+     * replication timestamp, expressed in seconds since the epoch, 
+     * otherwise the same value as in the "timestamp=..." field
+     * in the state.txt file used by Osmosis
+     * </pre>
+     *
+     * <code>optional int64 osmosis_replication_timestamp = 32;</code>
+     */
+    private void clearOsmosisReplicationTimestamp() {
+      bitField0_ = (bitField0_ & ~0x00000008);
+      osmosisReplicationTimestamp_ = 0L;
     }
 
@@ -564,128 +632,137 @@
     private long osmosisReplicationSequenceNumber_;
     /**
+     * <pre>
+     * replication sequence number (sequenceNumber in state.txt)
+     * </pre>
+     *
      * <code>optional int64 osmosis_replication_sequence_number = 33;</code>
-     *
+     */
+    public boolean hasOsmosisReplicationSequenceNumber() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
      * <pre>
      * replication sequence number (sequenceNumber in state.txt)
      * </pre>
-     */
-    @Override
-	public boolean hasOsmosisReplicationSequenceNumber() {
-      return ((bitField0_ & 0x00000010) == 0x00000010);
-    }
-    /**
+     *
      * <code>optional int64 osmosis_replication_sequence_number = 33;</code>
-     *
+     */
+    public long getOsmosisReplicationSequenceNumber() {
+      return osmosisReplicationSequenceNumber_;
+    }
+    /**
      * <pre>
      * replication sequence number (sequenceNumber in state.txt)
      * </pre>
-     */
-    @Override
-	public long getOsmosisReplicationSequenceNumber() {
-      return osmosisReplicationSequenceNumber_;
+     *
+     * <code>optional int64 osmosis_replication_sequence_number = 33;</code>
+     */
+    private void setOsmosisReplicationSequenceNumber(long value) {
+      bitField0_ |= 0x00000010;
+      osmosisReplicationSequenceNumber_ = value;
+    }
+    /**
+     * <pre>
+     * replication sequence number (sequenceNumber in state.txt)
+     * </pre>
+     *
+     * <code>optional int64 osmosis_replication_sequence_number = 33;</code>
+     */
+    private void clearOsmosisReplicationSequenceNumber() {
+      bitField0_ = (bitField0_ & ~0x00000010);
+      osmosisReplicationSequenceNumber_ = 0L;
     }
 
     public static final int OSMOSIS_REPLICATION_BASE_URL_FIELD_NUMBER = 34;
-    private java.lang.Object osmosisReplicationBaseUrl_;
-    /**
+    private java.lang.String osmosisReplicationBaseUrl_;
+    /**
+     * <pre>
+     * replication base URL (from Osmosis' configuration.txt file)
+     * </pre>
+     *
      * <code>optional string osmosis_replication_base_url = 34;</code>
-     *
+     */
+    public boolean hasOsmosisReplicationBaseUrl() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
      * <pre>
      * replication base URL (from Osmosis' configuration.txt file)
      * </pre>
-     */
-    @Override
-	public boolean hasOsmosisReplicationBaseUrl() {
-      return ((bitField0_ & 0x00000020) == 0x00000020);
-    }
-    /**
+     *
      * <code>optional string osmosis_replication_base_url = 34;</code>
-     *
+     */
+    public java.lang.String getOsmosisReplicationBaseUrl() {
+      return osmosisReplicationBaseUrl_;
+    }
+    /**
      * <pre>
      * replication base URL (from Osmosis' configuration.txt file)
      * </pre>
-     */
-    @Override
-	public java.lang.String getOsmosisReplicationBaseUrl() {
-      java.lang.Object ref = osmosisReplicationBaseUrl_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          osmosisReplicationBaseUrl_ = s;
-        }
-        return s;
-      }
-    }
-    /**
+     *
      * <code>optional string osmosis_replication_base_url = 34;</code>
-     *
+     */
+    public com.google.protobuf.ByteString
+        getOsmosisReplicationBaseUrlBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(osmosisReplicationBaseUrl_);
+    }
+    /**
      * <pre>
      * replication base URL (from Osmosis' configuration.txt file)
      * </pre>
-     */
-    @Override
-	public com.google.protobuf.ByteString
-        getOsmosisReplicationBaseUrlBytes() {
-      java.lang.Object ref = osmosisReplicationBaseUrl_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        osmosisReplicationBaseUrl_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    private void initFields() {
-      bbox_ = crosby.binary.Osmformat.HeaderBBox.getDefaultInstance();
-      requiredFeatures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      optionalFeatures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      writingprogram_ = "";
-      source_ = "";
-      osmosisReplicationTimestamp_ = 0L;
-      osmosisReplicationSequenceNumber_ = 0L;
-      osmosisReplicationBaseUrl_ = "";
-    }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      if (hasBbox()) {
-        if (!getBbox().isInitialized()) {
-          memoizedIsInitialized = 0;
-          return false;
-        }
-      }
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+     *
+     * <code>optional string osmosis_replication_base_url = 34;</code>
+     */
+    private void setOsmosisReplicationBaseUrl(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+      osmosisReplicationBaseUrl_ = value;
+    }
+    /**
+     * <pre>
+     * replication base URL (from Osmosis' configuration.txt file)
+     * </pre>
+     *
+     * <code>optional string osmosis_replication_base_url = 34;</code>
+     */
+    private void clearOsmosisReplicationBaseUrl() {
+      bitField0_ = (bitField0_ & ~0x00000020);
+      osmosisReplicationBaseUrl_ = getDefaultInstance().getOsmosisReplicationBaseUrl();
+    }
+    /**
+     * <pre>
+     * replication base URL (from Osmosis' configuration.txt file)
+     * </pre>
+     *
+     * <code>optional string osmosis_replication_base_url = 34;</code>
+     */
+    private void setOsmosisReplicationBaseUrlBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+      osmosisReplicationBaseUrl_ = value.toStringUtf8();
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeMessage(1, bbox_);
+        output.writeMessage(1, getBbox());
       }
       for (int i = 0; i < requiredFeatures_.size(); i++) {
-        output.writeBytes(4, requiredFeatures_.getByteString(i));
+        output.writeString(4, requiredFeatures_.get(i));
       }
       for (int i = 0; i < optionalFeatures_.size(); i++) {
-        output.writeBytes(5, optionalFeatures_.getByteString(i));
+        output.writeString(5, optionalFeatures_.get(i));
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(16, getWritingprogramBytes());
+        output.writeString(16, getWritingprogram());
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeBytes(17, getSourceBytes());
+        output.writeString(17, getSource());
       }
       if (((bitField0_ & 0x00000008) == 0x00000008)) {
@@ -696,12 +773,10 @@
       }
       if (((bitField0_ & 0x00000020) == 0x00000020)) {
-        output.writeBytes(34, getOsmosisReplicationBaseUrlBytes());
-      }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+        output.writeString(34, getOsmosisReplicationBaseUrl());
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -710,5 +785,5 @@
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, bbox_);
+          .computeMessageSize(1, getBbox());
       }
       {
@@ -716,5 +791,5 @@
         for (int i = 0; i < requiredFeatures_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeBytesSizeNoTag(requiredFeatures_.getByteString(i));
+            .computeStringSizeNoTag(requiredFeatures_.get(i));
         }
         size += dataSize;
@@ -725,5 +800,5 @@
         for (int i = 0; i < optionalFeatures_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeBytesSizeNoTag(optionalFeatures_.getByteString(i));
+            .computeStringSizeNoTag(optionalFeatures_.get(i));
         }
         size += dataSize;
@@ -732,9 +807,9 @@
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(16, getWritingprogramBytes());
+          .computeStringSize(16, getWritingprogram());
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(17, getSourceBytes());
+          .computeStringSize(17, getSource());
       }
       if (((bitField0_ & 0x00000008) == 0x00000008)) {
@@ -748,22 +823,29 @@
       if (((bitField0_ & 0x00000020) == 0x00000020)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(34, getOsmosisReplicationBaseUrlBytes());
-      }
-      size += unknownFields.size();
+          .computeStringSize(34, getOsmosisReplicationBaseUrl());
+      }
+      size += unknownFields.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 crosby.binary.Osmformat.HeaderBlock parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Osmformat.HeaderBlock parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Osmformat.HeaderBlock parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.HeaderBlock parseFrom(
@@ -771,9 +853,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.HeaderBlock parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.HeaderBlock parseFrom(
@@ -781,9 +865,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.HeaderBlock parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.HeaderBlock parseFrom(
@@ -791,9 +877,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.HeaderBlock parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.HeaderBlock parseDelimitedFrom(
@@ -801,10 +888,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.HeaderBlock parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.HeaderBlock parseFrom(
@@ -812,15 +900,14 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Osmformat.HeaderBlock prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
 
     /**
@@ -829,200 +916,24 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Osmformat.HeaderBlock, Builder>
-        implements
+          crosby.binary.Osmformat.HeaderBlock, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.HeaderBlock)
         crosby.binary.Osmformat.HeaderBlockOrBuilder {
       // Construct using crosby.binary.Osmformat.HeaderBlock.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        bbox_ = crosby.binary.Osmformat.HeaderBBox.getDefaultInstance();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        requiredFeatures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000002);
-        optionalFeatures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000004);
-        writingprogram_ = "";
-        bitField0_ = (bitField0_ & ~0x00000008);
-        source_ = "";
-        bitField0_ = (bitField0_ & ~0x00000010);
-        osmosisReplicationTimestamp_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000020);
-        osmosisReplicationSequenceNumber_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000040);
-        osmosisReplicationBaseUrl_ = "";
-        bitField0_ = (bitField0_ & ~0x00000080);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Osmformat.HeaderBlock getDefaultInstanceForType() {
-        return crosby.binary.Osmformat.HeaderBlock.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Osmformat.HeaderBlock build() {
-        crosby.binary.Osmformat.HeaderBlock result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Osmformat.HeaderBlock buildPartial() {
-        crosby.binary.Osmformat.HeaderBlock result = new crosby.binary.Osmformat.HeaderBlock(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.bbox_ = bbox_;
-        if (((bitField0_ & 0x00000002) == 0x00000002)) {
-          requiredFeatures_ = requiredFeatures_.getUnmodifiableView();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        }
-        result.requiredFeatures_ = requiredFeatures_;
-        if (((bitField0_ & 0x00000004) == 0x00000004)) {
-          optionalFeatures_ = optionalFeatures_.getUnmodifiableView();
-          bitField0_ = (bitField0_ & ~0x00000004);
-        }
-        result.optionalFeatures_ = optionalFeatures_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.writingprogram_ = writingprogram_;
-        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.source_ = source_;
-        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.osmosisReplicationTimestamp_ = osmosisReplicationTimestamp_;
-        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
-          to_bitField0_ |= 0x00000010;
-        }
-        result.osmosisReplicationSequenceNumber_ = osmosisReplicationSequenceNumber_;
-        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
-          to_bitField0_ |= 0x00000020;
-        }
-        result.osmosisReplicationBaseUrl_ = osmosisReplicationBaseUrl_;
-        result.bitField0_ = to_bitField0_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Osmformat.HeaderBlock other) {
-        if (other == crosby.binary.Osmformat.HeaderBlock.getDefaultInstance()) return this;
-        if (other.hasBbox()) {
-          mergeBbox(other.getBbox());
-        }
-        if (!other.requiredFeatures_.isEmpty()) {
-          if (requiredFeatures_.isEmpty()) {
-            requiredFeatures_ = other.requiredFeatures_;
-            bitField0_ = (bitField0_ & ~0x00000002);
-          } else {
-            ensureRequiredFeaturesIsMutable();
-            requiredFeatures_.addAll(other.requiredFeatures_);
-          }
-
-        }
-        if (!other.optionalFeatures_.isEmpty()) {
-          if (optionalFeatures_.isEmpty()) {
-            optionalFeatures_ = other.optionalFeatures_;
-            bitField0_ = (bitField0_ & ~0x00000004);
-          } else {
-            ensureOptionalFeaturesIsMutable();
-            optionalFeatures_.addAll(other.optionalFeatures_);
-          }
-
-        }
-        if (other.hasWritingprogram()) {
-          bitField0_ |= 0x00000008;
-          writingprogram_ = other.writingprogram_;
-
-        }
-        if (other.hasSource()) {
-          bitField0_ |= 0x00000010;
-          source_ = other.source_;
-
-        }
-        if (other.hasOsmosisReplicationTimestamp()) {
-          setOsmosisReplicationTimestamp(other.getOsmosisReplicationTimestamp());
-        }
-        if (other.hasOsmosisReplicationSequenceNumber()) {
-          setOsmosisReplicationSequenceNumber(other.getOsmosisReplicationSequenceNumber());
-        }
-        if (other.hasOsmosisReplicationBaseUrl()) {
-          bitField0_ |= 0x00000080;
-          osmosisReplicationBaseUrl_ = other.osmosisReplicationBaseUrl_;
-
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        if (hasBbox()) {
-          if (!getBbox().isInitialized()) {
-
-            return false;
-          }
-        }
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Osmformat.HeaderBlock parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Osmformat.HeaderBlock) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private crosby.binary.Osmformat.HeaderBBox bbox_ = crosby.binary.Osmformat.HeaderBBox.getDefaultInstance();
+        super(DEFAULT_INSTANCE);
+      }
+
+
       /**
        * <code>optional .OSMPBF.HeaderBBox bbox = 1;</code>
        */
-      @Override
-	public boolean hasBbox() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
+      public boolean hasBbox() {
+        return instance.hasBbox();
       }
       /**
        * <code>optional .OSMPBF.HeaderBBox bbox = 1;</code>
        */
-      @Override
-	public crosby.binary.Osmformat.HeaderBBox getBbox() {
-        return bbox_;
+      public crosby.binary.Osmformat.HeaderBBox getBbox() {
+        return instance.getBbox();
       }
       /**
@@ -1030,12 +941,8 @@
        */
       public Builder setBbox(crosby.binary.Osmformat.HeaderBBox value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        bbox_ = value;
-
-        bitField0_ |= 0x00000001;
-        return this;
-      }
+        copyOnWrite();
+        instance.setBbox(value);
+        return this;
+        }
       /**
        * <code>optional .OSMPBF.HeaderBBox bbox = 1;</code>
@@ -1043,7 +950,6 @@
       public Builder setBbox(
           crosby.binary.Osmformat.HeaderBBox.Builder builderForValue) {
-        bbox_ = builderForValue.build();
-
-        bitField0_ |= 0x00000001;
+        copyOnWrite();
+        instance.setBbox(builderForValue);
         return this;
       }
@@ -1052,13 +958,6 @@
        */
       public Builder mergeBbox(crosby.binary.Osmformat.HeaderBBox value) {
-        if (((bitField0_ & 0x00000001) == 0x00000001) &&
-            bbox_ != crosby.binary.Osmformat.HeaderBBox.getDefaultInstance()) {
-          bbox_ =
-            crosby.binary.Osmformat.HeaderBBox.newBuilder(bbox_).mergeFrom(value).buildPartial();
-        } else {
-          bbox_ = value;
-        }
-
-        bitField0_ |= 0x00000001;
+        copyOnWrite();
+        instance.mergeBbox(value);
         return this;
       }
@@ -1066,180 +965,143 @@
        * <code>optional .OSMPBF.HeaderBBox bbox = 1;</code>
        */
-      public Builder clearBbox() {
-        bbox_ = crosby.binary.Osmformat.HeaderBBox.getDefaultInstance();
-
-        bitField0_ = (bitField0_ & ~0x00000001);
-        return this;
-      }
-
-      private com.google.protobuf.LazyStringList requiredFeatures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      private void ensureRequiredFeaturesIsMutable() {
-        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          requiredFeatures_ = new com.google.protobuf.LazyStringArrayList(requiredFeatures_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-      /**
+      public Builder clearBbox() {  copyOnWrite();
+        instance.clearBbox();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * Additional tags to aid in parsing this dataset 
+       * </pre>
+       *
        * <code>repeated string required_features = 4;</code>
-       *
-       * <pre>
-       * Additional tags to aid in parsing this dataset
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.ProtocolStringList
+       */
+      public java.util.List<java.lang.String>
           getRequiredFeaturesList() {
-        return requiredFeatures_.getUnmodifiableView();
-      }
-      /**
+        return java.util.Collections.unmodifiableList(
+            instance.getRequiredFeaturesList());
+      }
+      /**
+       * <pre>
+       * Additional tags to aid in parsing this dataset 
+       * </pre>
+       *
        * <code>repeated string required_features = 4;</code>
-       *
-       * <pre>
-       * Additional tags to aid in parsing this dataset
-       * </pre>
-       */
-      @Override
-	public int getRequiredFeaturesCount() {
-        return requiredFeatures_.size();
-      }
-      /**
+       */
+      public int getRequiredFeaturesCount() {
+        return instance.getRequiredFeaturesCount();
+      }
+      /**
+       * <pre>
+       * Additional tags to aid in parsing this dataset 
+       * </pre>
+       *
        * <code>repeated string required_features = 4;</code>
-       *
-       * <pre>
-       * Additional tags to aid in parsing this dataset
-       * </pre>
-       */
-      @Override
-	public java.lang.String getRequiredFeatures(int index) {
-        return requiredFeatures_.get(index);
-      }
-      /**
+       */
+      public java.lang.String getRequiredFeatures(int index) {
+        return instance.getRequiredFeatures(index);
+      }
+      /**
+       * <pre>
+       * Additional tags to aid in parsing this dataset 
+       * </pre>
+       *
        * <code>repeated string required_features = 4;</code>
-       *
-       * <pre>
-       * Additional tags to aid in parsing this dataset
-       * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
+       */
+      public com.google.protobuf.ByteString
           getRequiredFeaturesBytes(int index) {
-        return requiredFeatures_.getByteString(index);
-      }
-      /**
+        return instance.getRequiredFeaturesBytes(index);
+      }
+      /**
+       * <pre>
+       * Additional tags to aid in parsing this dataset 
+       * </pre>
+       *
        * <code>repeated string required_features = 4;</code>
-       *
-       * <pre>
-       * Additional tags to aid in parsing this dataset
-       * </pre>
        */
       public Builder setRequiredFeatures(
           int index, java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureRequiredFeaturesIsMutable();
-        requiredFeatures_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setRequiredFeatures(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * Additional tags to aid in parsing this dataset 
+       * </pre>
+       *
        * <code>repeated string required_features = 4;</code>
-       *
-       * <pre>
-       * Additional tags to aid in parsing this dataset
-       * </pre>
        */
       public Builder addRequiredFeatures(
           java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureRequiredFeaturesIsMutable();
-        requiredFeatures_.add(value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addRequiredFeatures(value);
+        return this;
+      }
+      /**
+       * <pre>
+       * Additional tags to aid in parsing this dataset 
+       * </pre>
+       *
        * <code>repeated string required_features = 4;</code>
-       *
-       * <pre>
-       * Additional tags to aid in parsing this dataset
-       * </pre>
        */
       public Builder addAllRequiredFeatures(
           java.lang.Iterable<java.lang.String> values) {
-        ensureRequiredFeaturesIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, requiredFeatures_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllRequiredFeatures(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * Additional tags to aid in parsing this dataset 
+       * </pre>
+       *
        * <code>repeated string required_features = 4;</code>
-       *
-       * <pre>
-       * Additional tags to aid in parsing this dataset
-       * </pre>
        */
       public Builder clearRequiredFeatures() {
-        requiredFeatures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000002);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.clearRequiredFeatures();
+        return this;
+      }
+      /**
+       * <pre>
+       * Additional tags to aid in parsing this dataset 
+       * </pre>
+       *
        * <code>repeated string required_features = 4;</code>
-       *
-       * <pre>
-       * Additional tags to aid in parsing this dataset
-       * </pre>
        */
       public Builder addRequiredFeaturesBytes(
           com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureRequiredFeaturesIsMutable();
-        requiredFeatures_.add(value);
-
-        return this;
-      }
-
-      private com.google.protobuf.LazyStringList optionalFeatures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      private void ensureOptionalFeaturesIsMutable() {
-        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
-          optionalFeatures_ = new com.google.protobuf.LazyStringArrayList(optionalFeatures_);
-          bitField0_ |= 0x00000004;
-         }
-      }
+        copyOnWrite();
+        instance.addRequiredFeaturesBytes(value);
+        return this;
+      }
+
       /**
        * <code>repeated string optional_features = 5;</code>
        */
-      @Override
-	public com.google.protobuf.ProtocolStringList
+      public java.util.List<java.lang.String>
           getOptionalFeaturesList() {
-        return optionalFeatures_.getUnmodifiableView();
+        return java.util.Collections.unmodifiableList(
+            instance.getOptionalFeaturesList());
       }
       /**
        * <code>repeated string optional_features = 5;</code>
        */
-      @Override
-	public int getOptionalFeaturesCount() {
-        return optionalFeatures_.size();
+      public int getOptionalFeaturesCount() {
+        return instance.getOptionalFeaturesCount();
       }
       /**
        * <code>repeated string optional_features = 5;</code>
        */
-      @Override
-	public java.lang.String getOptionalFeatures(int index) {
-        return optionalFeatures_.get(index);
+      public java.lang.String getOptionalFeatures(int index) {
+        return instance.getOptionalFeatures(index);
       }
       /**
        * <code>repeated string optional_features = 5;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getOptionalFeaturesBytes(int index) {
-        return optionalFeatures_.getByteString(index);
+        return instance.getOptionalFeaturesBytes(index);
       }
       /**
@@ -1248,10 +1110,6 @@
       public Builder setOptionalFeatures(
           int index, java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureOptionalFeaturesIsMutable();
-        optionalFeatures_.set(index, value);
-
+        copyOnWrite();
+        instance.setOptionalFeatures(index, value);
         return this;
       }
@@ -1261,10 +1119,6 @@
       public Builder addOptionalFeatures(
           java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureOptionalFeaturesIsMutable();
-        optionalFeatures_.add(value);
-
+        copyOnWrite();
+        instance.addOptionalFeatures(value);
         return this;
       }
@@ -1274,8 +1128,6 @@
       public Builder addAllOptionalFeatures(
           java.lang.Iterable<java.lang.String> values) {
-        ensureOptionalFeaturesIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, optionalFeatures_);
-
+        copyOnWrite();
+        instance.addAllOptionalFeatures(values);
         return this;
       }
@@ -1284,7 +1136,6 @@
        */
       public Builder clearOptionalFeatures() {
-        optionalFeatures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000004);
-
+        copyOnWrite();
+        instance.clearOptionalFeatures();
         return this;
       }
@@ -1294,55 +1145,27 @@
       public Builder addOptionalFeaturesBytes(
           com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureOptionalFeaturesIsMutable();
-        optionalFeatures_.add(value);
-
-        return this;
-      }
-
-      private java.lang.Object writingprogram_ = "";
+        copyOnWrite();
+        instance.addOptionalFeaturesBytes(value);
+        return this;
+      }
+
       /**
        * <code>optional string writingprogram = 16;</code>
        */
-      @Override
-	public boolean hasWritingprogram() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
+      public boolean hasWritingprogram() {
+        return instance.hasWritingprogram();
       }
       /**
        * <code>optional string writingprogram = 16;</code>
        */
-      @Override
-	public java.lang.String getWritingprogram() {
-        java.lang.Object ref = writingprogram_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            writingprogram_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
+      public java.lang.String getWritingprogram() {
+        return instance.getWritingprogram();
       }
       /**
        * <code>optional string writingprogram = 16;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString
+      public com.google.protobuf.ByteString
           getWritingprogramBytes() {
-        java.lang.Object ref = writingprogram_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          writingprogram_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
+        return instance.getWritingprogramBytes();
       }
       /**
@@ -1351,10 +1174,6 @@
       public Builder setWritingprogram(
           java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000008;
-        writingprogram_ = value;
-
+        copyOnWrite();
+        instance.setWritingprogram(value);
         return this;
       }
@@ -1363,7 +1182,6 @@
        */
       public Builder clearWritingprogram() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        writingprogram_ = getDefaultInstance().getWritingprogram();
-
+        copyOnWrite();
+        instance.clearWritingprogram();
         return this;
       }
@@ -1373,324 +1191,244 @@
       public Builder setWritingprogramBytes(
           com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000008;
-        writingprogram_ = value;
-
-        return this;
-      }
-
-      private java.lang.Object source_ = "";
-      /**
+        copyOnWrite();
+        instance.setWritingprogramBytes(value);
+        return this;
+      }
+
+      /**
+       * <pre>
+       * From the bbox field.
+       * </pre>
+       *
        * <code>optional string source = 17;</code>
-       *
+       */
+      public boolean hasSource() {
+        return instance.hasSource();
+      }
+      /**
        * <pre>
        * From the bbox field.
        * </pre>
-       */
-      @Override
-	public boolean hasSource() {
-        return ((bitField0_ & 0x00000010) == 0x00000010);
-      }
-      /**
+       *
        * <code>optional string source = 17;</code>
-       *
+       */
+      public java.lang.String getSource() {
+        return instance.getSource();
+      }
+      /**
        * <pre>
        * From the bbox field.
        * </pre>
-       */
-      @Override
-	public java.lang.String getSource() {
-        java.lang.Object ref = source_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            source_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
+       *
        * <code>optional string source = 17;</code>
-       *
+       */
+      public com.google.protobuf.ByteString
+          getSourceBytes() {
+        return instance.getSourceBytes();
+      }
+      /**
        * <pre>
        * From the bbox field.
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
-          getSourceBytes() {
-        java.lang.Object ref = source_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          source_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
+       *
        * <code>optional string source = 17;</code>
-       *
-       * <pre>
-       * From the bbox field.
-       * </pre>
        */
       public Builder setSource(
           java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000010;
-        source_ = value;
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setSource(value);
+        return this;
+      }
+      /**
+       * <pre>
+       * From the bbox field.
+       * </pre>
+       *
        * <code>optional string source = 17;</code>
-       *
+       */
+      public Builder clearSource() {
+        copyOnWrite();
+        instance.clearSource();
+        return this;
+      }
+      /**
        * <pre>
        * From the bbox field.
        * </pre>
-       */
-      public Builder clearSource() {
-        bitField0_ = (bitField0_ & ~0x00000010);
-        source_ = getDefaultInstance().getSource();
-
-        return this;
-      }
-      /**
+       *
        * <code>optional string source = 17;</code>
-       *
-       * <pre>
-       * From the bbox field.
-       * </pre>
        */
       public Builder setSourceBytes(
           com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000010;
-        source_ = value;
-
-        return this;
-      }
-
-      private long osmosisReplicationTimestamp_ ;
-      /**
-       * <code>optional int64 osmosis_replication_timestamp = 32;</code>
-       *
-       * <pre>
-       * replication timestamp, expressed in seconds since the epoch,
+        copyOnWrite();
+        instance.setSourceBytes(value);
+        return this;
+      }
+
+      /**
+       * <pre>
+       * replication timestamp, expressed in seconds since the epoch, 
        * otherwise the same value as in the "timestamp=..." field
        * in the state.txt file used by Osmosis
        * </pre>
-       */
-      @Override
-	public boolean hasOsmosisReplicationTimestamp() {
-        return ((bitField0_ & 0x00000020) == 0x00000020);
-      }
-      /**
+       *
        * <code>optional int64 osmosis_replication_timestamp = 32;</code>
-       *
-       * <pre>
-       * replication timestamp, expressed in seconds since the epoch,
+       */
+      public boolean hasOsmosisReplicationTimestamp() {
+        return instance.hasOsmosisReplicationTimestamp();
+      }
+      /**
+       * <pre>
+       * replication timestamp, expressed in seconds since the epoch, 
        * otherwise the same value as in the "timestamp=..." field
        * in the state.txt file used by Osmosis
        * </pre>
-       */
-      @Override
-	public long getOsmosisReplicationTimestamp() {
-        return osmosisReplicationTimestamp_;
-      }
-      /**
+       *
        * <code>optional int64 osmosis_replication_timestamp = 32;</code>
-       *
-       * <pre>
-       * replication timestamp, expressed in seconds since the epoch,
+       */
+      public long getOsmosisReplicationTimestamp() {
+        return instance.getOsmosisReplicationTimestamp();
+      }
+      /**
+       * <pre>
+       * replication timestamp, expressed in seconds since the epoch, 
        * otherwise the same value as in the "timestamp=..." field
        * in the state.txt file used by Osmosis
        * </pre>
+       *
+       * <code>optional int64 osmosis_replication_timestamp = 32;</code>
        */
       public Builder setOsmosisReplicationTimestamp(long value) {
-        bitField0_ |= 0x00000020;
-        osmosisReplicationTimestamp_ = value;
-
-        return this;
-      }
-      /**
-       * <code>optional int64 osmosis_replication_timestamp = 32;</code>
-       *
-       * <pre>
-       * replication timestamp, expressed in seconds since the epoch,
+        copyOnWrite();
+        instance.setOsmosisReplicationTimestamp(value);
+        return this;
+      }
+      /**
+       * <pre>
+       * replication timestamp, expressed in seconds since the epoch, 
        * otherwise the same value as in the "timestamp=..." field
        * in the state.txt file used by Osmosis
        * </pre>
+       *
+       * <code>optional int64 osmosis_replication_timestamp = 32;</code>
        */
       public Builder clearOsmosisReplicationTimestamp() {
-        bitField0_ = (bitField0_ & ~0x00000020);
-        osmosisReplicationTimestamp_ = 0L;
-
-        return this;
-      }
-
-      private long osmosisReplicationSequenceNumber_ ;
-      /**
+        copyOnWrite();
+        instance.clearOsmosisReplicationTimestamp();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * replication sequence number (sequenceNumber in state.txt)
+       * </pre>
+       *
        * <code>optional int64 osmosis_replication_sequence_number = 33;</code>
-       *
+       */
+      public boolean hasOsmosisReplicationSequenceNumber() {
+        return instance.hasOsmosisReplicationSequenceNumber();
+      }
+      /**
        * <pre>
        * replication sequence number (sequenceNumber in state.txt)
        * </pre>
-       */
-      @Override
-	public boolean hasOsmosisReplicationSequenceNumber() {
-        return ((bitField0_ & 0x00000040) == 0x00000040);
-      }
-      /**
+       *
        * <code>optional int64 osmosis_replication_sequence_number = 33;</code>
-       *
+       */
+      public long getOsmosisReplicationSequenceNumber() {
+        return instance.getOsmosisReplicationSequenceNumber();
+      }
+      /**
        * <pre>
        * replication sequence number (sequenceNumber in state.txt)
        * </pre>
-       */
-      @Override
-	public long getOsmosisReplicationSequenceNumber() {
-        return osmosisReplicationSequenceNumber_;
-      }
-      /**
+       *
        * <code>optional int64 osmosis_replication_sequence_number = 33;</code>
-       *
+       */
+      public Builder setOsmosisReplicationSequenceNumber(long value) {
+        copyOnWrite();
+        instance.setOsmosisReplicationSequenceNumber(value);
+        return this;
+      }
+      /**
        * <pre>
        * replication sequence number (sequenceNumber in state.txt)
        * </pre>
-       */
-      public Builder setOsmosisReplicationSequenceNumber(long value) {
-        bitField0_ |= 0x00000040;
-        osmosisReplicationSequenceNumber_ = value;
-
-        return this;
-      }
-      /**
+       *
        * <code>optional int64 osmosis_replication_sequence_number = 33;</code>
-       *
-       * <pre>
-       * replication sequence number (sequenceNumber in state.txt)
-       * </pre>
        */
       public Builder clearOsmosisReplicationSequenceNumber() {
-        bitField0_ = (bitField0_ & ~0x00000040);
-        osmosisReplicationSequenceNumber_ = 0L;
-
-        return this;
-      }
-
-      private java.lang.Object osmosisReplicationBaseUrl_ = "";
-      /**
+        copyOnWrite();
+        instance.clearOsmosisReplicationSequenceNumber();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * replication base URL (from Osmosis' configuration.txt file)
+       * </pre>
+       *
        * <code>optional string osmosis_replication_base_url = 34;</code>
-       *
+       */
+      public boolean hasOsmosisReplicationBaseUrl() {
+        return instance.hasOsmosisReplicationBaseUrl();
+      }
+      /**
        * <pre>
        * replication base URL (from Osmosis' configuration.txt file)
        * </pre>
-       */
-      @Override
-	public boolean hasOsmosisReplicationBaseUrl() {
-        return ((bitField0_ & 0x00000080) == 0x00000080);
-      }
-      /**
+       *
        * <code>optional string osmosis_replication_base_url = 34;</code>
-       *
+       */
+      public java.lang.String getOsmosisReplicationBaseUrl() {
+        return instance.getOsmosisReplicationBaseUrl();
+      }
+      /**
        * <pre>
        * replication base URL (from Osmosis' configuration.txt file)
        * </pre>
-       */
-      @Override
-	public java.lang.String getOsmosisReplicationBaseUrl() {
-        java.lang.Object ref = osmosisReplicationBaseUrl_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (bs.isValidUtf8()) {
-            osmosisReplicationBaseUrl_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
+       *
        * <code>optional string osmosis_replication_base_url = 34;</code>
-       *
+       */
+      public com.google.protobuf.ByteString
+          getOsmosisReplicationBaseUrlBytes() {
+        return instance.getOsmosisReplicationBaseUrlBytes();
+      }
+      /**
        * <pre>
        * replication base URL (from Osmosis' configuration.txt file)
        * </pre>
-       */
-      @Override
-	public com.google.protobuf.ByteString
-          getOsmosisReplicationBaseUrlBytes() {
-        java.lang.Object ref = osmosisReplicationBaseUrl_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          osmosisReplicationBaseUrl_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
+       *
        * <code>optional string osmosis_replication_base_url = 34;</code>
-       *
-       * <pre>
-       * replication base URL (from Osmosis' configuration.txt file)
-       * </pre>
        */
       public Builder setOsmosisReplicationBaseUrl(
           java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000080;
-        osmosisReplicationBaseUrl_ = value;
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setOsmosisReplicationBaseUrl(value);
+        return this;
+      }
+      /**
+       * <pre>
+       * replication base URL (from Osmosis' configuration.txt file)
+       * </pre>
+       *
        * <code>optional string osmosis_replication_base_url = 34;</code>
-       *
+       */
+      public Builder clearOsmosisReplicationBaseUrl() {
+        copyOnWrite();
+        instance.clearOsmosisReplicationBaseUrl();
+        return this;
+      }
+      /**
        * <pre>
        * replication base URL (from Osmosis' configuration.txt file)
        * </pre>
-       */
-      public Builder clearOsmosisReplicationBaseUrl() {
-        bitField0_ = (bitField0_ & ~0x00000080);
-        osmosisReplicationBaseUrl_ = getDefaultInstance().getOsmosisReplicationBaseUrl();
-
-        return this;
-      }
-      /**
+       *
        * <code>optional string osmosis_replication_base_url = 34;</code>
-       *
-       * <pre>
-       * replication base URL (from Osmosis' configuration.txt file)
-       * </pre>
        */
       public Builder setOsmosisReplicationBaseUrlBytes(
           com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000080;
-        osmosisReplicationBaseUrl_ = value;
-
+        copyOnWrite();
+        instance.setOsmosisReplicationBaseUrlBytes(value);
         return this;
       }
@@ -1698,11 +1436,189 @@
       // @@protoc_insertion_point(builder_scope:OSMPBF.HeaderBlock)
     }
-
+    private byte memoizedIsInitialized = -1;
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Osmformat.HeaderBlock();
+        }
+        case IS_INITIALIZED: {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized == 1) return DEFAULT_INSTANCE;
+          if (isInitialized == 0) return null;
+
+          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
+          if (hasBbox()) {
+            if (!getBbox().isInitialized()) {
+              if (shouldMemoize) {
+                memoizedIsInitialized = 0;
+              }
+              return null;
+            }
+          }
+          if (shouldMemoize) memoizedIsInitialized = 1;
+          return DEFAULT_INSTANCE;
+
+        }
+        case MAKE_IMMUTABLE: {
+          requiredFeatures_.makeImmutable();
+          optionalFeatures_.makeImmutable();
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Osmformat.HeaderBlock other = (crosby.binary.Osmformat.HeaderBlock) arg1;
+          bbox_ = visitor.visitMessage(bbox_, other.bbox_);
+          requiredFeatures_= visitor.visitList(requiredFeatures_, other.requiredFeatures_);
+          optionalFeatures_= visitor.visitList(optionalFeatures_, other.optionalFeatures_);
+          writingprogram_ = visitor.visitString(
+              hasWritingprogram(), writingprogram_,
+              other.hasWritingprogram(), other.writingprogram_);
+          source_ = visitor.visitString(
+              hasSource(), source_,
+              other.hasSource(), other.source_);
+          osmosisReplicationTimestamp_ = visitor.visitLong(
+              hasOsmosisReplicationTimestamp(), osmosisReplicationTimestamp_,
+              other.hasOsmosisReplicationTimestamp(), other.osmosisReplicationTimestamp_);
+          osmosisReplicationSequenceNumber_ = visitor.visitLong(
+              hasOsmosisReplicationSequenceNumber(), osmosisReplicationSequenceNumber_,
+              other.hasOsmosisReplicationSequenceNumber(), other.osmosisReplicationSequenceNumber_);
+          osmosisReplicationBaseUrl_ = visitor.visitString(
+              hasOsmosisReplicationBaseUrl(), osmosisReplicationBaseUrl_,
+              other.hasOsmosisReplicationBaseUrl(), other.osmosisReplicationBaseUrl_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+            bitField0_ |= other.bitField0_;
+          }
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  crosby.binary.Osmformat.HeaderBBox.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                    subBuilder = bbox_.toBuilder();
+                  }
+                  bbox_ = input.readMessage(crosby.binary.Osmformat.HeaderBBox.parser(), extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(bbox_);
+                    bbox_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000001;
+                  break;
+                }
+                case 34: {
+                  java.lang.String s = input.readString();
+                  if (!requiredFeatures_.isModifiable()) {
+                    requiredFeatures_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(requiredFeatures_);
+                  }
+                  requiredFeatures_.add(s);
+                  break;
+                }
+                case 42: {
+                  java.lang.String s = input.readString();
+                  if (!optionalFeatures_.isModifiable()) {
+                    optionalFeatures_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(optionalFeatures_);
+                  }
+                  optionalFeatures_.add(s);
+                  break;
+                }
+                case 130: {
+                  java.lang.String s = input.readString();
+                  bitField0_ |= 0x00000002;
+                  writingprogram_ = s;
+                  break;
+                }
+                case 138: {
+                  java.lang.String s = input.readString();
+                  bitField0_ |= 0x00000004;
+                  source_ = s;
+                  break;
+                }
+                case 256: {
+                  bitField0_ |= 0x00000008;
+                  osmosisReplicationTimestamp_ = input.readInt64();
+                  break;
+                }
+                case 264: {
+                  bitField0_ |= 0x00000010;
+                  osmosisReplicationSequenceNumber_ = input.readInt64();
+                  break;
+                }
+                case 274: {
+                  java.lang.String s = input.readString();
+                  bitField0_ |= 0x00000020;
+                  osmosisReplicationBaseUrl_ = s;
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Osmformat.HeaderBlock.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.HeaderBlock)
+    private static final crosby.binary.Osmformat.HeaderBlock DEFAULT_INSTANCE;
     static {
-      defaultInstance = new HeaderBlock(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.HeaderBlock)
+      DEFAULT_INSTANCE = new HeaderBlock();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Osmformat.HeaderBlock getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<HeaderBlock> PARSER;
+
+    public static com.google.protobuf.Parser<HeaderBlock> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
@@ -1750,106 +1666,11 @@
    * Protobuf type {@code OSMPBF.HeaderBBox}
    */
-  public static final class HeaderBBox extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class HeaderBBox extends
+      com.google.protobuf.GeneratedMessageLite<
+          HeaderBBox, HeaderBBox.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.HeaderBBox)
       HeaderBBoxOrBuilder {
-    // Use HeaderBBox.newBuilder() to construct.
-    private HeaderBBox(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private HeaderBBox(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final HeaderBBox defaultInstance;
-    public static HeaderBBox getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public HeaderBBox getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private HeaderBBox(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 8: {
-              bitField0_ |= 0x00000001;
-              left_ = input.readSInt64();
-              break;
-            }
-            case 16: {
-              bitField0_ |= 0x00000002;
-              right_ = input.readSInt64();
-              break;
-            }
-            case 24: {
-              bitField0_ |= 0x00000004;
-              top_ = input.readSInt64();
-              break;
-            }
-            case 32: {
-              bitField0_ |= 0x00000008;
-              bottom_ = input.readSInt64();
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<HeaderBBox> PARSER =
-        new com.google.protobuf.AbstractParser<HeaderBBox>() {
-      @Override
-	public HeaderBBox parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new HeaderBBox(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<HeaderBBox> getParserForType() {
-      return PARSER;
-    }
-
+    private HeaderBBox() {
+    }
     private int bitField0_;
     public static final int LEFT_FIELD_NUMBER = 1;
@@ -1858,6 +1679,5 @@
      * <code>required sint64 left = 1;</code>
      */
-    @Override
-	public boolean hasLeft() {
+    public boolean hasLeft() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -1865,7 +1685,20 @@
      * <code>required sint64 left = 1;</code>
      */
-    @Override
-	public long getLeft() {
+    public long getLeft() {
       return left_;
+    }
+    /**
+     * <code>required sint64 left = 1;</code>
+     */
+    private void setLeft(long value) {
+      bitField0_ |= 0x00000001;
+      left_ = value;
+    }
+    /**
+     * <code>required sint64 left = 1;</code>
+     */
+    private void clearLeft() {
+      bitField0_ = (bitField0_ & ~0x00000001);
+      left_ = 0L;
     }
 
@@ -1875,6 +1708,5 @@
      * <code>required sint64 right = 2;</code>
      */
-    @Override
-	public boolean hasRight() {
+    public boolean hasRight() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
@@ -1882,7 +1714,20 @@
      * <code>required sint64 right = 2;</code>
      */
-    @Override
-	public long getRight() {
+    public long getRight() {
       return right_;
+    }
+    /**
+     * <code>required sint64 right = 2;</code>
+     */
+    private void setRight(long value) {
+      bitField0_ |= 0x00000002;
+      right_ = value;
+    }
+    /**
+     * <code>required sint64 right = 2;</code>
+     */
+    private void clearRight() {
+      bitField0_ = (bitField0_ & ~0x00000002);
+      right_ = 0L;
     }
 
@@ -1892,6 +1737,5 @@
      * <code>required sint64 top = 3;</code>
      */
-    @Override
-	public boolean hasTop() {
+    public boolean hasTop() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
@@ -1899,7 +1743,20 @@
      * <code>required sint64 top = 3;</code>
      */
-    @Override
-	public long getTop() {
+    public long getTop() {
       return top_;
+    }
+    /**
+     * <code>required sint64 top = 3;</code>
+     */
+    private void setTop(long value) {
+      bitField0_ |= 0x00000004;
+      top_ = value;
+    }
+    /**
+     * <code>required sint64 top = 3;</code>
+     */
+    private void clearTop() {
+      bitField0_ = (bitField0_ & ~0x00000004);
+      top_ = 0L;
     }
 
@@ -1909,6 +1766,5 @@
      * <code>required sint64 bottom = 4;</code>
      */
-    @Override
-	public boolean hasBottom() {
+    public boolean hasBottom() {
       return ((bitField0_ & 0x00000008) == 0x00000008);
     }
@@ -1916,46 +1772,24 @@
      * <code>required sint64 bottom = 4;</code>
      */
-    @Override
-	public long getBottom() {
+    public long getBottom() {
       return bottom_;
     }
-
-    private void initFields() {
-      left_ = 0L;
-      right_ = 0L;
-      top_ = 0L;
+    /**
+     * <code>required sint64 bottom = 4;</code>
+     */
+    private void setBottom(long value) {
+      bitField0_ |= 0x00000008;
+      bottom_ = value;
+    }
+    /**
+     * <code>required sint64 bottom = 4;</code>
+     */
+    private void clearBottom() {
+      bitField0_ = (bitField0_ & ~0x00000008);
       bottom_ = 0L;
     }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      if (!hasLeft()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      if (!hasRight()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      if (!hasTop()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      if (!hasBottom()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeSInt64(1, left_);
@@ -1970,10 +1804,8 @@
         output.writeSInt64(4, bottom_);
       }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -1996,20 +1828,27 @@
           .computeSInt64Size(4, bottom_);
       }
-      size += unknownFields.size();
+      size += unknownFields.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 crosby.binary.Osmformat.HeaderBBox parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Osmformat.HeaderBBox parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Osmformat.HeaderBBox parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.HeaderBBox parseFrom(
@@ -2017,9 +1856,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.HeaderBBox parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.HeaderBBox parseFrom(
@@ -2027,9 +1868,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.HeaderBBox parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.HeaderBBox parseFrom(
@@ -2037,9 +1880,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.HeaderBBox parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.HeaderBBox parseDelimitedFrom(
@@ -2047,10 +1891,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.HeaderBBox parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.HeaderBBox parseFrom(
@@ -2058,15 +1903,14 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Osmformat.HeaderBBox prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
 
     /**
@@ -2075,283 +1919,285 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Osmformat.HeaderBBox, Builder>
-        implements
+          crosby.binary.Osmformat.HeaderBBox, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.HeaderBBox)
         crosby.binary.Osmformat.HeaderBBoxOrBuilder {
       // Construct using crosby.binary.Osmformat.HeaderBBox.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        left_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        right_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000002);
-        top_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000004);
-        bottom_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000008);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Osmformat.HeaderBBox getDefaultInstanceForType() {
-        return crosby.binary.Osmformat.HeaderBBox.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Osmformat.HeaderBBox build() {
-        crosby.binary.Osmformat.HeaderBBox result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Osmformat.HeaderBBox buildPartial() {
-        crosby.binary.Osmformat.HeaderBBox result = new crosby.binary.Osmformat.HeaderBBox(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.left_ = left_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.right_ = right_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.top_ = top_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.bottom_ = bottom_;
-        result.bitField0_ = to_bitField0_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Osmformat.HeaderBBox other) {
-        if (other == crosby.binary.Osmformat.HeaderBBox.getDefaultInstance()) return this;
-        if (other.hasLeft()) {
-          setLeft(other.getLeft());
-        }
-        if (other.hasRight()) {
-          setRight(other.getRight());
-        }
-        if (other.hasTop()) {
-          setTop(other.getTop());
-        }
-        if (other.hasBottom()) {
-          setBottom(other.getBottom());
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        if (!hasLeft()) {
-
-          return false;
-        }
-        if (!hasRight()) {
-
-          return false;
-        }
-        if (!hasTop()) {
-
-          return false;
-        }
-        if (!hasBottom()) {
-
-          return false;
-        }
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Osmformat.HeaderBBox parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Osmformat.HeaderBBox) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <code>required sint64 left = 1;</code>
+       */
+      public boolean hasLeft() {
+        return instance.hasLeft();
+      }
+      /**
+       * <code>required sint64 left = 1;</code>
+       */
+      public long getLeft() {
+        return instance.getLeft();
+      }
+      /**
+       * <code>required sint64 left = 1;</code>
+       */
+      public Builder setLeft(long value) {
+        copyOnWrite();
+        instance.setLeft(value);
+        return this;
+      }
+      /**
+       * <code>required sint64 left = 1;</code>
+       */
+      public Builder clearLeft() {
+        copyOnWrite();
+        instance.clearLeft();
+        return this;
+      }
+
+      /**
+       * <code>required sint64 right = 2;</code>
+       */
+      public boolean hasRight() {
+        return instance.hasRight();
+      }
+      /**
+       * <code>required sint64 right = 2;</code>
+       */
+      public long getRight() {
+        return instance.getRight();
+      }
+      /**
+       * <code>required sint64 right = 2;</code>
+       */
+      public Builder setRight(long value) {
+        copyOnWrite();
+        instance.setRight(value);
+        return this;
+      }
+      /**
+       * <code>required sint64 right = 2;</code>
+       */
+      public Builder clearRight() {
+        copyOnWrite();
+        instance.clearRight();
+        return this;
+      }
+
+      /**
+       * <code>required sint64 top = 3;</code>
+       */
+      public boolean hasTop() {
+        return instance.hasTop();
+      }
+      /**
+       * <code>required sint64 top = 3;</code>
+       */
+      public long getTop() {
+        return instance.getTop();
+      }
+      /**
+       * <code>required sint64 top = 3;</code>
+       */
+      public Builder setTop(long value) {
+        copyOnWrite();
+        instance.setTop(value);
+        return this;
+      }
+      /**
+       * <code>required sint64 top = 3;</code>
+       */
+      public Builder clearTop() {
+        copyOnWrite();
+        instance.clearTop();
+        return this;
+      }
+
+      /**
+       * <code>required sint64 bottom = 4;</code>
+       */
+      public boolean hasBottom() {
+        return instance.hasBottom();
+      }
+      /**
+       * <code>required sint64 bottom = 4;</code>
+       */
+      public long getBottom() {
+        return instance.getBottom();
+      }
+      /**
+       * <code>required sint64 bottom = 4;</code>
+       */
+      public Builder setBottom(long value) {
+        copyOnWrite();
+        instance.setBottom(value);
+        return this;
+      }
+      /**
+       * <code>required sint64 bottom = 4;</code>
+       */
+      public Builder clearBottom() {
+        copyOnWrite();
+        instance.clearBottom();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:OSMPBF.HeaderBBox)
+    }
+    private byte memoizedIsInitialized = -1;
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Osmformat.HeaderBBox();
+        }
+        case IS_INITIALIZED: {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized == 1) return DEFAULT_INSTANCE;
+          if (isInitialized == 0) return null;
+
+          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
+          if (!hasLeft()) {
+            if (shouldMemoize) {
+              memoizedIsInitialized = 0;
+            }
+            return null;
           }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private long left_ ;
-      /**
-       * <code>required sint64 left = 1;</code>
-       */
-      @Override
-	public boolean hasLeft() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>required sint64 left = 1;</code>
-       */
-      @Override
-	public long getLeft() {
-        return left_;
-      }
-      /**
-       * <code>required sint64 left = 1;</code>
-       */
-      public Builder setLeft(long value) {
-        bitField0_ |= 0x00000001;
-        left_ = value;
-
-        return this;
-      }
-      /**
-       * <code>required sint64 left = 1;</code>
-       */
-      public Builder clearLeft() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        left_ = 0L;
-
-        return this;
-      }
-
-      private long right_ ;
-      /**
-       * <code>required sint64 right = 2;</code>
-       */
-      @Override
-	public boolean hasRight() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>required sint64 right = 2;</code>
-       */
-      @Override
-	public long getRight() {
-        return right_;
-      }
-      /**
-       * <code>required sint64 right = 2;</code>
-       */
-      public Builder setRight(long value) {
-        bitField0_ |= 0x00000002;
-        right_ = value;
-
-        return this;
-      }
-      /**
-       * <code>required sint64 right = 2;</code>
-       */
-      public Builder clearRight() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        right_ = 0L;
-
-        return this;
-      }
-
-      private long top_ ;
-      /**
-       * <code>required sint64 top = 3;</code>
-       */
-      @Override
-	public boolean hasTop() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
-       * <code>required sint64 top = 3;</code>
-       */
-      @Override
-	public long getTop() {
-        return top_;
-      }
-      /**
-       * <code>required sint64 top = 3;</code>
-       */
-      public Builder setTop(long value) {
-        bitField0_ |= 0x00000004;
-        top_ = value;
-
-        return this;
-      }
-      /**
-       * <code>required sint64 top = 3;</code>
-       */
-      public Builder clearTop() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        top_ = 0L;
-
-        return this;
-      }
-
-      private long bottom_ ;
-      /**
-       * <code>required sint64 bottom = 4;</code>
-       */
-      @Override
-	public boolean hasBottom() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
-       * <code>required sint64 bottom = 4;</code>
-       */
-      @Override
-	public long getBottom() {
-        return bottom_;
-      }
-      /**
-       * <code>required sint64 bottom = 4;</code>
-       */
-      public Builder setBottom(long value) {
-        bitField0_ |= 0x00000008;
-        bottom_ = value;
-
-        return this;
-      }
-      /**
-       * <code>required sint64 bottom = 4;</code>
-       */
-      public Builder clearBottom() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        bottom_ = 0L;
-
-        return this;
-      }
-
-      // @@protoc_insertion_point(builder_scope:OSMPBF.HeaderBBox)
-    }
-
+          if (!hasRight()) {
+            if (shouldMemoize) {
+              memoizedIsInitialized = 0;
+            }
+            return null;
+          }
+          if (!hasTop()) {
+            if (shouldMemoize) {
+              memoizedIsInitialized = 0;
+            }
+            return null;
+          }
+          if (!hasBottom()) {
+            if (shouldMemoize) {
+              memoizedIsInitialized = 0;
+            }
+            return null;
+          }
+          if (shouldMemoize) memoizedIsInitialized = 1;
+          return DEFAULT_INSTANCE;
+
+        }
+        case MAKE_IMMUTABLE: {
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Osmformat.HeaderBBox other = (crosby.binary.Osmformat.HeaderBBox) arg1;
+          left_ = visitor.visitLong(
+              hasLeft(), left_,
+              other.hasLeft(), other.left_);
+          right_ = visitor.visitLong(
+              hasRight(), right_,
+              other.hasRight(), other.right_);
+          top_ = visitor.visitLong(
+              hasTop(), top_,
+              other.hasTop(), other.top_);
+          bottom_ = visitor.visitLong(
+              hasBottom(), bottom_,
+              other.hasBottom(), other.bottom_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+            bitField0_ |= other.bitField0_;
+          }
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  bitField0_ |= 0x00000001;
+                  left_ = input.readSInt64();
+                  break;
+                }
+                case 16: {
+                  bitField0_ |= 0x00000002;
+                  right_ = input.readSInt64();
+                  break;
+                }
+                case 24: {
+                  bitField0_ |= 0x00000004;
+                  top_ = input.readSInt64();
+                  break;
+                }
+                case 32: {
+                  bitField0_ |= 0x00000008;
+                  bottom_ = input.readSInt64();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Osmformat.HeaderBBox.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.HeaderBBox)
+    private static final crosby.binary.Osmformat.HeaderBBox DEFAULT_INSTANCE;
     static {
-      defaultInstance = new HeaderBBox(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.HeaderBBox)
+      DEFAULT_INSTANCE = new HeaderBBox();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Osmformat.HeaderBBox getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<HeaderBBox> PARSER;
+
+    public static com.google.protobuf.Parser<HeaderBBox> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
@@ -2372,5 +2218,5 @@
      * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
      */
-    java.util.List<crosby.binary.Osmformat.PrimitiveGroup>
+    java.util.List<crosby.binary.Osmformat.PrimitiveGroup> 
         getPrimitivegroupList();
     /**
@@ -2384,34 +2230,34 @@
 
     /**
+     * <pre>
+     * Granularity, units of nanodegrees, used to store coordinates in this block
+     * </pre>
+     *
      * <code>optional int32 granularity = 17 [default = 100];</code>
-     *
+     */
+    boolean hasGranularity();
+    /**
      * <pre>
      * Granularity, units of nanodegrees, used to store coordinates in this block
      * </pre>
-     */
-    boolean hasGranularity();
-    /**
+     *
      * <code>optional int32 granularity = 17 [default = 100];</code>
-     *
-     * <pre>
-     * Granularity, units of nanodegrees, used to store coordinates in this block
-     * </pre>
      */
     int getGranularity();
 
     /**
+     * <pre>
+     * Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
+     * </pre>
+     *
      * <code>optional int64 lat_offset = 19 [default = 0];</code>
-     *
+     */
+    boolean hasLatOffset();
+    /**
      * <pre>
      * Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
      * </pre>
-     */
-    boolean hasLatOffset();
-    /**
+     *
      * <code>optional int64 lat_offset = 19 [default = 0];</code>
-     *
-     * <pre>
-     * Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
-     * </pre>
      */
     long getLatOffset();
@@ -2427,17 +2273,17 @@
 
     /**
+     * <pre>
+     * Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
+     * </pre>
+     *
      * <code>optional int32 date_granularity = 18 [default = 1000];</code>
-     *
+     */
+    boolean hasDateGranularity();
+    /**
      * <pre>
      * Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
      * </pre>
-     */
-    boolean hasDateGranularity();
-    /**
+     *
      * <code>optional int32 date_granularity = 18 [default = 1000];</code>
-     *
-     * <pre>
-     * Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
-     * </pre>
      */
     int getDateGranularity();
@@ -2446,130 +2292,14 @@
    * Protobuf type {@code OSMPBF.PrimitiveBlock}
    */
-  public static final class PrimitiveBlock extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class PrimitiveBlock extends
+      com.google.protobuf.GeneratedMessageLite<
+          PrimitiveBlock, PrimitiveBlock.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.PrimitiveBlock)
       PrimitiveBlockOrBuilder {
-    // Use PrimitiveBlock.newBuilder() to construct.
-    private PrimitiveBlock(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private PrimitiveBlock(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final PrimitiveBlock defaultInstance;
-    public static PrimitiveBlock getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public PrimitiveBlock getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private PrimitiveBlock(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 10: {
-              crosby.binary.Osmformat.StringTable.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000001) == 0x00000001)) {
-                subBuilder = stringtable_.toBuilder();
-              }
-              stringtable_ = input.readMessage(crosby.binary.Osmformat.StringTable.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(stringtable_);
-                stringtable_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000001;
-              break;
-            }
-            case 18: {
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                primitivegroup_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              primitivegroup_.add(input.readMessage(crosby.binary.Osmformat.PrimitiveGroup.PARSER, extensionRegistry));
-              break;
-            }
-            case 136: {
-              bitField0_ |= 0x00000002;
-              granularity_ = input.readInt32();
-              break;
-            }
-            case 144: {
-              bitField0_ |= 0x00000010;
-              dateGranularity_ = input.readInt32();
-              break;
-            }
-            case 152: {
-              bitField0_ |= 0x00000004;
-              latOffset_ = input.readInt64();
-              break;
-            }
-            case 160: {
-              bitField0_ |= 0x00000008;
-              lonOffset_ = input.readInt64();
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-          primitivegroup_ = java.util.Collections.unmodifiableList(primitivegroup_);
-        }
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<PrimitiveBlock> PARSER =
-        new com.google.protobuf.AbstractParser<PrimitiveBlock>() {
-      @Override
-	public PrimitiveBlock parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new PrimitiveBlock(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<PrimitiveBlock> getParserForType() {
-      return PARSER;
-    }
-
+    private PrimitiveBlock() {
+      primitivegroup_ = emptyProtobufList();
+      granularity_ = 100;
+      dateGranularity_ = 1000;
+    }
     private int bitField0_;
     public static final int STRINGTABLE_FIELD_NUMBER = 1;
@@ -2578,6 +2308,5 @@
      * <code>required .OSMPBF.StringTable stringtable = 1;</code>
      */
-    @Override
-	public boolean hasStringtable() {
+    public boolean hasStringtable() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -2585,16 +2314,51 @@
      * <code>required .OSMPBF.StringTable stringtable = 1;</code>
      */
-    @Override
-	public crosby.binary.Osmformat.StringTable getStringtable() {
-      return stringtable_;
+    public crosby.binary.Osmformat.StringTable getStringtable() {
+      return stringtable_ == null ? crosby.binary.Osmformat.StringTable.getDefaultInstance() : stringtable_;
+    }
+    /**
+     * <code>required .OSMPBF.StringTable stringtable = 1;</code>
+     */
+    private void setStringtable(crosby.binary.Osmformat.StringTable value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      stringtable_ = value;
+      bitField0_ |= 0x00000001;
+      }
+    /**
+     * <code>required .OSMPBF.StringTable stringtable = 1;</code>
+     */
+    private void setStringtable(
+        crosby.binary.Osmformat.StringTable.Builder builderForValue) {
+      stringtable_ = builderForValue.build();
+      bitField0_ |= 0x00000001;
+    }
+    /**
+     * <code>required .OSMPBF.StringTable stringtable = 1;</code>
+     */
+    private void mergeStringtable(crosby.binary.Osmformat.StringTable value) {
+      if (stringtable_ != null &&
+          stringtable_ != crosby.binary.Osmformat.StringTable.getDefaultInstance()) {
+        stringtable_ =
+          crosby.binary.Osmformat.StringTable.newBuilder(stringtable_).mergeFrom(value).buildPartial();
+      } else {
+        stringtable_ = value;
+      }
+      bitField0_ |= 0x00000001;
+    }
+    /**
+     * <code>required .OSMPBF.StringTable stringtable = 1;</code>
+     */
+    private void clearStringtable() {  stringtable_ = null;
+      bitField0_ = (bitField0_ & ~0x00000001);
     }
 
     public static final int PRIMITIVEGROUP_FIELD_NUMBER = 2;
-    private java.util.List<crosby.binary.Osmformat.PrimitiveGroup> primitivegroup_;
+    private com.google.protobuf.Internal.ProtobufList<crosby.binary.Osmformat.PrimitiveGroup> primitivegroup_;
     /**
      * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
      */
-    @Override
-	public java.util.List<crosby.binary.Osmformat.PrimitiveGroup> getPrimitivegroupList() {
+    public java.util.List<crosby.binary.Osmformat.PrimitiveGroup> getPrimitivegroupList() {
       return primitivegroup_;
     }
@@ -2602,5 +2366,5 @@
      * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
      */
-    public java.util.List<? extends crosby.binary.Osmformat.PrimitiveGroupOrBuilder>
+    public java.util.List<? extends crosby.binary.Osmformat.PrimitiveGroupOrBuilder> 
         getPrimitivegroupOrBuilderList() {
       return primitivegroup_;
@@ -2609,6 +2373,5 @@
      * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
      */
-    @Override
-	public int getPrimitivegroupCount() {
+    public int getPrimitivegroupCount() {
       return primitivegroup_.size();
     }
@@ -2616,6 +2379,5 @@
      * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
      */
-    @Override
-	public crosby.binary.Osmformat.PrimitiveGroup getPrimitivegroup(int index) {
+    public crosby.binary.Osmformat.PrimitiveGroup getPrimitivegroup(int index) {
       return primitivegroup_.get(index);
     }
@@ -2627,28 +2389,133 @@
       return primitivegroup_.get(index);
     }
+    private void ensurePrimitivegroupIsMutable() {
+      if (!primitivegroup_.isModifiable()) {
+        primitivegroup_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(primitivegroup_);
+       }
+    }
+
+    /**
+     * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
+     */
+    private void setPrimitivegroup(
+        int index, crosby.binary.Osmformat.PrimitiveGroup value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensurePrimitivegroupIsMutable();
+      primitivegroup_.set(index, value);
+    }
+    /**
+     * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
+     */
+    private void setPrimitivegroup(
+        int index, crosby.binary.Osmformat.PrimitiveGroup.Builder builderForValue) {
+      ensurePrimitivegroupIsMutable();
+      primitivegroup_.set(index, builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
+     */
+    private void addPrimitivegroup(crosby.binary.Osmformat.PrimitiveGroup value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensurePrimitivegroupIsMutable();
+      primitivegroup_.add(value);
+    }
+    /**
+     * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
+     */
+    private void addPrimitivegroup(
+        int index, crosby.binary.Osmformat.PrimitiveGroup value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensurePrimitivegroupIsMutable();
+      primitivegroup_.add(index, value);
+    }
+    /**
+     * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
+     */
+    private void addPrimitivegroup(
+        crosby.binary.Osmformat.PrimitiveGroup.Builder builderForValue) {
+      ensurePrimitivegroupIsMutable();
+      primitivegroup_.add(builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
+     */
+    private void addPrimitivegroup(
+        int index, crosby.binary.Osmformat.PrimitiveGroup.Builder builderForValue) {
+      ensurePrimitivegroupIsMutable();
+      primitivegroup_.add(index, builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
+     */
+    private void addAllPrimitivegroup(
+        java.lang.Iterable<? extends crosby.binary.Osmformat.PrimitiveGroup> values) {
+      ensurePrimitivegroupIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, primitivegroup_);
+    }
+    /**
+     * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
+     */
+    private void clearPrimitivegroup() {
+      primitivegroup_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
+     */
+    private void removePrimitivegroup(int index) {
+      ensurePrimitivegroupIsMutable();
+      primitivegroup_.remove(index);
+    }
 
     public static final int GRANULARITY_FIELD_NUMBER = 17;
     private int granularity_;
     /**
+     * <pre>
+     * Granularity, units of nanodegrees, used to store coordinates in this block
+     * </pre>
+     *
      * <code>optional int32 granularity = 17 [default = 100];</code>
-     *
+     */
+    public boolean hasGranularity() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
      * <pre>
      * Granularity, units of nanodegrees, used to store coordinates in this block
      * </pre>
-     */
-    @Override
-	public boolean hasGranularity() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
+     *
      * <code>optional int32 granularity = 17 [default = 100];</code>
-     *
+     */
+    public int getGranularity() {
+      return granularity_;
+    }
+    /**
      * <pre>
      * Granularity, units of nanodegrees, used to store coordinates in this block
      * </pre>
-     */
-    @Override
-	public int getGranularity() {
-      return granularity_;
+     *
+     * <code>optional int32 granularity = 17 [default = 100];</code>
+     */
+    private void setGranularity(int value) {
+      bitField0_ |= 0x00000002;
+      granularity_ = value;
+    }
+    /**
+     * <pre>
+     * Granularity, units of nanodegrees, used to store coordinates in this block
+     * </pre>
+     *
+     * <code>optional int32 granularity = 17 [default = 100];</code>
+     */
+    private void clearGranularity() {
+      bitField0_ = (bitField0_ & ~0x00000002);
+      granularity_ = 100;
     }
 
@@ -2656,24 +2523,44 @@
     private long latOffset_;
     /**
+     * <pre>
+     * Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
+     * </pre>
+     *
      * <code>optional int64 lat_offset = 19 [default = 0];</code>
-     *
+     */
+    public boolean hasLatOffset() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
      * <pre>
      * Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
      * </pre>
-     */
-    @Override
-	public boolean hasLatOffset() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
+     *
      * <code>optional int64 lat_offset = 19 [default = 0];</code>
-     *
+     */
+    public long getLatOffset() {
+      return latOffset_;
+    }
+    /**
      * <pre>
      * Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
      * </pre>
-     */
-    @Override
-	public long getLatOffset() {
-      return latOffset_;
+     *
+     * <code>optional int64 lat_offset = 19 [default = 0];</code>
+     */
+    private void setLatOffset(long value) {
+      bitField0_ |= 0x00000004;
+      latOffset_ = value;
+    }
+    /**
+     * <pre>
+     * Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
+     * </pre>
+     *
+     * <code>optional int64 lat_offset = 19 [default = 0];</code>
+     */
+    private void clearLatOffset() {
+      bitField0_ = (bitField0_ & ~0x00000004);
+      latOffset_ = 0L;
     }
 
@@ -2683,6 +2570,5 @@
      * <code>optional int64 lon_offset = 20 [default = 0];</code>
      */
-    @Override
-	public boolean hasLonOffset() {
+    public boolean hasLonOffset() {
       return ((bitField0_ & 0x00000008) == 0x00000008);
     }
@@ -2690,7 +2576,20 @@
      * <code>optional int64 lon_offset = 20 [default = 0];</code>
      */
-    @Override
-	public long getLonOffset() {
+    public long getLonOffset() {
       return lonOffset_;
+    }
+    /**
+     * <code>optional int64 lon_offset = 20 [default = 0];</code>
+     */
+    private void setLonOffset(long value) {
+      bitField0_ |= 0x00000008;
+      lonOffset_ = value;
+    }
+    /**
+     * <code>optional int64 lon_offset = 20 [default = 0];</code>
+     */
+    private void clearLonOffset() {
+      bitField0_ = (bitField0_ & ~0x00000008);
+      lonOffset_ = 0L;
     }
 
@@ -2698,61 +2597,50 @@
     private int dateGranularity_;
     /**
+     * <pre>
+     * Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
+     * </pre>
+     *
      * <code>optional int32 date_granularity = 18 [default = 1000];</code>
-     *
+     */
+    public boolean hasDateGranularity() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
      * <pre>
      * Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
      * </pre>
-     */
-    @Override
-	public boolean hasDateGranularity() {
-      return ((bitField0_ & 0x00000010) == 0x00000010);
-    }
-    /**
+     *
      * <code>optional int32 date_granularity = 18 [default = 1000];</code>
-     *
+     */
+    public int getDateGranularity() {
+      return dateGranularity_;
+    }
+    /**
      * <pre>
      * Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
      * </pre>
-     */
-    @Override
-	public int getDateGranularity() {
-      return dateGranularity_;
-    }
-
-    private void initFields() {
-      stringtable_ = crosby.binary.Osmformat.StringTable.getDefaultInstance();
-      primitivegroup_ = java.util.Collections.emptyList();
-      granularity_ = 100;
-      latOffset_ = 0L;
-      lonOffset_ = 0L;
+     *
+     * <code>optional int32 date_granularity = 18 [default = 1000];</code>
+     */
+    private void setDateGranularity(int value) {
+      bitField0_ |= 0x00000010;
+      dateGranularity_ = value;
+    }
+    /**
+     * <pre>
+     * Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
+     * </pre>
+     *
+     * <code>optional int32 date_granularity = 18 [default = 1000];</code>
+     */
+    private void clearDateGranularity() {
+      bitField0_ = (bitField0_ & ~0x00000010);
       dateGranularity_ = 1000;
     }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      if (!hasStringtable()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      for (int i = 0; i < getPrimitivegroupCount(); i++) {
-        if (!getPrimitivegroup(i).isInitialized()) {
-          memoizedIsInitialized = 0;
-          return false;
-        }
-      }
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeMessage(1, stringtable_);
+        output.writeMessage(1, getStringtable());
       }
       for (int i = 0; i < primitivegroup_.size(); i++) {
@@ -2771,10 +2659,8 @@
         output.writeInt64(20, lonOffset_);
       }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -2783,5 +2669,5 @@
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, stringtable_);
+          .computeMessageSize(1, getStringtable());
       }
       for (int i = 0; i < primitivegroup_.size(); i++) {
@@ -2805,20 +2691,27 @@
           .computeInt64Size(20, lonOffset_);
       }
-      size += unknownFields.size();
+      size += unknownFields.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 crosby.binary.Osmformat.PrimitiveBlock parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Osmformat.PrimitiveBlock parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Osmformat.PrimitiveBlock parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.PrimitiveBlock parseFrom(
@@ -2826,9 +2719,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.PrimitiveBlock parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.PrimitiveBlock parseFrom(
@@ -2836,9 +2731,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.PrimitiveBlock parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.PrimitiveBlock parseFrom(
@@ -2846,9 +2743,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.PrimitiveBlock parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.PrimitiveBlock parseDelimitedFrom(
@@ -2856,10 +2754,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.PrimitiveBlock parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.PrimitiveBlock parseFrom(
@@ -2867,15 +2766,14 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Osmformat.PrimitiveBlock prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
 
     /**
@@ -2884,172 +2782,24 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Osmformat.PrimitiveBlock, Builder>
-        implements
+          crosby.binary.Osmformat.PrimitiveBlock, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.PrimitiveBlock)
         crosby.binary.Osmformat.PrimitiveBlockOrBuilder {
       // Construct using crosby.binary.Osmformat.PrimitiveBlock.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        stringtable_ = crosby.binary.Osmformat.StringTable.getDefaultInstance();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        primitivegroup_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000002);
-        granularity_ = 100;
-        bitField0_ = (bitField0_ & ~0x00000004);
-        latOffset_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000008);
-        lonOffset_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000010);
-        dateGranularity_ = 1000;
-        bitField0_ = (bitField0_ & ~0x00000020);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Osmformat.PrimitiveBlock getDefaultInstanceForType() {
-        return crosby.binary.Osmformat.PrimitiveBlock.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Osmformat.PrimitiveBlock build() {
-        crosby.binary.Osmformat.PrimitiveBlock result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Osmformat.PrimitiveBlock buildPartial() {
-        crosby.binary.Osmformat.PrimitiveBlock result = new crosby.binary.Osmformat.PrimitiveBlock(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.stringtable_ = stringtable_;
-        if (((bitField0_ & 0x00000002) == 0x00000002)) {
-          primitivegroup_ = java.util.Collections.unmodifiableList(primitivegroup_);
-          bitField0_ = (bitField0_ & ~0x00000002);
-        }
-        result.primitivegroup_ = primitivegroup_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.granularity_ = granularity_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.latOffset_ = latOffset_;
-        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.lonOffset_ = lonOffset_;
-        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
-          to_bitField0_ |= 0x00000010;
-        }
-        result.dateGranularity_ = dateGranularity_;
-        result.bitField0_ = to_bitField0_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Osmformat.PrimitiveBlock other) {
-        if (other == crosby.binary.Osmformat.PrimitiveBlock.getDefaultInstance()) return this;
-        if (other.hasStringtable()) {
-          mergeStringtable(other.getStringtable());
-        }
-        if (!other.primitivegroup_.isEmpty()) {
-          if (primitivegroup_.isEmpty()) {
-            primitivegroup_ = other.primitivegroup_;
-            bitField0_ = (bitField0_ & ~0x00000002);
-          } else {
-            ensurePrimitivegroupIsMutable();
-            primitivegroup_.addAll(other.primitivegroup_);
-          }
-
-        }
-        if (other.hasGranularity()) {
-          setGranularity(other.getGranularity());
-        }
-        if (other.hasLatOffset()) {
-          setLatOffset(other.getLatOffset());
-        }
-        if (other.hasLonOffset()) {
-          setLonOffset(other.getLonOffset());
-        }
-        if (other.hasDateGranularity()) {
-          setDateGranularity(other.getDateGranularity());
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        if (!hasStringtable()) {
-
-          return false;
-        }
-        for (int i = 0; i < getPrimitivegroupCount(); i++) {
-          if (!getPrimitivegroup(i).isInitialized()) {
-
-            return false;
-          }
-        }
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Osmformat.PrimitiveBlock parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Osmformat.PrimitiveBlock) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private crosby.binary.Osmformat.StringTable stringtable_ = crosby.binary.Osmformat.StringTable.getDefaultInstance();
+        super(DEFAULT_INSTANCE);
+      }
+
+
       /**
        * <code>required .OSMPBF.StringTable stringtable = 1;</code>
        */
-      @Override
-	public boolean hasStringtable() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
+      public boolean hasStringtable() {
+        return instance.hasStringtable();
       }
       /**
        * <code>required .OSMPBF.StringTable stringtable = 1;</code>
        */
-      @Override
-	public crosby.binary.Osmformat.StringTable getStringtable() {
-        return stringtable_;
+      public crosby.binary.Osmformat.StringTable getStringtable() {
+        return instance.getStringtable();
       }
       /**
@@ -3057,12 +2807,8 @@
        */
       public Builder setStringtable(crosby.binary.Osmformat.StringTable value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        stringtable_ = value;
-
-        bitField0_ |= 0x00000001;
-        return this;
-      }
+        copyOnWrite();
+        instance.setStringtable(value);
+        return this;
+        }
       /**
        * <code>required .OSMPBF.StringTable stringtable = 1;</code>
@@ -3070,7 +2816,6 @@
       public Builder setStringtable(
           crosby.binary.Osmformat.StringTable.Builder builderForValue) {
-        stringtable_ = builderForValue.build();
-
-        bitField0_ |= 0x00000001;
+        copyOnWrite();
+        instance.setStringtable(builderForValue);
         return this;
       }
@@ -3079,13 +2824,6 @@
        */
       public Builder mergeStringtable(crosby.binary.Osmformat.StringTable value) {
-        if (((bitField0_ & 0x00000001) == 0x00000001) &&
-            stringtable_ != crosby.binary.Osmformat.StringTable.getDefaultInstance()) {
-          stringtable_ =
-            crosby.binary.Osmformat.StringTable.newBuilder(stringtable_).mergeFrom(value).buildPartial();
-        } else {
-          stringtable_ = value;
-        }
-
-        bitField0_ |= 0x00000001;
+        copyOnWrite();
+        instance.mergeStringtable(value);
         return this;
       }
@@ -3093,18 +2831,7 @@
        * <code>required .OSMPBF.StringTable stringtable = 1;</code>
        */
-      public Builder clearStringtable() {
-        stringtable_ = crosby.binary.Osmformat.StringTable.getDefaultInstance();
-
-        bitField0_ = (bitField0_ & ~0x00000001);
-        return this;
-      }
-
-      private java.util.List<crosby.binary.Osmformat.PrimitiveGroup> primitivegroup_ =
-        java.util.Collections.emptyList();
-      private void ensurePrimitivegroupIsMutable() {
-        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          primitivegroup_ = new java.util.ArrayList<>(primitivegroup_);
-          bitField0_ |= 0x00000002;
-         }
+      public Builder clearStringtable() {  copyOnWrite();
+        instance.clearStringtable();
+        return this;
       }
 
@@ -3112,21 +2839,18 @@
        * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
        */
-      @Override
-	public java.util.List<crosby.binary.Osmformat.PrimitiveGroup> getPrimitivegroupList() {
-        return java.util.Collections.unmodifiableList(primitivegroup_);
+      public java.util.List<crosby.binary.Osmformat.PrimitiveGroup> getPrimitivegroupList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getPrimitivegroupList());
       }
       /**
        * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
        */
-      @Override
-	public int getPrimitivegroupCount() {
-        return primitivegroup_.size();
-      }
-      /**
+      public int getPrimitivegroupCount() {
+        return instance.getPrimitivegroupCount();
+      }/**
        * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
        */
-      @Override
-	public crosby.binary.Osmformat.PrimitiveGroup getPrimitivegroup(int index) {
-        return primitivegroup_.get(index);
+      public crosby.binary.Osmformat.PrimitiveGroup getPrimitivegroup(int index) {
+        return instance.getPrimitivegroup(index);
       }
       /**
@@ -3135,10 +2859,6 @@
       public Builder setPrimitivegroup(
           int index, crosby.binary.Osmformat.PrimitiveGroup value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensurePrimitivegroupIsMutable();
-        primitivegroup_.set(index, value);
-
+        copyOnWrite();
+        instance.setPrimitivegroup(index, value);
         return this;
       }
@@ -3148,7 +2868,6 @@
       public Builder setPrimitivegroup(
           int index, crosby.binary.Osmformat.PrimitiveGroup.Builder builderForValue) {
-        ensurePrimitivegroupIsMutable();
-        primitivegroup_.set(index, builderForValue.build());
-
+        copyOnWrite();
+        instance.setPrimitivegroup(index, builderForValue);
         return this;
       }
@@ -3157,10 +2876,6 @@
        */
       public Builder addPrimitivegroup(crosby.binary.Osmformat.PrimitiveGroup value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensurePrimitivegroupIsMutable();
-        primitivegroup_.add(value);
-
+        copyOnWrite();
+        instance.addPrimitivegroup(value);
         return this;
       }
@@ -3170,10 +2885,6 @@
       public Builder addPrimitivegroup(
           int index, crosby.binary.Osmformat.PrimitiveGroup value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensurePrimitivegroupIsMutable();
-        primitivegroup_.add(index, value);
-
+        copyOnWrite();
+        instance.addPrimitivegroup(index, value);
         return this;
       }
@@ -3183,7 +2894,6 @@
       public Builder addPrimitivegroup(
           crosby.binary.Osmformat.PrimitiveGroup.Builder builderForValue) {
-        ensurePrimitivegroupIsMutable();
-        primitivegroup_.add(builderForValue.build());
-
+        copyOnWrite();
+        instance.addPrimitivegroup(builderForValue);
         return this;
       }
@@ -3193,7 +2903,6 @@
       public Builder addPrimitivegroup(
           int index, crosby.binary.Osmformat.PrimitiveGroup.Builder builderForValue) {
-        ensurePrimitivegroupIsMutable();
-        primitivegroup_.add(index, builderForValue.build());
-
+        copyOnWrite();
+        instance.addPrimitivegroup(index, builderForValue);
         return this;
       }
@@ -3203,8 +2912,6 @@
       public Builder addAllPrimitivegroup(
           java.lang.Iterable<? extends crosby.binary.Osmformat.PrimitiveGroup> values) {
-        ensurePrimitivegroupIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, primitivegroup_);
-
+        copyOnWrite();
+        instance.addAllPrimitivegroup(values);
         return this;
       }
@@ -3213,7 +2920,6 @@
        */
       public Builder clearPrimitivegroup() {
-        primitivegroup_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000002);
-
+        copyOnWrite();
+        instance.clearPrimitivegroup();
         return this;
       }
@@ -3222,124 +2928,110 @@
        */
       public Builder removePrimitivegroup(int index) {
-        ensurePrimitivegroupIsMutable();
-        primitivegroup_.remove(index);
-
-        return this;
-      }
-
-      private int granularity_ = 100;
-      /**
+        copyOnWrite();
+        instance.removePrimitivegroup(index);
+        return this;
+      }
+
+      /**
+       * <pre>
+       * Granularity, units of nanodegrees, used to store coordinates in this block
+       * </pre>
+       *
        * <code>optional int32 granularity = 17 [default = 100];</code>
-       *
+       */
+      public boolean hasGranularity() {
+        return instance.hasGranularity();
+      }
+      /**
        * <pre>
        * Granularity, units of nanodegrees, used to store coordinates in this block
        * </pre>
-       */
-      @Override
-	public boolean hasGranularity() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
+       *
        * <code>optional int32 granularity = 17 [default = 100];</code>
-       *
+       */
+      public int getGranularity() {
+        return instance.getGranularity();
+      }
+      /**
        * <pre>
        * Granularity, units of nanodegrees, used to store coordinates in this block
        * </pre>
-       */
-      @Override
-	public int getGranularity() {
-        return granularity_;
-      }
-      /**
+       *
        * <code>optional int32 granularity = 17 [default = 100];</code>
-       *
+       */
+      public Builder setGranularity(int value) {
+        copyOnWrite();
+        instance.setGranularity(value);
+        return this;
+      }
+      /**
        * <pre>
        * Granularity, units of nanodegrees, used to store coordinates in this block
        * </pre>
-       */
-      public Builder setGranularity(int value) {
-        bitField0_ |= 0x00000004;
-        granularity_ = value;
-
-        return this;
-      }
-      /**
+       *
        * <code>optional int32 granularity = 17 [default = 100];</code>
-       *
-       * <pre>
-       * Granularity, units of nanodegrees, used to store coordinates in this block
-       * </pre>
        */
       public Builder clearGranularity() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        granularity_ = 100;
-
-        return this;
-      }
-
-      private long latOffset_ ;
-      /**
+        copyOnWrite();
+        instance.clearGranularity();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
+       * </pre>
+       *
        * <code>optional int64 lat_offset = 19 [default = 0];</code>
-       *
+       */
+      public boolean hasLatOffset() {
+        return instance.hasLatOffset();
+      }
+      /**
        * <pre>
        * Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
        * </pre>
-       */
-      @Override
-	public boolean hasLatOffset() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
+       *
        * <code>optional int64 lat_offset = 19 [default = 0];</code>
-       *
+       */
+      public long getLatOffset() {
+        return instance.getLatOffset();
+      }
+      /**
        * <pre>
        * Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
        * </pre>
-       */
-      @Override
-	public long getLatOffset() {
-        return latOffset_;
-      }
-      /**
+       *
        * <code>optional int64 lat_offset = 19 [default = 0];</code>
-       *
+       */
+      public Builder setLatOffset(long value) {
+        copyOnWrite();
+        instance.setLatOffset(value);
+        return this;
+      }
+      /**
        * <pre>
        * Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
        * </pre>
-       */
-      public Builder setLatOffset(long value) {
-        bitField0_ |= 0x00000008;
-        latOffset_ = value;
-
-        return this;
-      }
-      /**
+       *
        * <code>optional int64 lat_offset = 19 [default = 0];</code>
-       *
-       * <pre>
-       * Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
-       * </pre>
        */
       public Builder clearLatOffset() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        latOffset_ = 0L;
-
-        return this;
-      }
-
-      private long lonOffset_ ;
+        copyOnWrite();
+        instance.clearLatOffset();
+        return this;
+      }
+
       /**
        * <code>optional int64 lon_offset = 20 [default = 0];</code>
        */
-      @Override
-	public boolean hasLonOffset() {
-        return ((bitField0_ & 0x00000010) == 0x00000010);
+      public boolean hasLonOffset() {
+        return instance.hasLonOffset();
       }
       /**
        * <code>optional int64 lon_offset = 20 [default = 0];</code>
        */
-      @Override
-	public long getLonOffset() {
-        return lonOffset_;
+      public long getLonOffset() {
+        return instance.getLonOffset();
       }
       /**
@@ -3347,7 +3039,6 @@
        */
       public Builder setLonOffset(long value) {
-        bitField0_ |= 0x00000010;
-        lonOffset_ = value;
-
+        copyOnWrite();
+        instance.setLonOffset(value);
         return this;
       }
@@ -3356,57 +3047,51 @@
        */
       public Builder clearLonOffset() {
-        bitField0_ = (bitField0_ & ~0x00000010);
-        lonOffset_ = 0L;
-
-        return this;
-      }
-
-      private int dateGranularity_ = 1000;
-      /**
+        copyOnWrite();
+        instance.clearLonOffset();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
+       * </pre>
+       *
        * <code>optional int32 date_granularity = 18 [default = 1000];</code>
-       *
+       */
+      public boolean hasDateGranularity() {
+        return instance.hasDateGranularity();
+      }
+      /**
        * <pre>
        * Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
        * </pre>
-       */
-      @Override
-	public boolean hasDateGranularity() {
-        return ((bitField0_ & 0x00000020) == 0x00000020);
-      }
-      /**
+       *
        * <code>optional int32 date_granularity = 18 [default = 1000];</code>
-       *
+       */
+      public int getDateGranularity() {
+        return instance.getDateGranularity();
+      }
+      /**
        * <pre>
        * Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
        * </pre>
-       */
-      @Override
-	public int getDateGranularity() {
-        return dateGranularity_;
-      }
-      /**
+       *
        * <code>optional int32 date_granularity = 18 [default = 1000];</code>
-       *
+       */
+      public Builder setDateGranularity(int value) {
+        copyOnWrite();
+        instance.setDateGranularity(value);
+        return this;
+      }
+      /**
        * <pre>
        * Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
        * </pre>
-       */
-      public Builder setDateGranularity(int value) {
-        bitField0_ |= 0x00000020;
-        dateGranularity_ = value;
-
-        return this;
-      }
-      /**
+       *
        * <code>optional int32 date_granularity = 18 [default = 1000];</code>
-       *
-       * <pre>
-       * Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
-       * </pre>
        */
       public Builder clearDateGranularity() {
-        bitField0_ = (bitField0_ & ~0x00000020);
-        dateGranularity_ = 1000;
-
+        copyOnWrite();
+        instance.clearDateGranularity();
         return this;
       }
@@ -3414,11 +3099,173 @@
       // @@protoc_insertion_point(builder_scope:OSMPBF.PrimitiveBlock)
     }
-
+    private byte memoizedIsInitialized = -1;
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Osmformat.PrimitiveBlock();
+        }
+        case IS_INITIALIZED: {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized == 1) return DEFAULT_INSTANCE;
+          if (isInitialized == 0) return null;
+
+          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
+          if (!hasStringtable()) {
+            if (shouldMemoize) {
+              memoizedIsInitialized = 0;
+            }
+            return null;
+          }
+          for (int i = 0; i < getPrimitivegroupCount(); i++) {
+            if (!getPrimitivegroup(i).isInitialized()) {
+              if (shouldMemoize) {
+                memoizedIsInitialized = 0;
+              }
+              return null;
+            }
+          }
+          if (shouldMemoize) memoizedIsInitialized = 1;
+          return DEFAULT_INSTANCE;
+
+        }
+        case MAKE_IMMUTABLE: {
+          primitivegroup_.makeImmutable();
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Osmformat.PrimitiveBlock other = (crosby.binary.Osmformat.PrimitiveBlock) arg1;
+          stringtable_ = visitor.visitMessage(stringtable_, other.stringtable_);
+          primitivegroup_= visitor.visitList(primitivegroup_, other.primitivegroup_);
+          granularity_ = visitor.visitInt(
+              hasGranularity(), granularity_,
+              other.hasGranularity(), other.granularity_);
+          latOffset_ = visitor.visitLong(
+              hasLatOffset(), latOffset_,
+              other.hasLatOffset(), other.latOffset_);
+          lonOffset_ = visitor.visitLong(
+              hasLonOffset(), lonOffset_,
+              other.hasLonOffset(), other.lonOffset_);
+          dateGranularity_ = visitor.visitInt(
+              hasDateGranularity(), dateGranularity_,
+              other.hasDateGranularity(), other.dateGranularity_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+            bitField0_ |= other.bitField0_;
+          }
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  crosby.binary.Osmformat.StringTable.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                    subBuilder = stringtable_.toBuilder();
+                  }
+                  stringtable_ = input.readMessage(crosby.binary.Osmformat.StringTable.parser(), extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(stringtable_);
+                    stringtable_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000001;
+                  break;
+                }
+                case 18: {
+                  if (!primitivegroup_.isModifiable()) {
+                    primitivegroup_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(primitivegroup_);
+                  }
+                  primitivegroup_.add(
+                      input.readMessage(crosby.binary.Osmformat.PrimitiveGroup.parser(), extensionRegistry));
+                  break;
+                }
+                case 136: {
+                  bitField0_ |= 0x00000002;
+                  granularity_ = input.readInt32();
+                  break;
+                }
+                case 144: {
+                  bitField0_ |= 0x00000010;
+                  dateGranularity_ = input.readInt32();
+                  break;
+                }
+                case 152: {
+                  bitField0_ |= 0x00000004;
+                  latOffset_ = input.readInt64();
+                  break;
+                }
+                case 160: {
+                  bitField0_ |= 0x00000008;
+                  lonOffset_ = input.readInt64();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Osmformat.PrimitiveBlock.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.PrimitiveBlock)
+    private static final crosby.binary.Osmformat.PrimitiveBlock DEFAULT_INSTANCE;
     static {
-      defaultInstance = new PrimitiveBlock(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.PrimitiveBlock)
+      DEFAULT_INSTANCE = new PrimitiveBlock();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Osmformat.PrimitiveBlock getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<PrimitiveBlock> PARSER;
+
+    public static com.google.protobuf.Parser<PrimitiveBlock> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
@@ -3430,5 +3277,5 @@
      * <code>repeated .OSMPBF.Node nodes = 1;</code>
      */
-    java.util.List<crosby.binary.Osmformat.Node>
+    java.util.List<crosby.binary.Osmformat.Node> 
         getNodesList();
     /**
@@ -3453,5 +3300,5 @@
      * <code>repeated .OSMPBF.Way ways = 3;</code>
      */
-    java.util.List<crosby.binary.Osmformat.Way>
+    java.util.List<crosby.binary.Osmformat.Way> 
         getWaysList();
     /**
@@ -3467,5 +3314,5 @@
      * <code>repeated .OSMPBF.Relation relations = 4;</code>
      */
-    java.util.List<crosby.binary.Osmformat.Relation>
+    java.util.List<crosby.binary.Osmformat.Relation> 
         getRelationsList();
     /**
@@ -3481,5 +3328,5 @@
      * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
      */
-    java.util.List<crosby.binary.Osmformat.ChangeSet>
+    java.util.List<crosby.binary.Osmformat.ChangeSet> 
         getChangesetsList();
     /**
@@ -3493,157 +3340,28 @@
   }
   /**
-   * Protobuf type {@code OSMPBF.PrimitiveGroup}
-   *
    * <pre>
    * Group of OSMPrimitives. All primitives in a group must be the same type.
    * </pre>
+   *
+   * Protobuf type {@code OSMPBF.PrimitiveGroup}
    */
-  public static final class PrimitiveGroup extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class PrimitiveGroup extends
+      com.google.protobuf.GeneratedMessageLite<
+          PrimitiveGroup, PrimitiveGroup.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.PrimitiveGroup)
       PrimitiveGroupOrBuilder {
-    // Use PrimitiveGroup.newBuilder() to construct.
-    private PrimitiveGroup(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private PrimitiveGroup(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final PrimitiveGroup defaultInstance;
-    public static PrimitiveGroup getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public PrimitiveGroup getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private PrimitiveGroup(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-                nodes_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              nodes_.add(input.readMessage(crosby.binary.Osmformat.Node.PARSER, extensionRegistry));
-              break;
-            }
-            case 18: {
-              crosby.binary.Osmformat.DenseNodes.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000001) == 0x00000001)) {
-                subBuilder = dense_.toBuilder();
-              }
-              dense_ = input.readMessage(crosby.binary.Osmformat.DenseNodes.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(dense_);
-                dense_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000001;
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-                ways_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              ways_.add(input.readMessage(crosby.binary.Osmformat.Way.PARSER, extensionRegistry));
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
-                relations_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000008;
-              }
-              relations_.add(input.readMessage(crosby.binary.Osmformat.Relation.PARSER, extensionRegistry));
-              break;
-            }
-            case 42: {
-              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-                changesets_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000010;
-              }
-              changesets_.add(input.readMessage(crosby.binary.Osmformat.ChangeSet.PARSER, extensionRegistry));
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-          nodes_ = java.util.Collections.unmodifiableList(nodes_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-          ways_ = java.util.Collections.unmodifiableList(ways_);
-        }
-        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
-          relations_ = java.util.Collections.unmodifiableList(relations_);
-        }
-        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-          changesets_ = java.util.Collections.unmodifiableList(changesets_);
-        }
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<PrimitiveGroup> PARSER =
-        new com.google.protobuf.AbstractParser<PrimitiveGroup>() {
-      @Override
-	public PrimitiveGroup parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new PrimitiveGroup(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<PrimitiveGroup> getParserForType() {
-      return PARSER;
-    }
-
+    private PrimitiveGroup() {
+      nodes_ = emptyProtobufList();
+      ways_ = emptyProtobufList();
+      relations_ = emptyProtobufList();
+      changesets_ = emptyProtobufList();
+    }
     private int bitField0_;
     public static final int NODES_FIELD_NUMBER = 1;
-    private java.util.List<crosby.binary.Osmformat.Node> nodes_;
+    private com.google.protobuf.Internal.ProtobufList<crosby.binary.Osmformat.Node> nodes_;
     /**
      * <code>repeated .OSMPBF.Node nodes = 1;</code>
      */
-    @Override
-	public java.util.List<crosby.binary.Osmformat.Node> getNodesList() {
+    public java.util.List<crosby.binary.Osmformat.Node> getNodesList() {
       return nodes_;
     }
@@ -3651,5 +3369,5 @@
      * <code>repeated .OSMPBF.Node nodes = 1;</code>
      */
-    public java.util.List<? extends crosby.binary.Osmformat.NodeOrBuilder>
+    public java.util.List<? extends crosby.binary.Osmformat.NodeOrBuilder> 
         getNodesOrBuilderList() {
       return nodes_;
@@ -3658,6 +3376,5 @@
      * <code>repeated .OSMPBF.Node nodes = 1;</code>
      */
-    @Override
-	public int getNodesCount() {
+    public int getNodesCount() {
       return nodes_.size();
     }
@@ -3665,6 +3382,5 @@
      * <code>repeated .OSMPBF.Node nodes = 1;</code>
      */
-    @Override
-	public crosby.binary.Osmformat.Node getNodes(int index) {
+    public crosby.binary.Osmformat.Node getNodes(int index) {
       return nodes_.get(index);
     }
@@ -3676,4 +3392,89 @@
       return nodes_.get(index);
     }
+    private void ensureNodesIsMutable() {
+      if (!nodes_.isModifiable()) {
+        nodes_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(nodes_);
+       }
+    }
+
+    /**
+     * <code>repeated .OSMPBF.Node nodes = 1;</code>
+     */
+    private void setNodes(
+        int index, crosby.binary.Osmformat.Node value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureNodesIsMutable();
+      nodes_.set(index, value);
+    }
+    /**
+     * <code>repeated .OSMPBF.Node nodes = 1;</code>
+     */
+    private void setNodes(
+        int index, crosby.binary.Osmformat.Node.Builder builderForValue) {
+      ensureNodesIsMutable();
+      nodes_.set(index, builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.Node nodes = 1;</code>
+     */
+    private void addNodes(crosby.binary.Osmformat.Node value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureNodesIsMutable();
+      nodes_.add(value);
+    }
+    /**
+     * <code>repeated .OSMPBF.Node nodes = 1;</code>
+     */
+    private void addNodes(
+        int index, crosby.binary.Osmformat.Node value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureNodesIsMutable();
+      nodes_.add(index, value);
+    }
+    /**
+     * <code>repeated .OSMPBF.Node nodes = 1;</code>
+     */
+    private void addNodes(
+        crosby.binary.Osmformat.Node.Builder builderForValue) {
+      ensureNodesIsMutable();
+      nodes_.add(builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.Node nodes = 1;</code>
+     */
+    private void addNodes(
+        int index, crosby.binary.Osmformat.Node.Builder builderForValue) {
+      ensureNodesIsMutable();
+      nodes_.add(index, builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.Node nodes = 1;</code>
+     */
+    private void addAllNodes(
+        java.lang.Iterable<? extends crosby.binary.Osmformat.Node> values) {
+      ensureNodesIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, nodes_);
+    }
+    /**
+     * <code>repeated .OSMPBF.Node nodes = 1;</code>
+     */
+    private void clearNodes() {
+      nodes_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .OSMPBF.Node nodes = 1;</code>
+     */
+    private void removeNodes(int index) {
+      ensureNodesIsMutable();
+      nodes_.remove(index);
+    }
 
     public static final int DENSE_FIELD_NUMBER = 2;
@@ -3682,6 +3483,5 @@
      * <code>optional .OSMPBF.DenseNodes dense = 2;</code>
      */
-    @Override
-	public boolean hasDense() {
+    public boolean hasDense() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -3689,16 +3489,51 @@
      * <code>optional .OSMPBF.DenseNodes dense = 2;</code>
      */
-    @Override
-	public crosby.binary.Osmformat.DenseNodes getDense() {
-      return dense_;
+    public crosby.binary.Osmformat.DenseNodes getDense() {
+      return dense_ == null ? crosby.binary.Osmformat.DenseNodes.getDefaultInstance() : dense_;
+    }
+    /**
+     * <code>optional .OSMPBF.DenseNodes dense = 2;</code>
+     */
+    private void setDense(crosby.binary.Osmformat.DenseNodes value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      dense_ = value;
+      bitField0_ |= 0x00000001;
+      }
+    /**
+     * <code>optional .OSMPBF.DenseNodes dense = 2;</code>
+     */
+    private void setDense(
+        crosby.binary.Osmformat.DenseNodes.Builder builderForValue) {
+      dense_ = builderForValue.build();
+      bitField0_ |= 0x00000001;
+    }
+    /**
+     * <code>optional .OSMPBF.DenseNodes dense = 2;</code>
+     */
+    private void mergeDense(crosby.binary.Osmformat.DenseNodes value) {
+      if (dense_ != null &&
+          dense_ != crosby.binary.Osmformat.DenseNodes.getDefaultInstance()) {
+        dense_ =
+          crosby.binary.Osmformat.DenseNodes.newBuilder(dense_).mergeFrom(value).buildPartial();
+      } else {
+        dense_ = value;
+      }
+      bitField0_ |= 0x00000001;
+    }
+    /**
+     * <code>optional .OSMPBF.DenseNodes dense = 2;</code>
+     */
+    private void clearDense() {  dense_ = null;
+      bitField0_ = (bitField0_ & ~0x00000001);
     }
 
     public static final int WAYS_FIELD_NUMBER = 3;
-    private java.util.List<crosby.binary.Osmformat.Way> ways_;
+    private com.google.protobuf.Internal.ProtobufList<crosby.binary.Osmformat.Way> ways_;
     /**
      * <code>repeated .OSMPBF.Way ways = 3;</code>
      */
-    @Override
-	public java.util.List<crosby.binary.Osmformat.Way> getWaysList() {
+    public java.util.List<crosby.binary.Osmformat.Way> getWaysList() {
       return ways_;
     }
@@ -3706,5 +3541,5 @@
      * <code>repeated .OSMPBF.Way ways = 3;</code>
      */
-    public java.util.List<? extends crosby.binary.Osmformat.WayOrBuilder>
+    public java.util.List<? extends crosby.binary.Osmformat.WayOrBuilder> 
         getWaysOrBuilderList() {
       return ways_;
@@ -3713,6 +3548,5 @@
      * <code>repeated .OSMPBF.Way ways = 3;</code>
      */
-    @Override
-	public int getWaysCount() {
+    public int getWaysCount() {
       return ways_.size();
     }
@@ -3720,6 +3554,5 @@
      * <code>repeated .OSMPBF.Way ways = 3;</code>
      */
-    @Override
-	public crosby.binary.Osmformat.Way getWays(int index) {
+    public crosby.binary.Osmformat.Way getWays(int index) {
       return ways_.get(index);
     }
@@ -3731,12 +3564,96 @@
       return ways_.get(index);
     }
+    private void ensureWaysIsMutable() {
+      if (!ways_.isModifiable()) {
+        ways_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(ways_);
+       }
+    }
+
+    /**
+     * <code>repeated .OSMPBF.Way ways = 3;</code>
+     */
+    private void setWays(
+        int index, crosby.binary.Osmformat.Way value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureWaysIsMutable();
+      ways_.set(index, value);
+    }
+    /**
+     * <code>repeated .OSMPBF.Way ways = 3;</code>
+     */
+    private void setWays(
+        int index, crosby.binary.Osmformat.Way.Builder builderForValue) {
+      ensureWaysIsMutable();
+      ways_.set(index, builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.Way ways = 3;</code>
+     */
+    private void addWays(crosby.binary.Osmformat.Way value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureWaysIsMutable();
+      ways_.add(value);
+    }
+    /**
+     * <code>repeated .OSMPBF.Way ways = 3;</code>
+     */
+    private void addWays(
+        int index, crosby.binary.Osmformat.Way value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureWaysIsMutable();
+      ways_.add(index, value);
+    }
+    /**
+     * <code>repeated .OSMPBF.Way ways = 3;</code>
+     */
+    private void addWays(
+        crosby.binary.Osmformat.Way.Builder builderForValue) {
+      ensureWaysIsMutable();
+      ways_.add(builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.Way ways = 3;</code>
+     */
+    private void addWays(
+        int index, crosby.binary.Osmformat.Way.Builder builderForValue) {
+      ensureWaysIsMutable();
+      ways_.add(index, builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.Way ways = 3;</code>
+     */
+    private void addAllWays(
+        java.lang.Iterable<? extends crosby.binary.Osmformat.Way> values) {
+      ensureWaysIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, ways_);
+    }
+    /**
+     * <code>repeated .OSMPBF.Way ways = 3;</code>
+     */
+    private void clearWays() {
+      ways_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .OSMPBF.Way ways = 3;</code>
+     */
+    private void removeWays(int index) {
+      ensureWaysIsMutable();
+      ways_.remove(index);
+    }
 
     public static final int RELATIONS_FIELD_NUMBER = 4;
-    private java.util.List<crosby.binary.Osmformat.Relation> relations_;
+    private com.google.protobuf.Internal.ProtobufList<crosby.binary.Osmformat.Relation> relations_;
     /**
      * <code>repeated .OSMPBF.Relation relations = 4;</code>
      */
-    @Override
-	public java.util.List<crosby.binary.Osmformat.Relation> getRelationsList() {
+    public java.util.List<crosby.binary.Osmformat.Relation> getRelationsList() {
       return relations_;
     }
@@ -3744,5 +3661,5 @@
      * <code>repeated .OSMPBF.Relation relations = 4;</code>
      */
-    public java.util.List<? extends crosby.binary.Osmformat.RelationOrBuilder>
+    public java.util.List<? extends crosby.binary.Osmformat.RelationOrBuilder> 
         getRelationsOrBuilderList() {
       return relations_;
@@ -3751,6 +3668,5 @@
      * <code>repeated .OSMPBF.Relation relations = 4;</code>
      */
-    @Override
-	public int getRelationsCount() {
+    public int getRelationsCount() {
       return relations_.size();
     }
@@ -3758,6 +3674,5 @@
      * <code>repeated .OSMPBF.Relation relations = 4;</code>
      */
-    @Override
-	public crosby.binary.Osmformat.Relation getRelations(int index) {
+    public crosby.binary.Osmformat.Relation getRelations(int index) {
       return relations_.get(index);
     }
@@ -3769,12 +3684,96 @@
       return relations_.get(index);
     }
+    private void ensureRelationsIsMutable() {
+      if (!relations_.isModifiable()) {
+        relations_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(relations_);
+       }
+    }
+
+    /**
+     * <code>repeated .OSMPBF.Relation relations = 4;</code>
+     */
+    private void setRelations(
+        int index, crosby.binary.Osmformat.Relation value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureRelationsIsMutable();
+      relations_.set(index, value);
+    }
+    /**
+     * <code>repeated .OSMPBF.Relation relations = 4;</code>
+     */
+    private void setRelations(
+        int index, crosby.binary.Osmformat.Relation.Builder builderForValue) {
+      ensureRelationsIsMutable();
+      relations_.set(index, builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.Relation relations = 4;</code>
+     */
+    private void addRelations(crosby.binary.Osmformat.Relation value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureRelationsIsMutable();
+      relations_.add(value);
+    }
+    /**
+     * <code>repeated .OSMPBF.Relation relations = 4;</code>
+     */
+    private void addRelations(
+        int index, crosby.binary.Osmformat.Relation value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureRelationsIsMutable();
+      relations_.add(index, value);
+    }
+    /**
+     * <code>repeated .OSMPBF.Relation relations = 4;</code>
+     */
+    private void addRelations(
+        crosby.binary.Osmformat.Relation.Builder builderForValue) {
+      ensureRelationsIsMutable();
+      relations_.add(builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.Relation relations = 4;</code>
+     */
+    private void addRelations(
+        int index, crosby.binary.Osmformat.Relation.Builder builderForValue) {
+      ensureRelationsIsMutable();
+      relations_.add(index, builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.Relation relations = 4;</code>
+     */
+    private void addAllRelations(
+        java.lang.Iterable<? extends crosby.binary.Osmformat.Relation> values) {
+      ensureRelationsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, relations_);
+    }
+    /**
+     * <code>repeated .OSMPBF.Relation relations = 4;</code>
+     */
+    private void clearRelations() {
+      relations_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .OSMPBF.Relation relations = 4;</code>
+     */
+    private void removeRelations(int index) {
+      ensureRelationsIsMutable();
+      relations_.remove(index);
+    }
 
     public static final int CHANGESETS_FIELD_NUMBER = 5;
-    private java.util.List<crosby.binary.Osmformat.ChangeSet> changesets_;
+    private com.google.protobuf.Internal.ProtobufList<crosby.binary.Osmformat.ChangeSet> changesets_;
     /**
      * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
      */
-    @Override
-	public java.util.List<crosby.binary.Osmformat.ChangeSet> getChangesetsList() {
+    public java.util.List<crosby.binary.Osmformat.ChangeSet> getChangesetsList() {
       return changesets_;
     }
@@ -3782,5 +3781,5 @@
      * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
      */
-    public java.util.List<? extends crosby.binary.Osmformat.ChangeSetOrBuilder>
+    public java.util.List<? extends crosby.binary.Osmformat.ChangeSetOrBuilder> 
         getChangesetsOrBuilderList() {
       return changesets_;
@@ -3789,6 +3788,5 @@
      * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
      */
-    @Override
-	public int getChangesetsCount() {
+    public int getChangesetsCount() {
       return changesets_.size();
     }
@@ -3796,6 +3794,5 @@
      * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
      */
-    @Override
-	public crosby.binary.Osmformat.ChangeSet getChangesets(int index) {
+    public crosby.binary.Osmformat.ChangeSet getChangesets(int index) {
       return changesets_.get(index);
     }
@@ -3807,56 +3804,97 @@
       return changesets_.get(index);
     }
-
-    private void initFields() {
-      nodes_ = java.util.Collections.emptyList();
-      dense_ = crosby.binary.Osmformat.DenseNodes.getDefaultInstance();
-      ways_ = java.util.Collections.emptyList();
-      relations_ = java.util.Collections.emptyList();
-      changesets_ = java.util.Collections.emptyList();
-    }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      for (int i = 0; i < getNodesCount(); i++) {
-        if (!getNodes(i).isInitialized()) {
-          memoizedIsInitialized = 0;
-          return false;
-        }
-      }
-      for (int i = 0; i < getWaysCount(); i++) {
-        if (!getWays(i).isInitialized()) {
-          memoizedIsInitialized = 0;
-          return false;
-        }
-      }
-      for (int i = 0; i < getRelationsCount(); i++) {
-        if (!getRelations(i).isInitialized()) {
-          memoizedIsInitialized = 0;
-          return false;
-        }
-      }
-      for (int i = 0; i < getChangesetsCount(); i++) {
-        if (!getChangesets(i).isInitialized()) {
-          memoizedIsInitialized = 0;
-          return false;
-        }
-      }
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    private void ensureChangesetsIsMutable() {
+      if (!changesets_.isModifiable()) {
+        changesets_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(changesets_);
+       }
+    }
+
+    /**
+     * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
+     */
+    private void setChangesets(
+        int index, crosby.binary.Osmformat.ChangeSet value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureChangesetsIsMutable();
+      changesets_.set(index, value);
+    }
+    /**
+     * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
+     */
+    private void setChangesets(
+        int index, crosby.binary.Osmformat.ChangeSet.Builder builderForValue) {
+      ensureChangesetsIsMutable();
+      changesets_.set(index, builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
+     */
+    private void addChangesets(crosby.binary.Osmformat.ChangeSet value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureChangesetsIsMutable();
+      changesets_.add(value);
+    }
+    /**
+     * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
+     */
+    private void addChangesets(
+        int index, crosby.binary.Osmformat.ChangeSet value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureChangesetsIsMutable();
+      changesets_.add(index, value);
+    }
+    /**
+     * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
+     */
+    private void addChangesets(
+        crosby.binary.Osmformat.ChangeSet.Builder builderForValue) {
+      ensureChangesetsIsMutable();
+      changesets_.add(builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
+     */
+    private void addChangesets(
+        int index, crosby.binary.Osmformat.ChangeSet.Builder builderForValue) {
+      ensureChangesetsIsMutable();
+      changesets_.add(index, builderForValue.build());
+    }
+    /**
+     * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
+     */
+    private void addAllChangesets(
+        java.lang.Iterable<? extends crosby.binary.Osmformat.ChangeSet> values) {
+      ensureChangesetsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, changesets_);
+    }
+    /**
+     * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
+     */
+    private void clearChangesets() {
+      changesets_ = emptyProtobufList();
+    }
+    /**
+     * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
+     */
+    private void removeChangesets(int index) {
+      ensureChangesetsIsMutable();
+      changesets_.remove(index);
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       for (int i = 0; i < nodes_.size(); i++) {
         output.writeMessage(1, nodes_.get(i));
       }
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeMessage(2, dense_);
+        output.writeMessage(2, getDense());
       }
       for (int i = 0; i < ways_.size(); i++) {
@@ -3869,10 +3907,8 @@
         output.writeMessage(5, changesets_.get(i));
       }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -3885,5 +3921,5 @@
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, dense_);
+          .computeMessageSize(2, getDense());
       }
       for (int i = 0; i < ways_.size(); i++) {
@@ -3899,20 +3935,27 @@
           .computeMessageSize(5, changesets_.get(i));
       }
-      size += unknownFields.size();
+      size += unknownFields.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 crosby.binary.Osmformat.PrimitiveGroup parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Osmformat.PrimitiveGroup parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Osmformat.PrimitiveGroup parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.PrimitiveGroup parseFrom(
@@ -3920,9 +3963,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.PrimitiveGroup parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.PrimitiveGroup parseFrom(
@@ -3930,9 +3975,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.PrimitiveGroup parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.PrimitiveGroup parseFrom(
@@ -3940,9 +3987,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.PrimitiveGroup parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.PrimitiveGroup parseDelimitedFrom(
@@ -3950,10 +3998,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.PrimitiveGroup parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.PrimitiveGroup parseFrom(
@@ -3961,237 +4010,50 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Osmformat.PrimitiveGroup prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
-
-    /**
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+
+    /**
+     * <pre>
+     * Group of OSMPrimitives. All primitives in a group must be the same type.
+     * </pre>
+     *
      * Protobuf type {@code OSMPBF.PrimitiveGroup}
-     *
-     * <pre>
-     * Group of OSMPrimitives. All primitives in a group must be the same type.
-     * </pre>
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Osmformat.PrimitiveGroup, Builder>
-        implements
+          crosby.binary.Osmformat.PrimitiveGroup, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.PrimitiveGroup)
         crosby.binary.Osmformat.PrimitiveGroupOrBuilder {
       // Construct using crosby.binary.Osmformat.PrimitiveGroup.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        nodes_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        dense_ = crosby.binary.Osmformat.DenseNodes.getDefaultInstance();
-        bitField0_ = (bitField0_ & ~0x00000002);
-        ways_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000004);
-        relations_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000008);
-        changesets_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000010);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Osmformat.PrimitiveGroup getDefaultInstanceForType() {
-        return crosby.binary.Osmformat.PrimitiveGroup.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Osmformat.PrimitiveGroup build() {
-        crosby.binary.Osmformat.PrimitiveGroup result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Osmformat.PrimitiveGroup buildPartial() {
-        crosby.binary.Osmformat.PrimitiveGroup result = new crosby.binary.Osmformat.PrimitiveGroup(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((bitField0_ & 0x00000001) == 0x00000001)) {
-          nodes_ = java.util.Collections.unmodifiableList(nodes_);
-          bitField0_ = (bitField0_ & ~0x00000001);
-        }
-        result.nodes_ = nodes_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.dense_ = dense_;
-        if (((bitField0_ & 0x00000004) == 0x00000004)) {
-          ways_ = java.util.Collections.unmodifiableList(ways_);
-          bitField0_ = (bitField0_ & ~0x00000004);
-        }
-        result.ways_ = ways_;
-        if (((bitField0_ & 0x00000008) == 0x00000008)) {
-          relations_ = java.util.Collections.unmodifiableList(relations_);
-          bitField0_ = (bitField0_ & ~0x00000008);
-        }
-        result.relations_ = relations_;
-        if (((bitField0_ & 0x00000010) == 0x00000010)) {
-          changesets_ = java.util.Collections.unmodifiableList(changesets_);
-          bitField0_ = (bitField0_ & ~0x00000010);
-        }
-        result.changesets_ = changesets_;
-        result.bitField0_ = to_bitField0_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Osmformat.PrimitiveGroup other) {
-        if (other == crosby.binary.Osmformat.PrimitiveGroup.getDefaultInstance()) return this;
-        if (!other.nodes_.isEmpty()) {
-          if (nodes_.isEmpty()) {
-            nodes_ = other.nodes_;
-            bitField0_ = (bitField0_ & ~0x00000001);
-          } else {
-            ensureNodesIsMutable();
-            nodes_.addAll(other.nodes_);
-          }
-
-        }
-        if (other.hasDense()) {
-          mergeDense(other.getDense());
-        }
-        if (!other.ways_.isEmpty()) {
-          if (ways_.isEmpty()) {
-            ways_ = other.ways_;
-            bitField0_ = (bitField0_ & ~0x00000004);
-          } else {
-            ensureWaysIsMutable();
-            ways_.addAll(other.ways_);
-          }
-
-        }
-        if (!other.relations_.isEmpty()) {
-          if (relations_.isEmpty()) {
-            relations_ = other.relations_;
-            bitField0_ = (bitField0_ & ~0x00000008);
-          } else {
-            ensureRelationsIsMutable();
-            relations_.addAll(other.relations_);
-          }
-
-        }
-        if (!other.changesets_.isEmpty()) {
-          if (changesets_.isEmpty()) {
-            changesets_ = other.changesets_;
-            bitField0_ = (bitField0_ & ~0x00000010);
-          } else {
-            ensureChangesetsIsMutable();
-            changesets_.addAll(other.changesets_);
-          }
-
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        for (int i = 0; i < getNodesCount(); i++) {
-          if (!getNodes(i).isInitialized()) {
-
-            return false;
-          }
-        }
-        for (int i = 0; i < getWaysCount(); i++) {
-          if (!getWays(i).isInitialized()) {
-
-            return false;
-          }
-        }
-        for (int i = 0; i < getRelationsCount(); i++) {
-          if (!getRelations(i).isInitialized()) {
-
-            return false;
-          }
-        }
-        for (int i = 0; i < getChangesetsCount(); i++) {
-          if (!getChangesets(i).isInitialized()) {
-
-            return false;
-          }
-        }
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Osmformat.PrimitiveGroup parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Osmformat.PrimitiveGroup) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<crosby.binary.Osmformat.Node> nodes_ =
-        java.util.Collections.emptyList();
-      private void ensureNodesIsMutable() {
-        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
-          nodes_ = new java.util.ArrayList<>(nodes_);
-          bitField0_ |= 0x00000001;
-         }
-      }
+        super(DEFAULT_INSTANCE);
+      }
+
 
       /**
        * <code>repeated .OSMPBF.Node nodes = 1;</code>
        */
-      @Override
-	public java.util.List<crosby.binary.Osmformat.Node> getNodesList() {
-        return java.util.Collections.unmodifiableList(nodes_);
+      public java.util.List<crosby.binary.Osmformat.Node> getNodesList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getNodesList());
       }
       /**
        * <code>repeated .OSMPBF.Node nodes = 1;</code>
        */
-      @Override
-	public int getNodesCount() {
-        return nodes_.size();
-      }
-      /**
+      public int getNodesCount() {
+        return instance.getNodesCount();
+      }/**
        * <code>repeated .OSMPBF.Node nodes = 1;</code>
        */
-      @Override
-	public crosby.binary.Osmformat.Node getNodes(int index) {
-        return nodes_.get(index);
+      public crosby.binary.Osmformat.Node getNodes(int index) {
+        return instance.getNodes(index);
       }
       /**
@@ -4200,10 +4062,6 @@
       public Builder setNodes(
           int index, crosby.binary.Osmformat.Node value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureNodesIsMutable();
-        nodes_.set(index, value);
-
+        copyOnWrite();
+        instance.setNodes(index, value);
         return this;
       }
@@ -4213,7 +4071,6 @@
       public Builder setNodes(
           int index, crosby.binary.Osmformat.Node.Builder builderForValue) {
-        ensureNodesIsMutable();
-        nodes_.set(index, builderForValue.build());
-
+        copyOnWrite();
+        instance.setNodes(index, builderForValue);
         return this;
       }
@@ -4222,10 +4079,6 @@
        */
       public Builder addNodes(crosby.binary.Osmformat.Node value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureNodesIsMutable();
-        nodes_.add(value);
-
+        copyOnWrite();
+        instance.addNodes(value);
         return this;
       }
@@ -4235,10 +4088,6 @@
       public Builder addNodes(
           int index, crosby.binary.Osmformat.Node value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureNodesIsMutable();
-        nodes_.add(index, value);
-
+        copyOnWrite();
+        instance.addNodes(index, value);
         return this;
       }
@@ -4248,7 +4097,6 @@
       public Builder addNodes(
           crosby.binary.Osmformat.Node.Builder builderForValue) {
-        ensureNodesIsMutable();
-        nodes_.add(builderForValue.build());
-
+        copyOnWrite();
+        instance.addNodes(builderForValue);
         return this;
       }
@@ -4258,7 +4106,6 @@
       public Builder addNodes(
           int index, crosby.binary.Osmformat.Node.Builder builderForValue) {
-        ensureNodesIsMutable();
-        nodes_.add(index, builderForValue.build());
-
+        copyOnWrite();
+        instance.addNodes(index, builderForValue);
         return this;
       }
@@ -4268,8 +4115,6 @@
       public Builder addAllNodes(
           java.lang.Iterable<? extends crosby.binary.Osmformat.Node> values) {
-        ensureNodesIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, nodes_);
-
+        copyOnWrite();
+        instance.addAllNodes(values);
         return this;
       }
@@ -4278,7 +4123,6 @@
        */
       public Builder clearNodes() {
-        nodes_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-
+        copyOnWrite();
+        instance.clearNodes();
         return this;
       }
@@ -4287,24 +4131,20 @@
        */
       public Builder removeNodes(int index) {
-        ensureNodesIsMutable();
-        nodes_.remove(index);
-
-        return this;
-      }
-
-      private crosby.binary.Osmformat.DenseNodes dense_ = crosby.binary.Osmformat.DenseNodes.getDefaultInstance();
+        copyOnWrite();
+        instance.removeNodes(index);
+        return this;
+      }
+
       /**
        * <code>optional .OSMPBF.DenseNodes dense = 2;</code>
        */
-      @Override
-	public boolean hasDense() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
+      public boolean hasDense() {
+        return instance.hasDense();
       }
       /**
        * <code>optional .OSMPBF.DenseNodes dense = 2;</code>
        */
-      @Override
-	public crosby.binary.Osmformat.DenseNodes getDense() {
-        return dense_;
+      public crosby.binary.Osmformat.DenseNodes getDense() {
+        return instance.getDense();
       }
       /**
@@ -4312,12 +4152,8 @@
        */
       public Builder setDense(crosby.binary.Osmformat.DenseNodes value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        dense_ = value;
-
-        bitField0_ |= 0x00000002;
-        return this;
-      }
+        copyOnWrite();
+        instance.setDense(value);
+        return this;
+        }
       /**
        * <code>optional .OSMPBF.DenseNodes dense = 2;</code>
@@ -4325,7 +4161,6 @@
       public Builder setDense(
           crosby.binary.Osmformat.DenseNodes.Builder builderForValue) {
-        dense_ = builderForValue.build();
-
-        bitField0_ |= 0x00000002;
+        copyOnWrite();
+        instance.setDense(builderForValue);
         return this;
       }
@@ -4334,13 +4169,6 @@
        */
       public Builder mergeDense(crosby.binary.Osmformat.DenseNodes value) {
-        if (((bitField0_ & 0x00000002) == 0x00000002) &&
-            dense_ != crosby.binary.Osmformat.DenseNodes.getDefaultInstance()) {
-          dense_ =
-            crosby.binary.Osmformat.DenseNodes.newBuilder(dense_).mergeFrom(value).buildPartial();
-        } else {
-          dense_ = value;
-        }
-
-        bitField0_ |= 0x00000002;
+        copyOnWrite();
+        instance.mergeDense(value);
         return this;
       }
@@ -4348,18 +4176,7 @@
        * <code>optional .OSMPBF.DenseNodes dense = 2;</code>
        */
-      public Builder clearDense() {
-        dense_ = crosby.binary.Osmformat.DenseNodes.getDefaultInstance();
-
-        bitField0_ = (bitField0_ & ~0x00000002);
-        return this;
-      }
-
-      private java.util.List<crosby.binary.Osmformat.Way> ways_ =
-        java.util.Collections.emptyList();
-      private void ensureWaysIsMutable() {
-        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
-          ways_ = new java.util.ArrayList<>(ways_);
-          bitField0_ |= 0x00000004;
-         }
+      public Builder clearDense() {  copyOnWrite();
+        instance.clearDense();
+        return this;
       }
 
@@ -4367,21 +4184,18 @@
        * <code>repeated .OSMPBF.Way ways = 3;</code>
        */
-      @Override
-	public java.util.List<crosby.binary.Osmformat.Way> getWaysList() {
-        return java.util.Collections.unmodifiableList(ways_);
+      public java.util.List<crosby.binary.Osmformat.Way> getWaysList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getWaysList());
       }
       /**
        * <code>repeated .OSMPBF.Way ways = 3;</code>
        */
-      @Override
-	public int getWaysCount() {
-        return ways_.size();
-      }
-      /**
+      public int getWaysCount() {
+        return instance.getWaysCount();
+      }/**
        * <code>repeated .OSMPBF.Way ways = 3;</code>
        */
-      @Override
-	public crosby.binary.Osmformat.Way getWays(int index) {
-        return ways_.get(index);
+      public crosby.binary.Osmformat.Way getWays(int index) {
+        return instance.getWays(index);
       }
       /**
@@ -4390,10 +4204,6 @@
       public Builder setWays(
           int index, crosby.binary.Osmformat.Way value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureWaysIsMutable();
-        ways_.set(index, value);
-
+        copyOnWrite();
+        instance.setWays(index, value);
         return this;
       }
@@ -4403,7 +4213,6 @@
       public Builder setWays(
           int index, crosby.binary.Osmformat.Way.Builder builderForValue) {
-        ensureWaysIsMutable();
-        ways_.set(index, builderForValue.build());
-
+        copyOnWrite();
+        instance.setWays(index, builderForValue);
         return this;
       }
@@ -4412,10 +4221,6 @@
        */
       public Builder addWays(crosby.binary.Osmformat.Way value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureWaysIsMutable();
-        ways_.add(value);
-
+        copyOnWrite();
+        instance.addWays(value);
         return this;
       }
@@ -4425,10 +4230,6 @@
       public Builder addWays(
           int index, crosby.binary.Osmformat.Way value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureWaysIsMutable();
-        ways_.add(index, value);
-
+        copyOnWrite();
+        instance.addWays(index, value);
         return this;
       }
@@ -4438,7 +4239,6 @@
       public Builder addWays(
           crosby.binary.Osmformat.Way.Builder builderForValue) {
-        ensureWaysIsMutable();
-        ways_.add(builderForValue.build());
-
+        copyOnWrite();
+        instance.addWays(builderForValue);
         return this;
       }
@@ -4448,7 +4248,6 @@
       public Builder addWays(
           int index, crosby.binary.Osmformat.Way.Builder builderForValue) {
-        ensureWaysIsMutable();
-        ways_.add(index, builderForValue.build());
-
+        copyOnWrite();
+        instance.addWays(index, builderForValue);
         return this;
       }
@@ -4458,8 +4257,6 @@
       public Builder addAllWays(
           java.lang.Iterable<? extends crosby.binary.Osmformat.Way> values) {
-        ensureWaysIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, ways_);
-
+        copyOnWrite();
+        instance.addAllWays(values);
         return this;
       }
@@ -4468,7 +4265,6 @@
        */
       public Builder clearWays() {
-        ways_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000004);
-
+        copyOnWrite();
+        instance.clearWays();
         return this;
       }
@@ -4477,17 +4273,7 @@
        */
       public Builder removeWays(int index) {
-        ensureWaysIsMutable();
-        ways_.remove(index);
-
-        return this;
-      }
-
-      private java.util.List<crosby.binary.Osmformat.Relation> relations_ =
-        java.util.Collections.emptyList();
-      private void ensureRelationsIsMutable() {
-        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
-          relations_ = new java.util.ArrayList<>(relations_);
-          bitField0_ |= 0x00000008;
-         }
+        copyOnWrite();
+        instance.removeWays(index);
+        return this;
       }
 
@@ -4495,21 +4281,18 @@
        * <code>repeated .OSMPBF.Relation relations = 4;</code>
        */
-      @Override
-	public java.util.List<crosby.binary.Osmformat.Relation> getRelationsList() {
-        return java.util.Collections.unmodifiableList(relations_);
+      public java.util.List<crosby.binary.Osmformat.Relation> getRelationsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getRelationsList());
       }
       /**
        * <code>repeated .OSMPBF.Relation relations = 4;</code>
        */
-      @Override
-	public int getRelationsCount() {
-        return relations_.size();
-      }
-      /**
+      public int getRelationsCount() {
+        return instance.getRelationsCount();
+      }/**
        * <code>repeated .OSMPBF.Relation relations = 4;</code>
        */
-      @Override
-	public crosby.binary.Osmformat.Relation getRelations(int index) {
-        return relations_.get(index);
+      public crosby.binary.Osmformat.Relation getRelations(int index) {
+        return instance.getRelations(index);
       }
       /**
@@ -4518,10 +4301,6 @@
       public Builder setRelations(
           int index, crosby.binary.Osmformat.Relation value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureRelationsIsMutable();
-        relations_.set(index, value);
-
+        copyOnWrite();
+        instance.setRelations(index, value);
         return this;
       }
@@ -4531,7 +4310,6 @@
       public Builder setRelations(
           int index, crosby.binary.Osmformat.Relation.Builder builderForValue) {
-        ensureRelationsIsMutable();
-        relations_.set(index, builderForValue.build());
-
+        copyOnWrite();
+        instance.setRelations(index, builderForValue);
         return this;
       }
@@ -4540,10 +4318,6 @@
        */
       public Builder addRelations(crosby.binary.Osmformat.Relation value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureRelationsIsMutable();
-        relations_.add(value);
-
+        copyOnWrite();
+        instance.addRelations(value);
         return this;
       }
@@ -4553,10 +4327,6 @@
       public Builder addRelations(
           int index, crosby.binary.Osmformat.Relation value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureRelationsIsMutable();
-        relations_.add(index, value);
-
+        copyOnWrite();
+        instance.addRelations(index, value);
         return this;
       }
@@ -4566,7 +4336,6 @@
       public Builder addRelations(
           crosby.binary.Osmformat.Relation.Builder builderForValue) {
-        ensureRelationsIsMutable();
-        relations_.add(builderForValue.build());
-
+        copyOnWrite();
+        instance.addRelations(builderForValue);
         return this;
       }
@@ -4576,7 +4345,6 @@
       public Builder addRelations(
           int index, crosby.binary.Osmformat.Relation.Builder builderForValue) {
-        ensureRelationsIsMutable();
-        relations_.add(index, builderForValue.build());
-
+        copyOnWrite();
+        instance.addRelations(index, builderForValue);
         return this;
       }
@@ -4586,8 +4354,6 @@
       public Builder addAllRelations(
           java.lang.Iterable<? extends crosby.binary.Osmformat.Relation> values) {
-        ensureRelationsIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, relations_);
-
+        copyOnWrite();
+        instance.addAllRelations(values);
         return this;
       }
@@ -4596,7 +4362,6 @@
        */
       public Builder clearRelations() {
-        relations_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000008);
-
+        copyOnWrite();
+        instance.clearRelations();
         return this;
       }
@@ -4605,17 +4370,7 @@
        */
       public Builder removeRelations(int index) {
-        ensureRelationsIsMutable();
-        relations_.remove(index);
-
-        return this;
-      }
-
-      private java.util.List<crosby.binary.Osmformat.ChangeSet> changesets_ =
-        java.util.Collections.emptyList();
-      private void ensureChangesetsIsMutable() {
-        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
-          changesets_ = new java.util.ArrayList<>(changesets_);
-          bitField0_ |= 0x00000010;
-         }
+        copyOnWrite();
+        instance.removeRelations(index);
+        return this;
       }
 
@@ -4623,21 +4378,18 @@
        * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
        */
-      @Override
-	public java.util.List<crosby.binary.Osmformat.ChangeSet> getChangesetsList() {
-        return java.util.Collections.unmodifiableList(changesets_);
+      public java.util.List<crosby.binary.Osmformat.ChangeSet> getChangesetsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getChangesetsList());
       }
       /**
        * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
        */
-      @Override
-	public int getChangesetsCount() {
-        return changesets_.size();
-      }
-      /**
+      public int getChangesetsCount() {
+        return instance.getChangesetsCount();
+      }/**
        * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
        */
-      @Override
-	public crosby.binary.Osmformat.ChangeSet getChangesets(int index) {
-        return changesets_.get(index);
+      public crosby.binary.Osmformat.ChangeSet getChangesets(int index) {
+        return instance.getChangesets(index);
       }
       /**
@@ -4646,10 +4398,6 @@
       public Builder setChangesets(
           int index, crosby.binary.Osmformat.ChangeSet value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureChangesetsIsMutable();
-        changesets_.set(index, value);
-
+        copyOnWrite();
+        instance.setChangesets(index, value);
         return this;
       }
@@ -4659,7 +4407,6 @@
       public Builder setChangesets(
           int index, crosby.binary.Osmformat.ChangeSet.Builder builderForValue) {
-        ensureChangesetsIsMutable();
-        changesets_.set(index, builderForValue.build());
-
+        copyOnWrite();
+        instance.setChangesets(index, builderForValue);
         return this;
       }
@@ -4668,10 +4415,6 @@
        */
       public Builder addChangesets(crosby.binary.Osmformat.ChangeSet value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureChangesetsIsMutable();
-        changesets_.add(value);
-
+        copyOnWrite();
+        instance.addChangesets(value);
         return this;
       }
@@ -4681,10 +4424,6 @@
       public Builder addChangesets(
           int index, crosby.binary.Osmformat.ChangeSet value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureChangesetsIsMutable();
-        changesets_.add(index, value);
-
+        copyOnWrite();
+        instance.addChangesets(index, value);
         return this;
       }
@@ -4694,7 +4433,6 @@
       public Builder addChangesets(
           crosby.binary.Osmformat.ChangeSet.Builder builderForValue) {
-        ensureChangesetsIsMutable();
-        changesets_.add(builderForValue.build());
-
+        copyOnWrite();
+        instance.addChangesets(builderForValue);
         return this;
       }
@@ -4704,7 +4442,6 @@
       public Builder addChangesets(
           int index, crosby.binary.Osmformat.ChangeSet.Builder builderForValue) {
-        ensureChangesetsIsMutable();
-        changesets_.add(index, builderForValue.build());
-
+        copyOnWrite();
+        instance.addChangesets(index, builderForValue);
         return this;
       }
@@ -4714,8 +4451,6 @@
       public Builder addAllChangesets(
           java.lang.Iterable<? extends crosby.binary.Osmformat.ChangeSet> values) {
-        ensureChangesetsIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, changesets_);
-
+        copyOnWrite();
+        instance.addAllChangesets(values);
         return this;
       }
@@ -4724,7 +4459,6 @@
        */
       public Builder clearChangesets() {
-        changesets_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000010);
-
+        copyOnWrite();
+        instance.clearChangesets();
         return this;
       }
@@ -4733,7 +4467,6 @@
        */
       public Builder removeChangesets(int index) {
-        ensureChangesetsIsMutable();
-        changesets_.remove(index);
-
+        copyOnWrite();
+        instance.removeChangesets(index);
         return this;
       }
@@ -4741,11 +4474,192 @@
       // @@protoc_insertion_point(builder_scope:OSMPBF.PrimitiveGroup)
     }
-
+    private byte memoizedIsInitialized = -1;
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Osmformat.PrimitiveGroup();
+        }
+        case IS_INITIALIZED: {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized == 1) return DEFAULT_INSTANCE;
+          if (isInitialized == 0) return null;
+
+          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
+          for (int i = 0; i < getNodesCount(); i++) {
+            if (!getNodes(i).isInitialized()) {
+              if (shouldMemoize) {
+                memoizedIsInitialized = 0;
+              }
+              return null;
+            }
+          }
+          for (int i = 0; i < getWaysCount(); i++) {
+            if (!getWays(i).isInitialized()) {
+              if (shouldMemoize) {
+                memoizedIsInitialized = 0;
+              }
+              return null;
+            }
+          }
+          for (int i = 0; i < getRelationsCount(); i++) {
+            if (!getRelations(i).isInitialized()) {
+              if (shouldMemoize) {
+                memoizedIsInitialized = 0;
+              }
+              return null;
+            }
+          }
+          for (int i = 0; i < getChangesetsCount(); i++) {
+            if (!getChangesets(i).isInitialized()) {
+              if (shouldMemoize) {
+                memoizedIsInitialized = 0;
+              }
+              return null;
+            }
+          }
+          if (shouldMemoize) memoizedIsInitialized = 1;
+          return DEFAULT_INSTANCE;
+
+        }
+        case MAKE_IMMUTABLE: {
+          nodes_.makeImmutable();
+          ways_.makeImmutable();
+          relations_.makeImmutable();
+          changesets_.makeImmutable();
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Osmformat.PrimitiveGroup other = (crosby.binary.Osmformat.PrimitiveGroup) arg1;
+          nodes_= visitor.visitList(nodes_, other.nodes_);
+          dense_ = visitor.visitMessage(dense_, other.dense_);
+          ways_= visitor.visitList(ways_, other.ways_);
+          relations_= visitor.visitList(relations_, other.relations_);
+          changesets_= visitor.visitList(changesets_, other.changesets_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+            bitField0_ |= other.bitField0_;
+          }
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!nodes_.isModifiable()) {
+                    nodes_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(nodes_);
+                  }
+                  nodes_.add(
+                      input.readMessage(crosby.binary.Osmformat.Node.parser(), extensionRegistry));
+                  break;
+                }
+                case 18: {
+                  crosby.binary.Osmformat.DenseNodes.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                    subBuilder = dense_.toBuilder();
+                  }
+                  dense_ = input.readMessage(crosby.binary.Osmformat.DenseNodes.parser(), extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(dense_);
+                    dense_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000001;
+                  break;
+                }
+                case 26: {
+                  if (!ways_.isModifiable()) {
+                    ways_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(ways_);
+                  }
+                  ways_.add(
+                      input.readMessage(crosby.binary.Osmformat.Way.parser(), extensionRegistry));
+                  break;
+                }
+                case 34: {
+                  if (!relations_.isModifiable()) {
+                    relations_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(relations_);
+                  }
+                  relations_.add(
+                      input.readMessage(crosby.binary.Osmformat.Relation.parser(), extensionRegistry));
+                  break;
+                }
+                case 42: {
+                  if (!changesets_.isModifiable()) {
+                    changesets_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(changesets_);
+                  }
+                  changesets_.add(
+                      input.readMessage(crosby.binary.Osmformat.ChangeSet.parser(), extensionRegistry));
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Osmformat.PrimitiveGroup.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.PrimitiveGroup)
+    private static final crosby.binary.Osmformat.PrimitiveGroup DEFAULT_INSTANCE;
     static {
-      defaultInstance = new PrimitiveGroup(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.PrimitiveGroup)
+      DEFAULT_INSTANCE = new PrimitiveGroup();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Osmformat.PrimitiveGroup getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<PrimitiveGroup> PARSER;
+
+    public static com.google.protobuf.Parser<PrimitiveGroup> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
@@ -4768,6 +4682,4 @@
   }
   /**
-   * Protobuf type {@code OSMPBF.StringTable}
-   *
    * <pre>
    ** String table, contains the common strings in each block.
@@ -4775,105 +4687,21 @@
    *index in the table is ALWAYS blank and unused.
    * </pre>
+   *
+   * Protobuf type {@code OSMPBF.StringTable}
    */
-  public static final class StringTable extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class StringTable extends
+      com.google.protobuf.GeneratedMessageLite<
+          StringTable, StringTable.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.StringTable)
       StringTableOrBuilder {
-    // Use StringTable.newBuilder() to construct.
-    private StringTable(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private StringTable(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final StringTable defaultInstance;
-    public static StringTable getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public StringTable getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private StringTable(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-                s_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              s_.add(input.readBytes());
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-          s_ = java.util.Collections.unmodifiableList(s_);
-        }
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<StringTable> PARSER =
-        new com.google.protobuf.AbstractParser<StringTable>() {
-      @Override
-	public StringTable parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new StringTable(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<StringTable> getParserForType() {
-      return PARSER;
-    }
-
+    private StringTable() {
+      s_ = emptyProtobufList();
+    }
     public static final int S_FIELD_NUMBER = 1;
-    private java.util.List<com.google.protobuf.ByteString> s_;
+    private com.google.protobuf.Internal.ProtobufList<com.google.protobuf.ByteString> s_;
     /**
      * <code>repeated bytes s = 1;</code>
      */
-    @Override
-	public java.util.List<com.google.protobuf.ByteString>
+    public java.util.List<com.google.protobuf.ByteString>
         getSList() {
       return s_;
@@ -4882,6 +4710,5 @@
      * <code>repeated bytes s = 1;</code>
      */
-    @Override
-	public int getSCount() {
+    public int getSCount() {
       return s_.size();
     }
@@ -4889,36 +4716,59 @@
      * <code>repeated bytes s = 1;</code>
      */
-    @Override
-	public com.google.protobuf.ByteString getS(int index) {
+    public com.google.protobuf.ByteString getS(int index) {
       return s_.get(index);
     }
-
-    private void initFields() {
-      s_ = java.util.Collections.emptyList();
-    }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    private void ensureSIsMutable() {
+      if (!s_.isModifiable()) {
+        s_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(s_);
+       }
+    }
+    /**
+     * <code>repeated bytes s = 1;</code>
+     */
+    private void setS(
+        int index, com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureSIsMutable();
+      s_.set(index, value);
+    }
+    /**
+     * <code>repeated bytes s = 1;</code>
+     */
+    private void addS(com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureSIsMutable();
+      s_.add(value);
+    }
+    /**
+     * <code>repeated bytes s = 1;</code>
+     */
+    private void addAllS(
+        java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
+      ensureSIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, s_);
+    }
+    /**
+     * <code>repeated bytes s = 1;</code>
+     */
+    private void clearS() {
+      s_ = emptyProtobufList();
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       for (int i = 0; i < s_.size(); i++) {
         output.writeBytes(1, s_.get(i));
       }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -4934,20 +4784,27 @@
         size += 1 * getSList().size();
       }
-      size += unknownFields.size();
+      size += unknownFields.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 crosby.binary.Osmformat.StringTable parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Osmformat.StringTable parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Osmformat.StringTable parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.StringTable parseFrom(
@@ -4955,9 +4812,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.StringTable parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.StringTable parseFrom(
@@ -4965,9 +4824,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.StringTable parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.StringTable parseFrom(
@@ -4975,9 +4836,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.StringTable parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.StringTable parseDelimitedFrom(
@@ -4985,10 +4847,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.StringTable parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.StringTable parseFrom(
@@ -4996,19 +4859,16 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Osmformat.StringTable prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
-
-    /**
-     * Protobuf type {@code OSMPBF.StringTable}
-     *
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+
+    /**
      * <pre>
      ** String table, contains the common strings in each block.
@@ -5016,132 +4876,37 @@
      *index in the table is ALWAYS blank and unused.
      * </pre>
+     *
+     * Protobuf type {@code OSMPBF.StringTable}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Osmformat.StringTable, Builder>
-        implements
+          crosby.binary.Osmformat.StringTable, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.StringTable)
         crosby.binary.Osmformat.StringTableOrBuilder {
       // Construct using crosby.binary.Osmformat.StringTable.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        s_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Osmformat.StringTable getDefaultInstanceForType() {
-        return crosby.binary.Osmformat.StringTable.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Osmformat.StringTable build() {
-        crosby.binary.Osmformat.StringTable result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Osmformat.StringTable buildPartial() {
-        crosby.binary.Osmformat.StringTable result = new crosby.binary.Osmformat.StringTable(this);
-        int from_bitField0_ = bitField0_;
-        if (((bitField0_ & 0x00000001) == 0x00000001)) {
-          s_ = java.util.Collections.unmodifiableList(s_);
-          bitField0_ = (bitField0_ & ~0x00000001);
-        }
-        result.s_ = s_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Osmformat.StringTable other) {
-        if (other == crosby.binary.Osmformat.StringTable.getDefaultInstance()) return this;
-        if (!other.s_.isEmpty()) {
-          if (s_.isEmpty()) {
-            s_ = other.s_;
-            bitField0_ = (bitField0_ & ~0x00000001);
-          } else {
-            ensureSIsMutable();
-            s_.addAll(other.s_);
-          }
-
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Osmformat.StringTable parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Osmformat.StringTable) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<com.google.protobuf.ByteString> s_ = java.util.Collections.emptyList();
-      private void ensureSIsMutable() {
-        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
-          s_ = new java.util.ArrayList<>(s_);
-          bitField0_ |= 0x00000001;
-         }
-      }
+        super(DEFAULT_INSTANCE);
+      }
+
+
       /**
        * <code>repeated bytes s = 1;</code>
        */
-      @Override
-	public java.util.List<com.google.protobuf.ByteString>
+      public java.util.List<com.google.protobuf.ByteString>
           getSList() {
-        return java.util.Collections.unmodifiableList(s_);
+        return java.util.Collections.unmodifiableList(
+            instance.getSList());
       }
       /**
        * <code>repeated bytes s = 1;</code>
        */
-      @Override
-	public int getSCount() {
-        return s_.size();
+      public int getSCount() {
+        return instance.getSCount();
       }
       /**
        * <code>repeated bytes s = 1;</code>
        */
-      @Override
-	public com.google.protobuf.ByteString getS(int index) {
-        return s_.get(index);
+      public com.google.protobuf.ByteString getS(int index) {
+        return instance.getS(index);
       }
       /**
@@ -5150,10 +4915,6 @@
       public Builder setS(
           int index, com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureSIsMutable();
-        s_.set(index, value);
-
+        copyOnWrite();
+        instance.setS(index, value);
         return this;
       }
@@ -5162,10 +4923,6 @@
        */
       public Builder addS(com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureSIsMutable();
-        s_.add(value);
-
+        copyOnWrite();
+        instance.addS(value);
         return this;
       }
@@ -5175,8 +4932,6 @@
       public Builder addAllS(
           java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
-        ensureSIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, s_);
-
+        copyOnWrite();
+        instance.addAllS(values);
         return this;
       }
@@ -5185,7 +4940,6 @@
        */
       public Builder clearS() {
-        s_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-
+        copyOnWrite();
+        instance.clearS();
         return this;
       }
@@ -5193,11 +4947,103 @@
       // @@protoc_insertion_point(builder_scope:OSMPBF.StringTable)
     }
-
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Osmformat.StringTable();
+        }
+        case IS_INITIALIZED: {
+          return DEFAULT_INSTANCE;
+        }
+        case MAKE_IMMUTABLE: {
+          s_.makeImmutable();
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Osmformat.StringTable other = (crosby.binary.Osmformat.StringTable) arg1;
+          s_= visitor.visitList(s_, other.s_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+          }
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!s_.isModifiable()) {
+                    s_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(s_);
+                  }
+                  s_.add(input.readBytes());
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Osmformat.StringTable.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.StringTable)
+    private static final crosby.binary.Osmformat.StringTable DEFAULT_INSTANCE;
     static {
-      defaultInstance = new StringTable(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.StringTable)
+      DEFAULT_INSTANCE = new StringTable();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Osmformat.StringTable getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<StringTable> PARSER;
+
+    public static com.google.protobuf.Parser<StringTable> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
@@ -5243,23 +5089,21 @@
 
     /**
+     * <pre>
+     * String IDs
+     * </pre>
+     *
      * <code>optional uint32 user_sid = 5;</code>
-     *
+     */
+    boolean hasUserSid();
+    /**
      * <pre>
      * String IDs
      * </pre>
-     */
-    boolean hasUserSid();
-    /**
+     *
      * <code>optional uint32 user_sid = 5;</code>
-     *
-     * <pre>
-     * String IDs
-     * </pre>
      */
     int getUserSid();
 
     /**
-     * <code>optional bool visible = 6;</code>
-     *
      * <pre>
      * The visible flag is used to store history information. It indicates that
@@ -5272,9 +5116,9 @@
      * set.
      * </pre>
+     *
+     * <code>optional bool visible = 6;</code>
      */
     boolean hasVisible();
     /**
-     * <code>optional bool visible = 6;</code>
-     *
      * <pre>
      * The visible flag is used to store history information. It indicates that
@@ -5287,126 +5131,24 @@
      * set.
      * </pre>
+     *
+     * <code>optional bool visible = 6;</code>
      */
     boolean getVisible();
   }
   /**
+   * <pre>
+   * Optional metadata that may be included into each primitive. 
+   * </pre>
+   *
    * Protobuf type {@code OSMPBF.Info}
-   *
-   * <pre>
-   * Optional metadata that may be included into each primitive.
-   * </pre>
    */
-  public static final class Info extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class Info extends
+      com.google.protobuf.GeneratedMessageLite<
+          Info, Info.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.Info)
       InfoOrBuilder {
-    // Use Info.newBuilder() to construct.
-    private Info(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private Info(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final Info defaultInstance;
-    public static Info getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public Info getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private Info(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 8: {
-              bitField0_ |= 0x00000001;
-              version_ = input.readInt32();
-              break;
-            }
-            case 16: {
-              bitField0_ |= 0x00000002;
-              timestamp_ = input.readInt64();
-              break;
-            }
-            case 24: {
-              bitField0_ |= 0x00000004;
-              changeset_ = input.readInt64();
-              break;
-            }
-            case 32: {
-              bitField0_ |= 0x00000008;
-              uid_ = input.readInt32();
-              break;
-            }
-            case 40: {
-              bitField0_ |= 0x00000010;
-              userSid_ = input.readUInt32();
-              break;
-            }
-            case 48: {
-              bitField0_ |= 0x00000020;
-              visible_ = input.readBool();
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<Info> PARSER =
-        new com.google.protobuf.AbstractParser<Info>() {
-      @Override
-	public Info parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Info(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<Info> getParserForType() {
-      return PARSER;
-    }
-
+    private Info() {
+      version_ = -1;
+    }
     private int bitField0_;
     public static final int VERSION_FIELD_NUMBER = 1;
@@ -5415,6 +5157,5 @@
      * <code>optional int32 version = 1 [default = -1];</code>
      */
-    @Override
-	public boolean hasVersion() {
+    public boolean hasVersion() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -5422,7 +5163,20 @@
      * <code>optional int32 version = 1 [default = -1];</code>
      */
-    @Override
-	public int getVersion() {
+    public int getVersion() {
       return version_;
+    }
+    /**
+     * <code>optional int32 version = 1 [default = -1];</code>
+     */
+    private void setVersion(int value) {
+      bitField0_ |= 0x00000001;
+      version_ = value;
+    }
+    /**
+     * <code>optional int32 version = 1 [default = -1];</code>
+     */
+    private void clearVersion() {
+      bitField0_ = (bitField0_ & ~0x00000001);
+      version_ = -1;
     }
 
@@ -5432,6 +5186,5 @@
      * <code>optional int64 timestamp = 2;</code>
      */
-    @Override
-	public boolean hasTimestamp() {
+    public boolean hasTimestamp() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
@@ -5439,7 +5192,20 @@
      * <code>optional int64 timestamp = 2;</code>
      */
-    @Override
-	public long getTimestamp() {
+    public long getTimestamp() {
       return timestamp_;
+    }
+    /**
+     * <code>optional int64 timestamp = 2;</code>
+     */
+    private void setTimestamp(long value) {
+      bitField0_ |= 0x00000002;
+      timestamp_ = value;
+    }
+    /**
+     * <code>optional int64 timestamp = 2;</code>
+     */
+    private void clearTimestamp() {
+      bitField0_ = (bitField0_ & ~0x00000002);
+      timestamp_ = 0L;
     }
 
@@ -5449,6 +5215,5 @@
      * <code>optional int64 changeset = 3;</code>
      */
-    @Override
-	public boolean hasChangeset() {
+    public boolean hasChangeset() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
@@ -5456,7 +5221,20 @@
      * <code>optional int64 changeset = 3;</code>
      */
-    @Override
-	public long getChangeset() {
+    public long getChangeset() {
       return changeset_;
+    }
+    /**
+     * <code>optional int64 changeset = 3;</code>
+     */
+    private void setChangeset(long value) {
+      bitField0_ |= 0x00000004;
+      changeset_ = value;
+    }
+    /**
+     * <code>optional int64 changeset = 3;</code>
+     */
+    private void clearChangeset() {
+      bitField0_ = (bitField0_ & ~0x00000004);
+      changeset_ = 0L;
     }
 
@@ -5466,6 +5244,5 @@
      * <code>optional int32 uid = 4;</code>
      */
-    @Override
-	public boolean hasUid() {
+    public boolean hasUid() {
       return ((bitField0_ & 0x00000008) == 0x00000008);
     }
@@ -5473,7 +5250,20 @@
      * <code>optional int32 uid = 4;</code>
      */
-    @Override
-	public int getUid() {
+    public int getUid() {
       return uid_;
+    }
+    /**
+     * <code>optional int32 uid = 4;</code>
+     */
+    private void setUid(int value) {
+      bitField0_ |= 0x00000008;
+      uid_ = value;
+    }
+    /**
+     * <code>optional int32 uid = 4;</code>
+     */
+    private void clearUid() {
+      bitField0_ = (bitField0_ & ~0x00000008);
+      uid_ = 0;
     }
 
@@ -5481,24 +5271,44 @@
     private int userSid_;
     /**
+     * <pre>
+     * String IDs
+     * </pre>
+     *
      * <code>optional uint32 user_sid = 5;</code>
-     *
+     */
+    public boolean hasUserSid() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
      * <pre>
      * String IDs
      * </pre>
-     */
-    @Override
-	public boolean hasUserSid() {
-      return ((bitField0_ & 0x00000010) == 0x00000010);
-    }
-    /**
+     *
      * <code>optional uint32 user_sid = 5;</code>
-     *
+     */
+    public int getUserSid() {
+      return userSid_;
+    }
+    /**
      * <pre>
      * String IDs
      * </pre>
-     */
-    @Override
-	public int getUserSid() {
-      return userSid_;
+     *
+     * <code>optional uint32 user_sid = 5;</code>
+     */
+    private void setUserSid(int value) {
+      bitField0_ |= 0x00000010;
+      userSid_ = value;
+    }
+    /**
+     * <pre>
+     * String IDs
+     * </pre>
+     *
+     * <code>optional uint32 user_sid = 5;</code>
+     */
+    private void clearUserSid() {
+      bitField0_ = (bitField0_ & ~0x00000010);
+      userSid_ = 0;
     }
 
@@ -5506,6 +5316,4 @@
     private boolean visible_;
     /**
-     * <code>optional bool visible = 6;</code>
-     *
      * <pre>
      * The visible flag is used to store history information. It indicates that
@@ -5518,12 +5326,11 @@
      * set.
      * </pre>
-     */
-    @Override
-	public boolean hasVisible() {
+     *
+     * <code>optional bool visible = 6;</code>
+     */
+    public boolean hasVisible() {
       return ((bitField0_ & 0x00000020) == 0x00000020);
     }
     /**
-     * <code>optional bool visible = 6;</code>
-     *
      * <pre>
      * The visible flag is used to store history information. It indicates that
@@ -5536,33 +5343,49 @@
      * set.
      * </pre>
-     */
-    @Override
-	public boolean getVisible() {
+     *
+     * <code>optional bool visible = 6;</code>
+     */
+    public boolean getVisible() {
       return visible_;
     }
-
-    private void initFields() {
-      version_ = -1;
-      timestamp_ = 0L;
-      changeset_ = 0L;
-      uid_ = 0;
-      userSid_ = 0;
+    /**
+     * <pre>
+     * The visible flag is used to store history information. It indicates that
+     * the current object version has been created by a delete operation on the
+     * OSM API.
+     * When a writer sets this flag, it MUST add a required_features tag with
+     * value "HistoricalInformation" to the HeaderBlock.
+     * If this flag is not available for some object it MUST be assumed to be
+     * true if the file has the required_features tag "HistoricalInformation"
+     * set.
+     * </pre>
+     *
+     * <code>optional bool visible = 6;</code>
+     */
+    private void setVisible(boolean value) {
+      bitField0_ |= 0x00000020;
+      visible_ = value;
+    }
+    /**
+     * <pre>
+     * The visible flag is used to store history information. It indicates that
+     * the current object version has been created by a delete operation on the
+     * OSM API.
+     * When a writer sets this flag, it MUST add a required_features tag with
+     * value "HistoricalInformation" to the HeaderBlock.
+     * If this flag is not available for some object it MUST be assumed to be
+     * true if the file has the required_features tag "HistoricalInformation"
+     * set.
+     * </pre>
+     *
+     * <code>optional bool visible = 6;</code>
+     */
+    private void clearVisible() {
+      bitField0_ = (bitField0_ & ~0x00000020);
       visible_ = false;
     }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeInt32(1, version_);
@@ -5583,10 +5406,8 @@
         output.writeBool(6, visible_);
       }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -5617,20 +5438,27 @@
           .computeBoolSize(6, visible_);
       }
-      size += unknownFields.size();
+      size += unknownFields.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 crosby.binary.Osmformat.Info parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Osmformat.Info parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Osmformat.Info parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.Info parseFrom(
@@ -5638,9 +5466,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Info parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.Info parseFrom(
@@ -5648,9 +5478,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Info parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.Info parseFrom(
@@ -5658,9 +5490,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Info parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.Info parseDelimitedFrom(
@@ -5668,10 +5501,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Info parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.Info parseFrom(
@@ -5679,175 +5513,44 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Osmformat.Info prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
-
-    /**
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+
+    /**
+     * <pre>
+     * Optional metadata that may be included into each primitive. 
+     * </pre>
+     *
      * Protobuf type {@code OSMPBF.Info}
-     *
-     * <pre>
-     * Optional metadata that may be included into each primitive.
-     * </pre>
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Osmformat.Info, Builder>
-        implements
+          crosby.binary.Osmformat.Info, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.Info)
         crosby.binary.Osmformat.InfoOrBuilder {
       // Construct using crosby.binary.Osmformat.Info.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        version_ = -1;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        timestamp_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000002);
-        changeset_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000004);
-        uid_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000008);
-        userSid_ = 0;
-        bitField0_ = (bitField0_ & ~0x00000010);
-        visible_ = false;
-        bitField0_ = (bitField0_ & ~0x00000020);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Osmformat.Info getDefaultInstanceForType() {
-        return crosby.binary.Osmformat.Info.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Osmformat.Info build() {
-        crosby.binary.Osmformat.Info result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Osmformat.Info buildPartial() {
-        crosby.binary.Osmformat.Info result = new crosby.binary.Osmformat.Info(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.version_ = version_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.timestamp_ = timestamp_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.changeset_ = changeset_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.uid_ = uid_;
-        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
-          to_bitField0_ |= 0x00000010;
-        }
-        result.userSid_ = userSid_;
-        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
-          to_bitField0_ |= 0x00000020;
-        }
-        result.visible_ = visible_;
-        result.bitField0_ = to_bitField0_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Osmformat.Info other) {
-        if (other == crosby.binary.Osmformat.Info.getDefaultInstance()) return this;
-        if (other.hasVersion()) {
-          setVersion(other.getVersion());
-        }
-        if (other.hasTimestamp()) {
-          setTimestamp(other.getTimestamp());
-        }
-        if (other.hasChangeset()) {
-          setChangeset(other.getChangeset());
-        }
-        if (other.hasUid()) {
-          setUid(other.getUid());
-        }
-        if (other.hasUserSid()) {
-          setUserSid(other.getUserSid());
-        }
-        if (other.hasVisible()) {
-          setVisible(other.getVisible());
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Osmformat.Info parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Osmformat.Info) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private int version_ = -1;
+        super(DEFAULT_INSTANCE);
+      }
+
+
       /**
        * <code>optional int32 version = 1 [default = -1];</code>
        */
-      @Override
-	public boolean hasVersion() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
+      public boolean hasVersion() {
+        return instance.hasVersion();
       }
       /**
        * <code>optional int32 version = 1 [default = -1];</code>
        */
-      @Override
-	public int getVersion() {
-        return version_;
+      public int getVersion() {
+        return instance.getVersion();
       }
       /**
@@ -5855,7 +5558,6 @@
        */
       public Builder setVersion(int value) {
-        bitField0_ |= 0x00000001;
-        version_ = value;
-
+        copyOnWrite();
+        instance.setVersion(value);
         return this;
       }
@@ -5864,24 +5566,20 @@
        */
       public Builder clearVersion() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        version_ = -1;
-
-        return this;
-      }
-
-      private long timestamp_ ;
+        copyOnWrite();
+        instance.clearVersion();
+        return this;
+      }
+
       /**
        * <code>optional int64 timestamp = 2;</code>
        */
-      @Override
-	public boolean hasTimestamp() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
+      public boolean hasTimestamp() {
+        return instance.hasTimestamp();
       }
       /**
        * <code>optional int64 timestamp = 2;</code>
        */
-      @Override
-	public long getTimestamp() {
-        return timestamp_;
+      public long getTimestamp() {
+        return instance.getTimestamp();
       }
       /**
@@ -5889,7 +5587,6 @@
        */
       public Builder setTimestamp(long value) {
-        bitField0_ |= 0x00000002;
-        timestamp_ = value;
-
+        copyOnWrite();
+        instance.setTimestamp(value);
         return this;
       }
@@ -5898,24 +5595,20 @@
        */
       public Builder clearTimestamp() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        timestamp_ = 0L;
-
-        return this;
-      }
-
-      private long changeset_ ;
+        copyOnWrite();
+        instance.clearTimestamp();
+        return this;
+      }
+
       /**
        * <code>optional int64 changeset = 3;</code>
        */
-      @Override
-	public boolean hasChangeset() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
+      public boolean hasChangeset() {
+        return instance.hasChangeset();
       }
       /**
        * <code>optional int64 changeset = 3;</code>
        */
-      @Override
-	public long getChangeset() {
-        return changeset_;
+      public long getChangeset() {
+        return instance.getChangeset();
       }
       /**
@@ -5923,7 +5616,6 @@
        */
       public Builder setChangeset(long value) {
-        bitField0_ |= 0x00000004;
-        changeset_ = value;
-
+        copyOnWrite();
+        instance.setChangeset(value);
         return this;
       }
@@ -5932,24 +5624,20 @@
        */
       public Builder clearChangeset() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        changeset_ = 0L;
-
-        return this;
-      }
-
-      private int uid_ ;
+        copyOnWrite();
+        instance.clearChangeset();
+        return this;
+      }
+
       /**
        * <code>optional int32 uid = 4;</code>
        */
-      @Override
-	public boolean hasUid() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
+      public boolean hasUid() {
+        return instance.hasUid();
       }
       /**
        * <code>optional int32 uid = 4;</code>
        */
-      @Override
-	public int getUid() {
-        return uid_;
+      public int getUid() {
+        return instance.getUid();
       }
       /**
@@ -5957,7 +5645,6 @@
        */
       public Builder setUid(int value) {
-        bitField0_ |= 0x00000008;
-        uid_ = value;
-
+        copyOnWrite();
+        instance.setUid(value);
         return this;
       }
@@ -5966,64 +5653,55 @@
        */
       public Builder clearUid() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        uid_ = 0;
-
-        return this;
-      }
-
-      private int userSid_ ;
-      /**
+        copyOnWrite();
+        instance.clearUid();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * String IDs
+       * </pre>
+       *
        * <code>optional uint32 user_sid = 5;</code>
-       *
+       */
+      public boolean hasUserSid() {
+        return instance.hasUserSid();
+      }
+      /**
        * <pre>
        * String IDs
        * </pre>
-       */
-      @Override
-	public boolean hasUserSid() {
-        return ((bitField0_ & 0x00000010) == 0x00000010);
-      }
-      /**
+       *
        * <code>optional uint32 user_sid = 5;</code>
-       *
+       */
+      public int getUserSid() {
+        return instance.getUserSid();
+      }
+      /**
        * <pre>
        * String IDs
        * </pre>
-       */
-      @Override
-	public int getUserSid() {
-        return userSid_;
-      }
-      /**
+       *
        * <code>optional uint32 user_sid = 5;</code>
-       *
+       */
+      public Builder setUserSid(int value) {
+        copyOnWrite();
+        instance.setUserSid(value);
+        return this;
+      }
+      /**
        * <pre>
        * String IDs
        * </pre>
-       */
-      public Builder setUserSid(int value) {
-        bitField0_ |= 0x00000010;
-        userSid_ = value;
-
-        return this;
-      }
-      /**
+       *
        * <code>optional uint32 user_sid = 5;</code>
-       *
-       * <pre>
-       * String IDs
-       * </pre>
        */
       public Builder clearUserSid() {
-        bitField0_ = (bitField0_ & ~0x00000010);
-        userSid_ = 0;
-
-        return this;
-      }
-
-      private boolean visible_ ;
-      /**
-       * <code>optional bool visible = 6;</code>
-       *
+        copyOnWrite();
+        instance.clearUserSid();
+        return this;
+      }
+
+      /**
        * <pre>
        * The visible flag is used to store history information. It indicates that
@@ -6036,12 +5714,11 @@
        * set.
        * </pre>
-       */
-      @Override
-	public boolean hasVisible() {
-        return ((bitField0_ & 0x00000020) == 0x00000020);
-      }
-      /**
+       *
        * <code>optional bool visible = 6;</code>
-       *
+       */
+      public boolean hasVisible() {
+        return instance.hasVisible();
+      }
+      /**
        * <pre>
        * The visible flag is used to store history information. It indicates that
@@ -6054,12 +5731,11 @@
        * set.
        * </pre>
-       */
-      @Override
-	public boolean getVisible() {
-        return visible_;
-      }
-      /**
+       *
        * <code>optional bool visible = 6;</code>
-       *
+       */
+      public boolean getVisible() {
+        return instance.getVisible();
+      }
+      /**
        * <pre>
        * The visible flag is used to store history information. It indicates that
@@ -6072,14 +5748,13 @@
        * set.
        * </pre>
+       *
+       * <code>optional bool visible = 6;</code>
        */
       public Builder setVisible(boolean value) {
-        bitField0_ |= 0x00000020;
-        visible_ = value;
-
-        return this;
-      }
-      /**
-       * <code>optional bool visible = 6;</code>
-       *
+        copyOnWrite();
+        instance.setVisible(value);
+        return this;
+      }
+      /**
        * <pre>
        * The visible flag is used to store history information. It indicates that
@@ -6092,9 +5767,10 @@
        * set.
        * </pre>
+       *
+       * <code>optional bool visible = 6;</code>
        */
       public Builder clearVisible() {
-        bitField0_ = (bitField0_ & ~0x00000020);
-        visible_ = false;
-
+        copyOnWrite();
+        instance.clearVisible();
         return this;
       }
@@ -6102,11 +5778,142 @@
       // @@protoc_insertion_point(builder_scope:OSMPBF.Info)
     }
-
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Osmformat.Info();
+        }
+        case IS_INITIALIZED: {
+          return DEFAULT_INSTANCE;
+        }
+        case MAKE_IMMUTABLE: {
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Osmformat.Info other = (crosby.binary.Osmformat.Info) arg1;
+          version_ = visitor.visitInt(
+              hasVersion(), version_,
+              other.hasVersion(), other.version_);
+          timestamp_ = visitor.visitLong(
+              hasTimestamp(), timestamp_,
+              other.hasTimestamp(), other.timestamp_);
+          changeset_ = visitor.visitLong(
+              hasChangeset(), changeset_,
+              other.hasChangeset(), other.changeset_);
+          uid_ = visitor.visitInt(
+              hasUid(), uid_,
+              other.hasUid(), other.uid_);
+          userSid_ = visitor.visitInt(
+              hasUserSid(), userSid_,
+              other.hasUserSid(), other.userSid_);
+          visible_ = visitor.visitBoolean(
+              hasVisible(), visible_,
+              other.hasVisible(), other.visible_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+            bitField0_ |= other.bitField0_;
+          }
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  bitField0_ |= 0x00000001;
+                  version_ = input.readInt32();
+                  break;
+                }
+                case 16: {
+                  bitField0_ |= 0x00000002;
+                  timestamp_ = input.readInt64();
+                  break;
+                }
+                case 24: {
+                  bitField0_ |= 0x00000004;
+                  changeset_ = input.readInt64();
+                  break;
+                }
+                case 32: {
+                  bitField0_ |= 0x00000008;
+                  uid_ = input.readInt32();
+                  break;
+                }
+                case 40: {
+                  bitField0_ |= 0x00000010;
+                  userSid_ = input.readUInt32();
+                  break;
+                }
+                case 48: {
+                  bitField0_ |= 0x00000020;
+                  visible_ = input.readBool();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Osmformat.Info.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.Info)
+    private static final crosby.binary.Osmformat.Info DEFAULT_INSTANCE;
     static {
-      defaultInstance = new Info(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.Info)
+      DEFAULT_INSTANCE = new Info();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Osmformat.Info getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<Info> PARSER;
+
+    public static com.google.protobuf.Parser<Info> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
@@ -6129,106 +5936,104 @@
 
     /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 timestamp = 2 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Long> getTimestampList();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    java.util.List<java.lang.Long> getTimestampList();
-    /**
+     *
      * <code>repeated sint64 timestamp = 2 [packed = true];</code>
-     *
+     */
+    int getTimestampCount();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    int getTimestampCount();
-    /**
+     *
      * <code>repeated sint64 timestamp = 2 [packed = true];</code>
-     *
+     */
+    long getTimestamp(int index);
+
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    long getTimestamp(int index);
-
-    /**
+     *
      * <code>repeated sint64 changeset = 3 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Long> getChangesetList();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    java.util.List<java.lang.Long> getChangesetList();
-    /**
+     *
      * <code>repeated sint64 changeset = 3 [packed = true];</code>
-     *
+     */
+    int getChangesetCount();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    int getChangesetCount();
-    /**
+     *
      * <code>repeated sint64 changeset = 3 [packed = true];</code>
-     *
+     */
+    long getChangeset(int index);
+
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    long getChangeset(int index);
-
-    /**
+     *
      * <code>repeated sint32 uid = 4 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Integer> getUidList();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    java.util.List<java.lang.Integer> getUidList();
-    /**
+     *
      * <code>repeated sint32 uid = 4 [packed = true];</code>
-     *
+     */
+    int getUidCount();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    int getUidCount();
-    /**
+     *
      * <code>repeated sint32 uid = 4 [packed = true];</code>
-     *
-     * <pre>
-     * DELTA coded
-     * </pre>
      */
     int getUid(int index);
 
     /**
+     * <pre>
+     * String IDs for usernames. DELTA coded
+     * </pre>
+     *
      * <code>repeated sint32 user_sid = 5 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Integer> getUserSidList();
+    /**
      * <pre>
      * String IDs for usernames. DELTA coded
      * </pre>
-     */
-    java.util.List<java.lang.Integer> getUserSidList();
-    /**
+     *
      * <code>repeated sint32 user_sid = 5 [packed = true];</code>
-     *
+     */
+    int getUserSidCount();
+    /**
      * <pre>
      * String IDs for usernames. DELTA coded
      * </pre>
-     */
-    int getUserSidCount();
-    /**
+     *
      * <code>repeated sint32 user_sid = 5 [packed = true];</code>
-     *
-     * <pre>
-     * String IDs for usernames. DELTA coded
-     * </pre>
      */
     int getUserSid(int index);
 
     /**
-     * <code>repeated bool visible = 6 [packed = true];</code>
-     *
      * <pre>
      * The visible flag is used to store history information. It indicates that
@@ -6241,9 +6046,9 @@
      * set.
      * </pre>
+     *
+     * <code>repeated bool visible = 6 [packed = true];</code>
      */
     java.util.List<java.lang.Boolean> getVisibleList();
     /**
-     * <code>repeated bool visible = 6 [packed = true];</code>
-     *
      * <pre>
      * The visible flag is used to store history information. It indicates that
@@ -6256,9 +6061,9 @@
      * set.
      * </pre>
+     *
+     * <code>repeated bool visible = 6 [packed = true];</code>
      */
     int getVisibleCount();
     /**
-     * <code>repeated bool visible = 6 [packed = true];</code>
-     *
      * <pre>
      * The visible flag is used to store history information. It indicates that
@@ -6271,247 +6076,35 @@
      * set.
      * </pre>
+     *
+     * <code>repeated bool visible = 6 [packed = true];</code>
      */
     boolean getVisible(int index);
   }
   /**
+   * <pre>
+   ** Optional metadata that may be included into each primitive. Special dense format used in DenseNodes. 
+   * </pre>
+   *
    * Protobuf type {@code OSMPBF.DenseInfo}
-   *
-   * <pre>
-   ** Optional metadata that may be included into each primitive. Special dense format used in DenseNodes.
-   * </pre>
    */
-  public static final class DenseInfo extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class DenseInfo extends
+      com.google.protobuf.GeneratedMessageLite<
+          DenseInfo, DenseInfo.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.DenseInfo)
       DenseInfoOrBuilder {
-    // Use DenseInfo.newBuilder() to construct.
-    private DenseInfo(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private DenseInfo(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final DenseInfo defaultInstance;
-    public static DenseInfo getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public DenseInfo getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private DenseInfo(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 8: {
-              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-                version_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              version_.add(input.readInt32());
-              break;
-            }
-            case 10: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
-                version_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                version_.add(input.readInt32());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 16: {
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                timestamp_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              timestamp_.add(input.readSInt64());
-              break;
-            }
-            case 18: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
-                timestamp_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                timestamp_.add(input.readSInt64());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 24: {
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-                changeset_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              changeset_.add(input.readSInt64());
-              break;
-            }
-            case 26: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
-                changeset_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                changeset_.add(input.readSInt64());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 32: {
-              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
-                uid_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000008;
-              }
-              uid_.add(input.readSInt32());
-              break;
-            }
-            case 34: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
-                uid_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000008;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                uid_.add(input.readSInt32());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 40: {
-              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-                userSid_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000010;
-              }
-              userSid_.add(input.readSInt32());
-              break;
-            }
-            case 42: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
-                userSid_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000010;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                userSid_.add(input.readSInt32());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 48: {
-              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
-                visible_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000020;
-              }
-              visible_.add(input.readBool());
-              break;
-            }
-            case 50: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
-                visible_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000020;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                visible_.add(input.readBool());
-              }
-              input.popLimit(limit);
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-          version_ = java.util.Collections.unmodifiableList(version_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-          timestamp_ = java.util.Collections.unmodifiableList(timestamp_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-          changeset_ = java.util.Collections.unmodifiableList(changeset_);
-        }
-        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
-          uid_ = java.util.Collections.unmodifiableList(uid_);
-        }
-        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-          userSid_ = java.util.Collections.unmodifiableList(userSid_);
-        }
-        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
-          visible_ = java.util.Collections.unmodifiableList(visible_);
-        }
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<DenseInfo> PARSER =
-        new com.google.protobuf.AbstractParser<DenseInfo>() {
-      @Override
-	public DenseInfo parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DenseInfo(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<DenseInfo> getParserForType() {
-      return PARSER;
-    }
-
+    private DenseInfo() {
+      version_ = emptyIntList();
+      timestamp_ = emptyLongList();
+      changeset_ = emptyLongList();
+      uid_ = emptyIntList();
+      userSid_ = emptyIntList();
+      visible_ = emptyBooleanList();
+    }
     public static final int VERSION_FIELD_NUMBER = 1;
-    private java.util.List<java.lang.Integer> version_;
+    private com.google.protobuf.Internal.IntList version_;
     /**
      * <code>repeated int32 version = 1 [packed = true];</code>
      */
-    @Override
-	public java.util.List<java.lang.Integer>
+    public java.util.List<java.lang.Integer>
         getVersionList() {
       return version_;
@@ -6520,6 +6113,5 @@
      * <code>repeated int32 version = 1 [packed = true];</code>
      */
-    @Override
-	public int getVersionCount() {
+    public int getVersionCount() {
       return version_.size();
     }
@@ -6527,167 +6119,396 @@
      * <code>repeated int32 version = 1 [packed = true];</code>
      */
-    @Override
-	public int getVersion(int index) {
-      return version_.get(index);
+    public int getVersion(int index) {
+      return version_.getInt(index);
     }
     private int versionMemoizedSerializedSize = -1;
+    private void ensureVersionIsMutable() {
+      if (!version_.isModifiable()) {
+        version_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(version_);
+       }
+    }
+    /**
+     * <code>repeated int32 version = 1 [packed = true];</code>
+     */
+    private void setVersion(
+        int index, int value) {
+      ensureVersionIsMutable();
+      version_.setInt(index, value);
+    }
+    /**
+     * <code>repeated int32 version = 1 [packed = true];</code>
+     */
+    private void addVersion(int value) {
+      ensureVersionIsMutable();
+      version_.addInt(value);
+    }
+    /**
+     * <code>repeated int32 version = 1 [packed = true];</code>
+     */
+    private void addAllVersion(
+        java.lang.Iterable<? extends java.lang.Integer> values) {
+      ensureVersionIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, version_);
+    }
+    /**
+     * <code>repeated int32 version = 1 [packed = true];</code>
+     */
+    private void clearVersion() {
+      version_ = emptyIntList();
+    }
 
     public static final int TIMESTAMP_FIELD_NUMBER = 2;
-    private java.util.List<java.lang.Long> timestamp_;
-    /**
+    private com.google.protobuf.Internal.LongList timestamp_;
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 timestamp = 2 [packed = true];</code>
-     *
-     * <pre>
-     * DELTA coded
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Long>
+     */
+    public java.util.List<java.lang.Long>
         getTimestampList() {
       return timestamp_;
     }
     /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 timestamp = 2 [packed = true];</code>
-     *
+     */
+    public int getTimestampCount() {
+      return timestamp_.size();
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public int getTimestampCount() {
-      return timestamp_.size();
-    }
-    /**
+     *
      * <code>repeated sint64 timestamp = 2 [packed = true];</code>
-     *
+     */
+    public long getTimestamp(int index) {
+      return timestamp_.getLong(index);
+    }
+    private int timestampMemoizedSerializedSize = -1;
+    private void ensureTimestampIsMutable() {
+      if (!timestamp_.isModifiable()) {
+        timestamp_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(timestamp_);
+       }
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public long getTimestamp(int index) {
-      return timestamp_.get(index);
-    }
-    private int timestampMemoizedSerializedSize = -1;
+     *
+     * <code>repeated sint64 timestamp = 2 [packed = true];</code>
+     */
+    private void setTimestamp(
+        int index, long value) {
+      ensureTimestampIsMutable();
+      timestamp_.setLong(index, value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 timestamp = 2 [packed = true];</code>
+     */
+    private void addTimestamp(long value) {
+      ensureTimestampIsMutable();
+      timestamp_.addLong(value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 timestamp = 2 [packed = true];</code>
+     */
+    private void addAllTimestamp(
+        java.lang.Iterable<? extends java.lang.Long> values) {
+      ensureTimestampIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, timestamp_);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 timestamp = 2 [packed = true];</code>
+     */
+    private void clearTimestamp() {
+      timestamp_ = emptyLongList();
+    }
 
     public static final int CHANGESET_FIELD_NUMBER = 3;
-    private java.util.List<java.lang.Long> changeset_;
-    /**
+    private com.google.protobuf.Internal.LongList changeset_;
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 changeset = 3 [packed = true];</code>
-     *
-     * <pre>
-     * DELTA coded
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Long>
+     */
+    public java.util.List<java.lang.Long>
         getChangesetList() {
       return changeset_;
     }
     /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 changeset = 3 [packed = true];</code>
-     *
+     */
+    public int getChangesetCount() {
+      return changeset_.size();
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public int getChangesetCount() {
-      return changeset_.size();
-    }
-    /**
+     *
      * <code>repeated sint64 changeset = 3 [packed = true];</code>
-     *
+     */
+    public long getChangeset(int index) {
+      return changeset_.getLong(index);
+    }
+    private int changesetMemoizedSerializedSize = -1;
+    private void ensureChangesetIsMutable() {
+      if (!changeset_.isModifiable()) {
+        changeset_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(changeset_);
+       }
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public long getChangeset(int index) {
-      return changeset_.get(index);
-    }
-    private int changesetMemoizedSerializedSize = -1;
+     *
+     * <code>repeated sint64 changeset = 3 [packed = true];</code>
+     */
+    private void setChangeset(
+        int index, long value) {
+      ensureChangesetIsMutable();
+      changeset_.setLong(index, value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 changeset = 3 [packed = true];</code>
+     */
+    private void addChangeset(long value) {
+      ensureChangesetIsMutable();
+      changeset_.addLong(value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 changeset = 3 [packed = true];</code>
+     */
+    private void addAllChangeset(
+        java.lang.Iterable<? extends java.lang.Long> values) {
+      ensureChangesetIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, changeset_);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 changeset = 3 [packed = true];</code>
+     */
+    private void clearChangeset() {
+      changeset_ = emptyLongList();
+    }
 
     public static final int UID_FIELD_NUMBER = 4;
-    private java.util.List<java.lang.Integer> uid_;
-    /**
+    private com.google.protobuf.Internal.IntList uid_;
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint32 uid = 4 [packed = true];</code>
-     *
-     * <pre>
-     * DELTA coded
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Integer>
+     */
+    public java.util.List<java.lang.Integer>
         getUidList() {
       return uid_;
     }
     /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint32 uid = 4 [packed = true];</code>
-     *
+     */
+    public int getUidCount() {
+      return uid_.size();
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public int getUidCount() {
-      return uid_.size();
-    }
-    /**
+     *
      * <code>repeated sint32 uid = 4 [packed = true];</code>
-     *
+     */
+    public int getUid(int index) {
+      return uid_.getInt(index);
+    }
+    private int uidMemoizedSerializedSize = -1;
+    private void ensureUidIsMutable() {
+      if (!uid_.isModifiable()) {
+        uid_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(uid_);
+       }
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public int getUid(int index) {
-      return uid_.get(index);
-    }
-    private int uidMemoizedSerializedSize = -1;
+     *
+     * <code>repeated sint32 uid = 4 [packed = true];</code>
+     */
+    private void setUid(
+        int index, int value) {
+      ensureUidIsMutable();
+      uid_.setInt(index, value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint32 uid = 4 [packed = true];</code>
+     */
+    private void addUid(int value) {
+      ensureUidIsMutable();
+      uid_.addInt(value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint32 uid = 4 [packed = true];</code>
+     */
+    private void addAllUid(
+        java.lang.Iterable<? extends java.lang.Integer> values) {
+      ensureUidIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, uid_);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint32 uid = 4 [packed = true];</code>
+     */
+    private void clearUid() {
+      uid_ = emptyIntList();
+    }
 
     public static final int USER_SID_FIELD_NUMBER = 5;
-    private java.util.List<java.lang.Integer> userSid_;
-    /**
+    private com.google.protobuf.Internal.IntList userSid_;
+    /**
+     * <pre>
+     * String IDs for usernames. DELTA coded
+     * </pre>
+     *
      * <code>repeated sint32 user_sid = 5 [packed = true];</code>
-     *
-     * <pre>
-     * String IDs for usernames. DELTA coded
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Integer>
+     */
+    public java.util.List<java.lang.Integer>
         getUserSidList() {
       return userSid_;
     }
     /**
+     * <pre>
+     * String IDs for usernames. DELTA coded
+     * </pre>
+     *
      * <code>repeated sint32 user_sid = 5 [packed = true];</code>
-     *
+     */
+    public int getUserSidCount() {
+      return userSid_.size();
+    }
+    /**
      * <pre>
      * String IDs for usernames. DELTA coded
      * </pre>
-     */
-    @Override
-	public int getUserSidCount() {
-      return userSid_.size();
-    }
-    /**
+     *
      * <code>repeated sint32 user_sid = 5 [packed = true];</code>
-     *
+     */
+    public int getUserSid(int index) {
+      return userSid_.getInt(index);
+    }
+    private int userSidMemoizedSerializedSize = -1;
+    private void ensureUserSidIsMutable() {
+      if (!userSid_.isModifiable()) {
+        userSid_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(userSid_);
+       }
+    }
+    /**
      * <pre>
      * String IDs for usernames. DELTA coded
      * </pre>
-     */
-    @Override
-	public int getUserSid(int index) {
-      return userSid_.get(index);
-    }
-    private int userSidMemoizedSerializedSize = -1;
+     *
+     * <code>repeated sint32 user_sid = 5 [packed = true];</code>
+     */
+    private void setUserSid(
+        int index, int value) {
+      ensureUserSidIsMutable();
+      userSid_.setInt(index, value);
+    }
+    /**
+     * <pre>
+     * String IDs for usernames. DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint32 user_sid = 5 [packed = true];</code>
+     */
+    private void addUserSid(int value) {
+      ensureUserSidIsMutable();
+      userSid_.addInt(value);
+    }
+    /**
+     * <pre>
+     * String IDs for usernames. DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint32 user_sid = 5 [packed = true];</code>
+     */
+    private void addAllUserSid(
+        java.lang.Iterable<? extends java.lang.Integer> values) {
+      ensureUserSidIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, userSid_);
+    }
+    /**
+     * <pre>
+     * String IDs for usernames. DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint32 user_sid = 5 [packed = true];</code>
+     */
+    private void clearUserSid() {
+      userSid_ = emptyIntList();
+    }
 
     public static final int VISIBLE_FIELD_NUMBER = 6;
-    private java.util.List<java.lang.Boolean> visible_;
-    /**
-     * <code>repeated bool visible = 6 [packed = true];</code>
-     *
+    private com.google.protobuf.Internal.BooleanList visible_;
+    /**
      * <pre>
      * The visible flag is used to store history information. It indicates that
@@ -6700,13 +6521,12 @@
      * set.
      * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Boolean>
+     *
+     * <code>repeated bool visible = 6 [packed = true];</code>
+     */
+    public java.util.List<java.lang.Boolean>
         getVisibleList() {
       return visible_;
     }
     /**
-     * <code>repeated bool visible = 6 [packed = true];</code>
-     *
      * <pre>
      * The visible flag is used to store history information. It indicates that
@@ -6719,12 +6539,11 @@
      * set.
      * </pre>
-     */
-    @Override
-	public int getVisibleCount() {
+     *
+     * <code>repeated bool visible = 6 [packed = true];</code>
+     */
+    public int getVisibleCount() {
       return visible_.size();
     }
     /**
-     * <code>repeated bool visible = 6 [packed = true];</code>
-     *
      * <pre>
      * The visible flag is used to store history information. It indicates that
@@ -6737,82 +6556,141 @@
      * set.
      * </pre>
-     */
-    @Override
-	public boolean getVisible(int index) {
-      return visible_.get(index);
+     *
+     * <code>repeated bool visible = 6 [packed = true];</code>
+     */
+    public boolean getVisible(int index) {
+      return visible_.getBoolean(index);
     }
     private int visibleMemoizedSerializedSize = -1;
-
-    private void initFields() {
-      version_ = java.util.Collections.emptyList();
-      timestamp_ = java.util.Collections.emptyList();
-      changeset_ = java.util.Collections.emptyList();
-      uid_ = java.util.Collections.emptyList();
-      userSid_ = java.util.Collections.emptyList();
-      visible_ = java.util.Collections.emptyList();
-    }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    private void ensureVisibleIsMutable() {
+      if (!visible_.isModifiable()) {
+        visible_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(visible_);
+       }
+    }
+    /**
+     * <pre>
+     * The visible flag is used to store history information. It indicates that
+     * the current object version has been created by a delete operation on the
+     * OSM API.
+     * When a writer sets this flag, it MUST add a required_features tag with
+     * value "HistoricalInformation" to the HeaderBlock.
+     * If this flag is not available for some object it MUST be assumed to be
+     * true if the file has the required_features tag "HistoricalInformation"
+     * set.
+     * </pre>
+     *
+     * <code>repeated bool visible = 6 [packed = true];</code>
+     */
+    private void setVisible(
+        int index, boolean value) {
+      ensureVisibleIsMutable();
+      visible_.setBoolean(index, value);
+    }
+    /**
+     * <pre>
+     * The visible flag is used to store history information. It indicates that
+     * the current object version has been created by a delete operation on the
+     * OSM API.
+     * When a writer sets this flag, it MUST add a required_features tag with
+     * value "HistoricalInformation" to the HeaderBlock.
+     * If this flag is not available for some object it MUST be assumed to be
+     * true if the file has the required_features tag "HistoricalInformation"
+     * set.
+     * </pre>
+     *
+     * <code>repeated bool visible = 6 [packed = true];</code>
+     */
+    private void addVisible(boolean value) {
+      ensureVisibleIsMutable();
+      visible_.addBoolean(value);
+    }
+    /**
+     * <pre>
+     * The visible flag is used to store history information. It indicates that
+     * the current object version has been created by a delete operation on the
+     * OSM API.
+     * When a writer sets this flag, it MUST add a required_features tag with
+     * value "HistoricalInformation" to the HeaderBlock.
+     * If this flag is not available for some object it MUST be assumed to be
+     * true if the file has the required_features tag "HistoricalInformation"
+     * set.
+     * </pre>
+     *
+     * <code>repeated bool visible = 6 [packed = true];</code>
+     */
+    private void addAllVisible(
+        java.lang.Iterable<? extends java.lang.Boolean> values) {
+      ensureVisibleIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, visible_);
+    }
+    /**
+     * <pre>
+     * The visible flag is used to store history information. It indicates that
+     * the current object version has been created by a delete operation on the
+     * OSM API.
+     * When a writer sets this flag, it MUST add a required_features tag with
+     * value "HistoricalInformation" to the HeaderBlock.
+     * If this flag is not available for some object it MUST be assumed to be
+     * true if the file has the required_features tag "HistoricalInformation"
+     * set.
+     * </pre>
+     *
+     * <code>repeated bool visible = 6 [packed = true];</code>
+     */
+    private void clearVisible() {
+      visible_ = emptyBooleanList();
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
       if (getVersionList().size() > 0) {
-        output.writeRawVarint32(10);
-        output.writeRawVarint32(versionMemoizedSerializedSize);
+        output.writeUInt32NoTag(10);
+        output.writeUInt32NoTag(versionMemoizedSerializedSize);
       }
       for (int i = 0; i < version_.size(); i++) {
-        output.writeInt32NoTag(version_.get(i));
+        output.writeInt32NoTag(version_.getInt(i));
       }
       if (getTimestampList().size() > 0) {
-        output.writeRawVarint32(18);
-        output.writeRawVarint32(timestampMemoizedSerializedSize);
+        output.writeUInt32NoTag(18);
+        output.writeUInt32NoTag(timestampMemoizedSerializedSize);
       }
       for (int i = 0; i < timestamp_.size(); i++) {
-        output.writeSInt64NoTag(timestamp_.get(i));
+        output.writeSInt64NoTag(timestamp_.getLong(i));
       }
       if (getChangesetList().size() > 0) {
-        output.writeRawVarint32(26);
-        output.writeRawVarint32(changesetMemoizedSerializedSize);
+        output.writeUInt32NoTag(26);
+        output.writeUInt32NoTag(changesetMemoizedSerializedSize);
       }
       for (int i = 0; i < changeset_.size(); i++) {
-        output.writeSInt64NoTag(changeset_.get(i));
+        output.writeSInt64NoTag(changeset_.getLong(i));
       }
       if (getUidList().size() > 0) {
-        output.writeRawVarint32(34);
-        output.writeRawVarint32(uidMemoizedSerializedSize);
+        output.writeUInt32NoTag(34);
+        output.writeUInt32NoTag(uidMemoizedSerializedSize);
       }
       for (int i = 0; i < uid_.size(); i++) {
-        output.writeSInt32NoTag(uid_.get(i));
+        output.writeSInt32NoTag(uid_.getInt(i));
       }
       if (getUserSidList().size() > 0) {
-        output.writeRawVarint32(42);
-        output.writeRawVarint32(userSidMemoizedSerializedSize);
+        output.writeUInt32NoTag(42);
+        output.writeUInt32NoTag(userSidMemoizedSerializedSize);
       }
       for (int i = 0; i < userSid_.size(); i++) {
-        output.writeSInt32NoTag(userSid_.get(i));
+        output.writeSInt32NoTag(userSid_.getInt(i));
       }
       if (getVisibleList().size() > 0) {
-        output.writeRawVarint32(50);
-        output.writeRawVarint32(visibleMemoizedSerializedSize);
+        output.writeUInt32NoTag(50);
+        output.writeUInt32NoTag(visibleMemoizedSerializedSize);
       }
       for (int i = 0; i < visible_.size(); i++) {
-        output.writeBoolNoTag(visible_.get(i));
-      }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+        output.writeBoolNoTag(visible_.getBoolean(i));
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -6823,5 +6701,5 @@
         for (int i = 0; i < version_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeInt32SizeNoTag(version_.get(i));
+            .computeInt32SizeNoTag(version_.getInt(i));
         }
         size += dataSize;
@@ -6837,5 +6715,5 @@
         for (int i = 0; i < timestamp_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeSInt64SizeNoTag(timestamp_.get(i));
+            .computeSInt64SizeNoTag(timestamp_.getLong(i));
         }
         size += dataSize;
@@ -6851,5 +6729,5 @@
         for (int i = 0; i < changeset_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeSInt64SizeNoTag(changeset_.get(i));
+            .computeSInt64SizeNoTag(changeset_.getLong(i));
         }
         size += dataSize;
@@ -6865,5 +6743,5 @@
         for (int i = 0; i < uid_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeSInt32SizeNoTag(uid_.get(i));
+            .computeSInt32SizeNoTag(uid_.getInt(i));
         }
         size += dataSize;
@@ -6879,5 +6757,5 @@
         for (int i = 0; i < userSid_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeSInt32SizeNoTag(userSid_.get(i));
+            .computeSInt32SizeNoTag(userSid_.getInt(i));
         }
         size += dataSize;
@@ -6900,20 +6778,27 @@
         visibleMemoizedSerializedSize = dataSize;
       }
-      size += unknownFields.size();
+      size += unknownFields.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 crosby.binary.Osmformat.DenseInfo parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Osmformat.DenseInfo parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Osmformat.DenseInfo parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.DenseInfo parseFrom(
@@ -6921,9 +6806,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.DenseInfo parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.DenseInfo parseFrom(
@@ -6931,9 +6818,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.DenseInfo parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.DenseInfo parseFrom(
@@ -6941,9 +6830,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.DenseInfo parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.DenseInfo parseDelimitedFrom(
@@ -6951,10 +6841,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.DenseInfo parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.DenseInfo parseFrom(
@@ -6962,235 +6853,52 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Osmformat.DenseInfo prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
-
-    /**
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+
+    /**
+     * <pre>
+     ** Optional metadata that may be included into each primitive. Special dense format used in DenseNodes. 
+     * </pre>
+     *
      * Protobuf type {@code OSMPBF.DenseInfo}
-     *
-     * <pre>
-     ** Optional metadata that may be included into each primitive. Special dense format used in DenseNodes.
-     * </pre>
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Osmformat.DenseInfo, Builder>
-        implements
+          crosby.binary.Osmformat.DenseInfo, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.DenseInfo)
         crosby.binary.Osmformat.DenseInfoOrBuilder {
       // Construct using crosby.binary.Osmformat.DenseInfo.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        version_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        timestamp_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000002);
-        changeset_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000004);
-        uid_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000008);
-        userSid_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000010);
-        visible_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000020);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Osmformat.DenseInfo getDefaultInstanceForType() {
-        return crosby.binary.Osmformat.DenseInfo.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Osmformat.DenseInfo build() {
-        crosby.binary.Osmformat.DenseInfo result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Osmformat.DenseInfo buildPartial() {
-        crosby.binary.Osmformat.DenseInfo result = new crosby.binary.Osmformat.DenseInfo(this);
-        int from_bitField0_ = bitField0_;
-        if (((bitField0_ & 0x00000001) == 0x00000001)) {
-          version_ = java.util.Collections.unmodifiableList(version_);
-          bitField0_ = (bitField0_ & ~0x00000001);
-        }
-        result.version_ = version_;
-        if (((bitField0_ & 0x00000002) == 0x00000002)) {
-          timestamp_ = java.util.Collections.unmodifiableList(timestamp_);
-          bitField0_ = (bitField0_ & ~0x00000002);
-        }
-        result.timestamp_ = timestamp_;
-        if (((bitField0_ & 0x00000004) == 0x00000004)) {
-          changeset_ = java.util.Collections.unmodifiableList(changeset_);
-          bitField0_ = (bitField0_ & ~0x00000004);
-        }
-        result.changeset_ = changeset_;
-        if (((bitField0_ & 0x00000008) == 0x00000008)) {
-          uid_ = java.util.Collections.unmodifiableList(uid_);
-          bitField0_ = (bitField0_ & ~0x00000008);
-        }
-        result.uid_ = uid_;
-        if (((bitField0_ & 0x00000010) == 0x00000010)) {
-          userSid_ = java.util.Collections.unmodifiableList(userSid_);
-          bitField0_ = (bitField0_ & ~0x00000010);
-        }
-        result.userSid_ = userSid_;
-        if (((bitField0_ & 0x00000020) == 0x00000020)) {
-          visible_ = java.util.Collections.unmodifiableList(visible_);
-          bitField0_ = (bitField0_ & ~0x00000020);
-        }
-        result.visible_ = visible_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Osmformat.DenseInfo other) {
-        if (other == crosby.binary.Osmformat.DenseInfo.getDefaultInstance()) return this;
-        if (!other.version_.isEmpty()) {
-          if (version_.isEmpty()) {
-            version_ = other.version_;
-            bitField0_ = (bitField0_ & ~0x00000001);
-          } else {
-            ensureVersionIsMutable();
-            version_.addAll(other.version_);
-          }
-
-        }
-        if (!other.timestamp_.isEmpty()) {
-          if (timestamp_.isEmpty()) {
-            timestamp_ = other.timestamp_;
-            bitField0_ = (bitField0_ & ~0x00000002);
-          } else {
-            ensureTimestampIsMutable();
-            timestamp_.addAll(other.timestamp_);
-          }
-
-        }
-        if (!other.changeset_.isEmpty()) {
-          if (changeset_.isEmpty()) {
-            changeset_ = other.changeset_;
-            bitField0_ = (bitField0_ & ~0x00000004);
-          } else {
-            ensureChangesetIsMutable();
-            changeset_.addAll(other.changeset_);
-          }
-
-        }
-        if (!other.uid_.isEmpty()) {
-          if (uid_.isEmpty()) {
-            uid_ = other.uid_;
-            bitField0_ = (bitField0_ & ~0x00000008);
-          } else {
-            ensureUidIsMutable();
-            uid_.addAll(other.uid_);
-          }
-
-        }
-        if (!other.userSid_.isEmpty()) {
-          if (userSid_.isEmpty()) {
-            userSid_ = other.userSid_;
-            bitField0_ = (bitField0_ & ~0x00000010);
-          } else {
-            ensureUserSidIsMutable();
-            userSid_.addAll(other.userSid_);
-          }
-
-        }
-        if (!other.visible_.isEmpty()) {
-          if (visible_.isEmpty()) {
-            visible_ = other.visible_;
-            bitField0_ = (bitField0_ & ~0x00000020);
-          } else {
-            ensureVisibleIsMutable();
-            visible_.addAll(other.visible_);
-          }
-
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Osmformat.DenseInfo parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Osmformat.DenseInfo) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<java.lang.Integer> version_ = java.util.Collections.emptyList();
-      private void ensureVersionIsMutable() {
-        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
-          version_ = new java.util.ArrayList<>(version_);
-          bitField0_ |= 0x00000001;
-         }
-      }
+        super(DEFAULT_INSTANCE);
+      }
+
+
       /**
        * <code>repeated int32 version = 1 [packed = true];</code>
        */
-      @Override
-	public java.util.List<java.lang.Integer>
+      public java.util.List<java.lang.Integer>
           getVersionList() {
-        return java.util.Collections.unmodifiableList(version_);
+        return java.util.Collections.unmodifiableList(
+            instance.getVersionList());
       }
       /**
        * <code>repeated int32 version = 1 [packed = true];</code>
        */
-      @Override
-	public int getVersionCount() {
-        return version_.size();
+      public int getVersionCount() {
+        return instance.getVersionCount();
       }
       /**
        * <code>repeated int32 version = 1 [packed = true];</code>
        */
-      @Override
-	public int getVersion(int index) {
-        return version_.get(index);
+      public int getVersion(int index) {
+        return instance.getVersion(index);
       }
       /**
@@ -7199,7 +6907,6 @@
       public Builder setVersion(
           int index, int value) {
-        ensureVersionIsMutable();
-        version_.set(index, value);
-
+        copyOnWrite();
+        instance.setVersion(index, value);
         return this;
       }
@@ -7208,7 +6915,6 @@
        */
       public Builder addVersion(int value) {
-        ensureVersionIsMutable();
-        version_.add(value);
-
+        copyOnWrite();
+        instance.addVersion(value);
         return this;
       }
@@ -7218,8 +6924,6 @@
       public Builder addAllVersion(
           java.lang.Iterable<? extends java.lang.Integer> values) {
-        ensureVersionIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, version_);
-
+        copyOnWrite();
+        instance.addAllVersion(values);
         return this;
       }
@@ -7228,408 +6932,342 @@
        */
       public Builder clearVersion() {
-        version_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Long> timestamp_ = java.util.Collections.emptyList();
-      private void ensureTimestampIsMutable() {
-        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          timestamp_ = new java.util.ArrayList<>(timestamp_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-      /**
+        copyOnWrite();
+        instance.clearVersion();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 timestamp = 2 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Long>
+          getTimestampList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getTimestampList());
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Long>
-          getTimestampList() {
-        return java.util.Collections.unmodifiableList(timestamp_);
-      }
-      /**
+       *
        * <code>repeated sint64 timestamp = 2 [packed = true];</code>
-       *
+       */
+      public int getTimestampCount() {
+        return instance.getTimestampCount();
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public int getTimestampCount() {
-        return timestamp_.size();
-      }
-      /**
+       *
        * <code>repeated sint64 timestamp = 2 [packed = true];</code>
-       *
+       */
+      public long getTimestamp(int index) {
+        return instance.getTimestamp(index);
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public long getTimestamp(int index) {
-        return timestamp_.get(index);
-      }
-      /**
+       *
        * <code>repeated sint64 timestamp = 2 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder setTimestamp(
           int index, long value) {
-        ensureTimestampIsMutable();
-        timestamp_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setTimestamp(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 timestamp = 2 [packed = true];</code>
-       *
+       */
+      public Builder addTimestamp(long value) {
+        copyOnWrite();
+        instance.addTimestamp(value);
+        return this;
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      public Builder addTimestamp(long value) {
-        ensureTimestampIsMutable();
-        timestamp_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated sint64 timestamp = 2 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder addAllTimestamp(
           java.lang.Iterable<? extends java.lang.Long> values) {
-        ensureTimestampIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, timestamp_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllTimestamp(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 timestamp = 2 [packed = true];</code>
-       *
+       */
+      public Builder clearTimestamp() {
+        copyOnWrite();
+        instance.clearTimestamp();
+        return this;
+      }
+
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      public Builder clearTimestamp() {
-        timestamp_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000002);
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Long> changeset_ = java.util.Collections.emptyList();
-      private void ensureChangesetIsMutable() {
-        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
-          changeset_ = new java.util.ArrayList<>(changeset_);
-          bitField0_ |= 0x00000004;
-         }
-      }
-      /**
+       *
        * <code>repeated sint64 changeset = 3 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Long>
+          getChangesetList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getChangesetList());
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Long>
-          getChangesetList() {
-        return java.util.Collections.unmodifiableList(changeset_);
-      }
-      /**
+       *
        * <code>repeated sint64 changeset = 3 [packed = true];</code>
-       *
+       */
+      public int getChangesetCount() {
+        return instance.getChangesetCount();
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public int getChangesetCount() {
-        return changeset_.size();
-      }
-      /**
+       *
        * <code>repeated sint64 changeset = 3 [packed = true];</code>
-       *
+       */
+      public long getChangeset(int index) {
+        return instance.getChangeset(index);
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public long getChangeset(int index) {
-        return changeset_.get(index);
-      }
-      /**
+       *
        * <code>repeated sint64 changeset = 3 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder setChangeset(
           int index, long value) {
-        ensureChangesetIsMutable();
-        changeset_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setChangeset(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 changeset = 3 [packed = true];</code>
-       *
+       */
+      public Builder addChangeset(long value) {
+        copyOnWrite();
+        instance.addChangeset(value);
+        return this;
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      public Builder addChangeset(long value) {
-        ensureChangesetIsMutable();
-        changeset_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated sint64 changeset = 3 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder addAllChangeset(
           java.lang.Iterable<? extends java.lang.Long> values) {
-        ensureChangesetIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, changeset_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllChangeset(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 changeset = 3 [packed = true];</code>
-       *
+       */
+      public Builder clearChangeset() {
+        copyOnWrite();
+        instance.clearChangeset();
+        return this;
+      }
+
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      public Builder clearChangeset() {
-        changeset_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000004);
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> uid_ = java.util.Collections.emptyList();
-      private void ensureUidIsMutable() {
-        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
-          uid_ = new java.util.ArrayList<>(uid_);
-          bitField0_ |= 0x00000008;
-         }
-      }
-      /**
+       *
        * <code>repeated sint32 uid = 4 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Integer>
+          getUidList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getUidList());
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Integer>
-          getUidList() {
-        return java.util.Collections.unmodifiableList(uid_);
-      }
-      /**
+       *
        * <code>repeated sint32 uid = 4 [packed = true];</code>
-       *
+       */
+      public int getUidCount() {
+        return instance.getUidCount();
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public int getUidCount() {
-        return uid_.size();
-      }
-      /**
+       *
        * <code>repeated sint32 uid = 4 [packed = true];</code>
-       *
+       */
+      public int getUid(int index) {
+        return instance.getUid(index);
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public int getUid(int index) {
-        return uid_.get(index);
-      }
-      /**
+       *
        * <code>repeated sint32 uid = 4 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder setUid(
           int index, int value) {
-        ensureUidIsMutable();
-        uid_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setUid(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint32 uid = 4 [packed = true];</code>
-       *
+       */
+      public Builder addUid(int value) {
+        copyOnWrite();
+        instance.addUid(value);
+        return this;
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      public Builder addUid(int value) {
-        ensureUidIsMutable();
-        uid_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated sint32 uid = 4 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder addAllUid(
           java.lang.Iterable<? extends java.lang.Integer> values) {
-        ensureUidIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, uid_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllUid(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint32 uid = 4 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder clearUid() {
-        uid_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000008);
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> userSid_ = java.util.Collections.emptyList();
-      private void ensureUserSidIsMutable() {
-        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
-          userSid_ = new java.util.ArrayList<>(userSid_);
-          bitField0_ |= 0x00000010;
-         }
-      }
-      /**
+        copyOnWrite();
+        instance.clearUid();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * String IDs for usernames. DELTA coded
+       * </pre>
+       *
        * <code>repeated sint32 user_sid = 5 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Integer>
+          getUserSidList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getUserSidList());
+      }
+      /**
        * <pre>
        * String IDs for usernames. DELTA coded
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Integer>
-          getUserSidList() {
-        return java.util.Collections.unmodifiableList(userSid_);
-      }
-      /**
+       *
        * <code>repeated sint32 user_sid = 5 [packed = true];</code>
-       *
+       */
+      public int getUserSidCount() {
+        return instance.getUserSidCount();
+      }
+      /**
        * <pre>
        * String IDs for usernames. DELTA coded
        * </pre>
-       */
-      @Override
-	public int getUserSidCount() {
-        return userSid_.size();
-      }
-      /**
+       *
        * <code>repeated sint32 user_sid = 5 [packed = true];</code>
-       *
+       */
+      public int getUserSid(int index) {
+        return instance.getUserSid(index);
+      }
+      /**
        * <pre>
        * String IDs for usernames. DELTA coded
        * </pre>
-       */
-      @Override
-	public int getUserSid(int index) {
-        return userSid_.get(index);
-      }
-      /**
+       *
        * <code>repeated sint32 user_sid = 5 [packed = true];</code>
-       *
-       * <pre>
-       * String IDs for usernames. DELTA coded
-       * </pre>
        */
       public Builder setUserSid(
           int index, int value) {
-        ensureUserSidIsMutable();
-        userSid_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setUserSid(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * String IDs for usernames. DELTA coded
+       * </pre>
+       *
        * <code>repeated sint32 user_sid = 5 [packed = true];</code>
-       *
+       */
+      public Builder addUserSid(int value) {
+        copyOnWrite();
+        instance.addUserSid(value);
+        return this;
+      }
+      /**
        * <pre>
        * String IDs for usernames. DELTA coded
        * </pre>
-       */
-      public Builder addUserSid(int value) {
-        ensureUserSidIsMutable();
-        userSid_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated sint32 user_sid = 5 [packed = true];</code>
-       *
-       * <pre>
-       * String IDs for usernames. DELTA coded
-       * </pre>
        */
       public Builder addAllUserSid(
           java.lang.Iterable<? extends java.lang.Integer> values) {
-        ensureUserSidIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, userSid_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllUserSid(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * String IDs for usernames. DELTA coded
+       * </pre>
+       *
        * <code>repeated sint32 user_sid = 5 [packed = true];</code>
-       *
-       * <pre>
-       * String IDs for usernames. DELTA coded
-       * </pre>
        */
       public Builder clearUserSid() {
-        userSid_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000010);
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Boolean> visible_ = java.util.Collections.emptyList();
-      private void ensureVisibleIsMutable() {
-        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
-          visible_ = new java.util.ArrayList<>(visible_);
-          bitField0_ |= 0x00000020;
-         }
-      }
-      /**
-       * <code>repeated bool visible = 6 [packed = true];</code>
-       *
+        copyOnWrite();
+        instance.clearUserSid();
+        return this;
+      }
+
+      /**
        * <pre>
        * The visible flag is used to store history information. It indicates that
@@ -7642,13 +7280,13 @@
        * set.
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Boolean>
+       *
+       * <code>repeated bool visible = 6 [packed = true];</code>
+       */
+      public java.util.List<java.lang.Boolean>
           getVisibleList() {
-        return java.util.Collections.unmodifiableList(visible_);
-      }
-      /**
-       * <code>repeated bool visible = 6 [packed = true];</code>
-       *
+        return java.util.Collections.unmodifiableList(
+            instance.getVisibleList());
+      }
+      /**
        * <pre>
        * The visible flag is used to store history information. It indicates that
@@ -7661,12 +7299,11 @@
        * set.
        * </pre>
-       */
-      @Override
-	public int getVisibleCount() {
-        return visible_.size();
-      }
-      /**
+       *
        * <code>repeated bool visible = 6 [packed = true];</code>
-       *
+       */
+      public int getVisibleCount() {
+        return instance.getVisibleCount();
+      }
+      /**
        * <pre>
        * The visible flag is used to store history information. It indicates that
@@ -7679,12 +7316,11 @@
        * set.
        * </pre>
-       */
-      @Override
-	public boolean getVisible(int index) {
-        return visible_.get(index);
-      }
-      /**
+       *
        * <code>repeated bool visible = 6 [packed = true];</code>
-       *
+       */
+      public boolean getVisible(int index) {
+        return instance.getVisible(index);
+      }
+      /**
        * <pre>
        * The visible flag is used to store history information. It indicates that
@@ -7697,15 +7333,14 @@
        * set.
        * </pre>
+       *
+       * <code>repeated bool visible = 6 [packed = true];</code>
        */
       public Builder setVisible(
           int index, boolean value) {
-        ensureVisibleIsMutable();
-        visible_.set(index, value);
-
-        return this;
-      }
-      /**
-       * <code>repeated bool visible = 6 [packed = true];</code>
-       *
+        copyOnWrite();
+        instance.setVisible(index, value);
+        return this;
+      }
+      /**
        * <pre>
        * The visible flag is used to store history information. It indicates that
@@ -7718,14 +7353,13 @@
        * set.
        * </pre>
+       *
+       * <code>repeated bool visible = 6 [packed = true];</code>
        */
       public Builder addVisible(boolean value) {
-        ensureVisibleIsMutable();
-        visible_.add(value);
-
-        return this;
-      }
-      /**
-       * <code>repeated bool visible = 6 [packed = true];</code>
-       *
+        copyOnWrite();
+        instance.addVisible(value);
+        return this;
+      }
+      /**
        * <pre>
        * The visible flag is used to store history information. It indicates that
@@ -7738,16 +7372,14 @@
        * set.
        * </pre>
+       *
+       * <code>repeated bool visible = 6 [packed = true];</code>
        */
       public Builder addAllVisible(
           java.lang.Iterable<? extends java.lang.Boolean> values) {
-        ensureVisibleIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, visible_);
-
-        return this;
-      }
-      /**
-       * <code>repeated bool visible = 6 [packed = true];</code>
-       *
+        copyOnWrite();
+        instance.addAllVisible(values);
+        return this;
+      }
+      /**
        * <pre>
        * The visible flag is used to store history information. It indicates that
@@ -7760,9 +7392,10 @@
        * set.
        * </pre>
+       *
+       * <code>repeated bool visible = 6 [packed = true];</code>
        */
       public Builder clearVisible() {
-        visible_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000020);
-
+        copyOnWrite();
+        instance.clearVisible();
         return this;
       }
@@ -7770,11 +7403,232 @@
       // @@protoc_insertion_point(builder_scope:OSMPBF.DenseInfo)
     }
-
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Osmformat.DenseInfo();
+        }
+        case IS_INITIALIZED: {
+          return DEFAULT_INSTANCE;
+        }
+        case MAKE_IMMUTABLE: {
+          version_.makeImmutable();
+          timestamp_.makeImmutable();
+          changeset_.makeImmutable();
+          uid_.makeImmutable();
+          userSid_.makeImmutable();
+          visible_.makeImmutable();
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Osmformat.DenseInfo other = (crosby.binary.Osmformat.DenseInfo) arg1;
+          version_= visitor.visitIntList(version_, other.version_);
+          timestamp_= visitor.visitLongList(timestamp_, other.timestamp_);
+          changeset_= visitor.visitLongList(changeset_, other.changeset_);
+          uid_= visitor.visitIntList(uid_, other.uid_);
+          userSid_= visitor.visitIntList(userSid_, other.userSid_);
+          visible_= visitor.visitBooleanList(visible_, other.visible_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+          }
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  if (!version_.isModifiable()) {
+                    version_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(version_);
+                  }
+                  version_.addInt(input.readInt32());
+                  break;
+                }
+                case 10: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!version_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    version_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(version_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    version_.addInt(input.readInt32());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 16: {
+                  if (!timestamp_.isModifiable()) {
+                    timestamp_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(timestamp_);
+                  }
+                  timestamp_.addLong(input.readSInt64());
+                  break;
+                }
+                case 18: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!timestamp_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    timestamp_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(timestamp_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    timestamp_.addLong(input.readSInt64());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 24: {
+                  if (!changeset_.isModifiable()) {
+                    changeset_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(changeset_);
+                  }
+                  changeset_.addLong(input.readSInt64());
+                  break;
+                }
+                case 26: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!changeset_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    changeset_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(changeset_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    changeset_.addLong(input.readSInt64());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 32: {
+                  if (!uid_.isModifiable()) {
+                    uid_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(uid_);
+                  }
+                  uid_.addInt(input.readSInt32());
+                  break;
+                }
+                case 34: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!uid_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    uid_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(uid_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    uid_.addInt(input.readSInt32());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 40: {
+                  if (!userSid_.isModifiable()) {
+                    userSid_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(userSid_);
+                  }
+                  userSid_.addInt(input.readSInt32());
+                  break;
+                }
+                case 42: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!userSid_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    userSid_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(userSid_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    userSid_.addInt(input.readSInt32());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 48: {
+                  if (!visible_.isModifiable()) {
+                    visible_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(visible_);
+                  }
+                  visible_.addBoolean(input.readBool());
+                  break;
+                }
+                case 50: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!visible_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    final int currentSize = visible_.size();
+                    visible_ = visible_.mutableCopyWithCapacity(
+                        currentSize + (length/1));
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    visible_.addBoolean(input.readBool());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Osmformat.DenseInfo.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.DenseInfo)
+    private static final crosby.binary.Osmformat.DenseInfo DEFAULT_INSTANCE;
     static {
-      defaultInstance = new DenseInfo(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.DenseInfo)
+      DEFAULT_INSTANCE = new DenseInfo();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Osmformat.DenseInfo getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<DenseInfo> PARSER;
+
+    public static com.google.protobuf.Parser<DenseInfo> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
@@ -7784,8 +7638,6 @@
 
     /**
-     * <code>required int64 id = 1;</code>
-     *
-     * <pre>
-     *
+     * <pre>
+     *   
      *   // Parallel arrays.
      *   repeated uint32 keys = 2 [packed = true]; // String IDs.
@@ -7793,11 +7645,11 @@
      *   optional Info info = 4;
      * </pre>
+     *
+     * <code>required int64 id = 1;</code>
      */
     boolean hasId();
     /**
-     * <code>required int64 id = 1;</code>
-     *
-     * <pre>
-     *
+     * <pre>
+     *   
      *   // Parallel arrays.
      *   repeated uint32 keys = 2 [packed = true]; // String IDs.
@@ -7805,110 +7657,30 @@
      *   optional Info info = 4;
      * </pre>
+     *
+     * <code>required int64 id = 1;</code>
      */
     long getId();
   }
   /**
-   * Protobuf type {@code OSMPBF.ChangeSet}
-   *
    * <pre>
    * THIS IS STUB DESIGN FOR CHANGESETS. NOT USED RIGHT NOW.
    * TODO:    REMOVE THIS?
    * </pre>
+   *
+   * Protobuf type {@code OSMPBF.ChangeSet}
    */
-  public static final class ChangeSet extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class ChangeSet extends
+      com.google.protobuf.GeneratedMessageLite<
+          ChangeSet, ChangeSet.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.ChangeSet)
       ChangeSetOrBuilder {
-    // Use ChangeSet.newBuilder() to construct.
-    private ChangeSet(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private ChangeSet(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final ChangeSet defaultInstance;
-    public static ChangeSet getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public ChangeSet getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private ChangeSet(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 8: {
-              bitField0_ |= 0x00000001;
-              id_ = input.readInt64();
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<ChangeSet> PARSER =
-        new com.google.protobuf.AbstractParser<ChangeSet>() {
-      @Override
-	public ChangeSet parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ChangeSet(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<ChangeSet> getParserForType() {
-      return PARSER;
-    }
-
+    private ChangeSet() {
+    }
     private int bitField0_;
     public static final int ID_FIELD_NUMBER = 1;
     private long id_;
     /**
-     * <code>required int64 id = 1;</code>
-     *
-     * <pre>
-     *
+     * <pre>
+     *   
      *   // Parallel arrays.
      *   repeated uint32 keys = 2 [packed = true]; // String IDs.
@@ -7916,14 +7688,13 @@
      *   optional Info info = 4;
      * </pre>
-     */
-    @Override
-	public boolean hasId() {
+     *
+     * <code>required int64 id = 1;</code>
+     */
+    public boolean hasId() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
     /**
-     * <code>required int64 id = 1;</code>
-     *
-     * <pre>
-     *
+     * <pre>
+     *   
      *   // Parallel arrays.
      *   repeated uint32 keys = 2 [packed = true]; // String IDs.
@@ -7931,41 +7702,50 @@
      *   optional Info info = 4;
      * </pre>
-     */
-    @Override
-	public long getId() {
+     *
+     * <code>required int64 id = 1;</code>
+     */
+    public long getId() {
       return id_;
     }
-
-    private void initFields() {
+    /**
+     * <pre>
+     *   
+     *   // Parallel arrays.
+     *   repeated uint32 keys = 2 [packed = true]; // String IDs.
+     *   repeated uint32 vals = 3 [packed = true]; // String IDs.
+     *   optional Info info = 4;
+     * </pre>
+     *
+     * <code>required int64 id = 1;</code>
+     */
+    private void setId(long value) {
+      bitField0_ |= 0x00000001;
+      id_ = value;
+    }
+    /**
+     * <pre>
+     *   
+     *   // Parallel arrays.
+     *   repeated uint32 keys = 2 [packed = true]; // String IDs.
+     *   repeated uint32 vals = 3 [packed = true]; // String IDs.
+     *   optional Info info = 4;
+     * </pre>
+     *
+     * <code>required int64 id = 1;</code>
+     */
+    private void clearId() {
+      bitField0_ = (bitField0_ & ~0x00000001);
       id_ = 0L;
     }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      if (!hasId()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeInt64(1, id_);
       }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -7976,20 +7756,27 @@
           .computeInt64Size(1, id_);
       }
-      size += unknownFields.size();
+      size += unknownFields.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 crosby.binary.Osmformat.ChangeSet parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Osmformat.ChangeSet parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Osmformat.ChangeSet parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.ChangeSet parseFrom(
@@ -7997,9 +7784,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.ChangeSet parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.ChangeSet parseFrom(
@@ -8007,9 +7796,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.ChangeSet parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.ChangeSet parseFrom(
@@ -8017,9 +7808,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.ChangeSet parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.ChangeSet parseDelimitedFrom(
@@ -8027,10 +7819,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.ChangeSet parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.ChangeSet parseFrom(
@@ -8038,127 +7831,37 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Osmformat.ChangeSet prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
-
-    /**
-     * Protobuf type {@code OSMPBF.ChangeSet}
-     *
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+
+    /**
      * <pre>
      * THIS IS STUB DESIGN FOR CHANGESETS. NOT USED RIGHT NOW.
      * TODO:    REMOVE THIS?
      * </pre>
+     *
+     * Protobuf type {@code OSMPBF.ChangeSet}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Osmformat.ChangeSet, Builder>
-        implements
+          crosby.binary.Osmformat.ChangeSet, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.ChangeSet)
         crosby.binary.Osmformat.ChangeSetOrBuilder {
       // Construct using crosby.binary.Osmformat.ChangeSet.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        id_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Osmformat.ChangeSet getDefaultInstanceForType() {
-        return crosby.binary.Osmformat.ChangeSet.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Osmformat.ChangeSet build() {
-        crosby.binary.Osmformat.ChangeSet result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Osmformat.ChangeSet buildPartial() {
-        crosby.binary.Osmformat.ChangeSet result = new crosby.binary.Osmformat.ChangeSet(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.id_ = id_;
-        result.bitField0_ = to_bitField0_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Osmformat.ChangeSet other) {
-        if (other == crosby.binary.Osmformat.ChangeSet.getDefaultInstance()) return this;
-        if (other.hasId()) {
-          setId(other.getId());
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        if (!hasId()) {
-
-          return false;
-        }
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Osmformat.ChangeSet parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Osmformat.ChangeSet) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private long id_ ;
-      /**
-       * <code>required int64 id = 1;</code>
-       *
-       * <pre>
-       *
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <pre>
+       *   
        *   // Parallel arrays.
        *   repeated uint32 keys = 2 [packed = true]; // String IDs.
@@ -8166,14 +7869,13 @@
        *   optional Info info = 4;
        * </pre>
-       */
-      @Override
-	public boolean hasId() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
+       *
        * <code>required int64 id = 1;</code>
-       *
-       * <pre>
-       *
+       */
+      public boolean hasId() {
+        return instance.hasId();
+      }
+      /**
+       * <pre>
+       *   
        *   // Parallel arrays.
        *   repeated uint32 keys = 2 [packed = true]; // String IDs.
@@ -8181,14 +7883,13 @@
        *   optional Info info = 4;
        * </pre>
-       */
-      @Override
-	public long getId() {
-        return id_;
-      }
-      /**
+       *
        * <code>required int64 id = 1;</code>
-       *
-       * <pre>
-       *
+       */
+      public long getId() {
+        return instance.getId();
+      }
+      /**
+       * <pre>
+       *   
        *   // Parallel arrays.
        *   repeated uint32 keys = 2 [packed = true]; // String IDs.
@@ -8196,16 +7897,15 @@
        *   optional Info info = 4;
        * </pre>
+       *
+       * <code>required int64 id = 1;</code>
        */
       public Builder setId(long value) {
-        bitField0_ |= 0x00000001;
-        id_ = value;
-
-        return this;
-      }
-      /**
-       * <code>required int64 id = 1;</code>
-       *
-       * <pre>
-       *
+        copyOnWrite();
+        instance.setId(value);
+        return this;
+      }
+      /**
+       * <pre>
+       *   
        *   // Parallel arrays.
        *   repeated uint32 keys = 2 [packed = true]; // String IDs.
@@ -8213,9 +7913,10 @@
        *   optional Info info = 4;
        * </pre>
+       *
+       * <code>required int64 id = 1;</code>
        */
       public Builder clearId() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        id_ = 0L;
-
+        copyOnWrite();
+        instance.clearId();
         return this;
       }
@@ -8223,11 +7924,116 @@
       // @@protoc_insertion_point(builder_scope:OSMPBF.ChangeSet)
     }
-
+    private byte memoizedIsInitialized = -1;
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Osmformat.ChangeSet();
+        }
+        case IS_INITIALIZED: {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized == 1) return DEFAULT_INSTANCE;
+          if (isInitialized == 0) return null;
+
+          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
+          if (!hasId()) {
+            if (shouldMemoize) {
+              memoizedIsInitialized = 0;
+            }
+            return null;
+          }
+          if (shouldMemoize) memoizedIsInitialized = 1;
+          return DEFAULT_INSTANCE;
+
+        }
+        case MAKE_IMMUTABLE: {
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Osmformat.ChangeSet other = (crosby.binary.Osmformat.ChangeSet) arg1;
+          id_ = visitor.visitLong(
+              hasId(), id_,
+              other.hasId(), other.id_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+            bitField0_ |= other.bitField0_;
+          }
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  bitField0_ |= 0x00000001;
+                  id_ = input.readInt64();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Osmformat.ChangeSet.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.ChangeSet)
+    private static final crosby.binary.Osmformat.ChangeSet DEFAULT_INSTANCE;
     static {
-      defaultInstance = new ChangeSet(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.ChangeSet)
+      DEFAULT_INSTANCE = new ChangeSet();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Osmformat.ChangeSet getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<ChangeSet> PARSER;
+
+    public static com.google.protobuf.Parser<ChangeSet> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
@@ -8246,67 +8052,67 @@
 
     /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Integer> getKeysList();
+    /**
      * <pre>
      * Parallel arrays.
      * </pre>
-     */
-    java.util.List<java.lang.Integer> getKeysList();
-    /**
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
+     */
+    int getKeysCount();
+    /**
      * <pre>
      * Parallel arrays.
      * </pre>
-     */
-    int getKeysCount();
-    /**
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
-     * <pre>
-     * Parallel arrays.
-     * </pre>
      */
     int getKeys(int index);
 
     /**
+     * <pre>
+     * String IDs.
+     * </pre>
+     *
      * <code>repeated uint32 vals = 3 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Integer> getValsList();
+    /**
      * <pre>
      * String IDs.
      * </pre>
-     */
-    java.util.List<java.lang.Integer> getValsList();
-    /**
+     *
      * <code>repeated uint32 vals = 3 [packed = true];</code>
-     *
+     */
+    int getValsCount();
+    /**
      * <pre>
      * String IDs.
      * </pre>
-     */
-    int getValsCount();
-    /**
+     *
      * <code>repeated uint32 vals = 3 [packed = true];</code>
-     *
-     * <pre>
-     * String IDs.
-     * </pre>
      */
     int getVals(int index);
 
     /**
+     * <pre>
+     * May be omitted in omitmeta
+     * </pre>
+     *
      * <code>optional .OSMPBF.Info info = 4;</code>
-     *
+     */
+    boolean hasInfo();
+    /**
      * <pre>
      * May be omitted in omitmeta
      * </pre>
-     */
-    boolean hasInfo();
-    /**
+     *
      * <code>optional .OSMPBF.Info info = 4;</code>
-     *
-     * <pre>
-     * May be omitted in omitmeta
-     * </pre>
      */
     crosby.binary.Osmformat.Info getInfo();
@@ -8333,162 +8139,13 @@
    * Protobuf type {@code OSMPBF.Node}
    */
-  public static final class Node extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class Node extends
+      com.google.protobuf.GeneratedMessageLite<
+          Node, Node.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.Node)
       NodeOrBuilder {
-    // Use Node.newBuilder() to construct.
-    private Node(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private Node(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final Node defaultInstance;
-    public static Node getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public Node getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private Node(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 8: {
-              bitField0_ |= 0x00000001;
-              id_ = input.readSInt64();
-              break;
-            }
-            case 16: {
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                keys_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              keys_.add(input.readUInt32());
-              break;
-            }
-            case 18: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
-                keys_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                keys_.add(input.readUInt32());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 24: {
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-                vals_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              vals_.add(input.readUInt32());
-              break;
-            }
-            case 26: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
-                vals_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                vals_.add(input.readUInt32());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 34: {
-              crosby.binary.Osmformat.Info.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000002) == 0x00000002)) {
-                subBuilder = info_.toBuilder();
-              }
-              info_ = input.readMessage(crosby.binary.Osmformat.Info.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(info_);
-                info_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000002;
-              break;
-            }
-            case 64: {
-              bitField0_ |= 0x00000004;
-              lat_ = input.readSInt64();
-              break;
-            }
-            case 72: {
-              bitField0_ |= 0x00000008;
-              lon_ = input.readSInt64();
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-          keys_ = java.util.Collections.unmodifiableList(keys_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-          vals_ = java.util.Collections.unmodifiableList(vals_);
-        }
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<Node> PARSER =
-        new com.google.protobuf.AbstractParser<Node>() {
-      @Override
-	public Node parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Node(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<Node> getParserForType() {
-      return PARSER;
-    }
-
+    private Node() {
+      keys_ = emptyIntList();
+      vals_ = emptyIntList();
+    }
     private int bitField0_;
     public static final int ID_FIELD_NUMBER = 1;
@@ -8497,6 +8154,5 @@
      * <code>required sint64 id = 1;</code>
      */
-    @Override
-	public boolean hasId() {
+    public boolean hasId() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -8504,108 +8160,270 @@
      * <code>required sint64 id = 1;</code>
      */
-    @Override
-	public long getId() {
+    public long getId() {
       return id_;
     }
+    /**
+     * <code>required sint64 id = 1;</code>
+     */
+    private void setId(long value) {
+      bitField0_ |= 0x00000001;
+      id_ = value;
+    }
+    /**
+     * <code>required sint64 id = 1;</code>
+     */
+    private void clearId() {
+      bitField0_ = (bitField0_ & ~0x00000001);
+      id_ = 0L;
+    }
 
     public static final int KEYS_FIELD_NUMBER = 2;
-    private java.util.List<java.lang.Integer> keys_;
-    /**
+    private com.google.protobuf.Internal.IntList keys_;
+    /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
-     * <pre>
-     * Parallel arrays.
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Integer>
+     */
+    public java.util.List<java.lang.Integer>
         getKeysList() {
       return keys_;
     }
     /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
+     */
+    public int getKeysCount() {
+      return keys_.size();
+    }
+    /**
      * <pre>
      * Parallel arrays.
      * </pre>
-     */
-    @Override
-	public int getKeysCount() {
-      return keys_.size();
-    }
-    /**
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
+     */
+    public int getKeys(int index) {
+      return keys_.getInt(index);
+    }
+    private int keysMemoizedSerializedSize = -1;
+    private void ensureKeysIsMutable() {
+      if (!keys_.isModifiable()) {
+        keys_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(keys_);
+       }
+    }
+    /**
      * <pre>
      * Parallel arrays.
      * </pre>
-     */
-    @Override
-	public int getKeys(int index) {
-      return keys_.get(index);
-    }
-    private int keysMemoizedSerializedSize = -1;
+     *
+     * <code>repeated uint32 keys = 2 [packed = true];</code>
+     */
+    private void setKeys(
+        int index, int value) {
+      ensureKeysIsMutable();
+      keys_.setInt(index, value);
+    }
+    /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
+     * <code>repeated uint32 keys = 2 [packed = true];</code>
+     */
+    private void addKeys(int value) {
+      ensureKeysIsMutable();
+      keys_.addInt(value);
+    }
+    /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
+     * <code>repeated uint32 keys = 2 [packed = true];</code>
+     */
+    private void addAllKeys(
+        java.lang.Iterable<? extends java.lang.Integer> values) {
+      ensureKeysIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, keys_);
+    }
+    /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
+     * <code>repeated uint32 keys = 2 [packed = true];</code>
+     */
+    private void clearKeys() {
+      keys_ = emptyIntList();
+    }
 
     public static final int VALS_FIELD_NUMBER = 3;
-    private java.util.List<java.lang.Integer> vals_;
-    /**
+    private com.google.protobuf.Internal.IntList vals_;
+    /**
+     * <pre>
+     * String IDs.
+     * </pre>
+     *
      * <code>repeated uint32 vals = 3 [packed = true];</code>
-     *
-     * <pre>
-     * String IDs.
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Integer>
+     */
+    public java.util.List<java.lang.Integer>
         getValsList() {
       return vals_;
     }
     /**
+     * <pre>
+     * String IDs.
+     * </pre>
+     *
      * <code>repeated uint32 vals = 3 [packed = true];</code>
-     *
+     */
+    public int getValsCount() {
+      return vals_.size();
+    }
+    /**
      * <pre>
      * String IDs.
      * </pre>
-     */
-    @Override
-	public int getValsCount() {
-      return vals_.size();
-    }
-    /**
+     *
      * <code>repeated uint32 vals = 3 [packed = true];</code>
-     *
+     */
+    public int getVals(int index) {
+      return vals_.getInt(index);
+    }
+    private int valsMemoizedSerializedSize = -1;
+    private void ensureValsIsMutable() {
+      if (!vals_.isModifiable()) {
+        vals_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(vals_);
+       }
+    }
+    /**
      * <pre>
      * String IDs.
      * </pre>
-     */
-    @Override
-	public int getVals(int index) {
-      return vals_.get(index);
-    }
-    private int valsMemoizedSerializedSize = -1;
+     *
+     * <code>repeated uint32 vals = 3 [packed = true];</code>
+     */
+    private void setVals(
+        int index, int value) {
+      ensureValsIsMutable();
+      vals_.setInt(index, value);
+    }
+    /**
+     * <pre>
+     * String IDs.
+     * </pre>
+     *
+     * <code>repeated uint32 vals = 3 [packed = true];</code>
+     */
+    private void addVals(int value) {
+      ensureValsIsMutable();
+      vals_.addInt(value);
+    }
+    /**
+     * <pre>
+     * String IDs.
+     * </pre>
+     *
+     * <code>repeated uint32 vals = 3 [packed = true];</code>
+     */
+    private void addAllVals(
+        java.lang.Iterable<? extends java.lang.Integer> values) {
+      ensureValsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, vals_);
+    }
+    /**
+     * <pre>
+     * String IDs.
+     * </pre>
+     *
+     * <code>repeated uint32 vals = 3 [packed = true];</code>
+     */
+    private void clearVals() {
+      vals_ = emptyIntList();
+    }
 
     public static final int INFO_FIELD_NUMBER = 4;
     private crosby.binary.Osmformat.Info info_;
     /**
+     * <pre>
+     * May be omitted in omitmeta
+     * </pre>
+     *
      * <code>optional .OSMPBF.Info info = 4;</code>
-     *
+     */
+    public boolean hasInfo() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
      * <pre>
      * May be omitted in omitmeta
      * </pre>
-     */
-    @Override
-	public boolean hasInfo() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
+     *
      * <code>optional .OSMPBF.Info info = 4;</code>
-     *
+     */
+    public crosby.binary.Osmformat.Info getInfo() {
+      return info_ == null ? crosby.binary.Osmformat.Info.getDefaultInstance() : info_;
+    }
+    /**
      * <pre>
      * May be omitted in omitmeta
      * </pre>
-     */
-    @Override
-	public crosby.binary.Osmformat.Info getInfo() {
-      return info_;
+     *
+     * <code>optional .OSMPBF.Info info = 4;</code>
+     */
+    private void setInfo(crosby.binary.Osmformat.Info value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      info_ = value;
+      bitField0_ |= 0x00000002;
+      }
+    /**
+     * <pre>
+     * May be omitted in omitmeta
+     * </pre>
+     *
+     * <code>optional .OSMPBF.Info info = 4;</code>
+     */
+    private void setInfo(
+        crosby.binary.Osmformat.Info.Builder builderForValue) {
+      info_ = builderForValue.build();
+      bitField0_ |= 0x00000002;
+    }
+    /**
+     * <pre>
+     * May be omitted in omitmeta
+     * </pre>
+     *
+     * <code>optional .OSMPBF.Info info = 4;</code>
+     */
+    private void mergeInfo(crosby.binary.Osmformat.Info value) {
+      if (info_ != null &&
+          info_ != crosby.binary.Osmformat.Info.getDefaultInstance()) {
+        info_ =
+          crosby.binary.Osmformat.Info.newBuilder(info_).mergeFrom(value).buildPartial();
+      } else {
+        info_ = value;
+      }
+      bitField0_ |= 0x00000002;
+    }
+    /**
+     * <pre>
+     * May be omitted in omitmeta
+     * </pre>
+     *
+     * <code>optional .OSMPBF.Info info = 4;</code>
+     */
+    private void clearInfo() {  info_ = null;
+      bitField0_ = (bitField0_ & ~0x00000002);
     }
 
@@ -8615,6 +8433,5 @@
      * <code>required sint64 lat = 8;</code>
      */
-    @Override
-	public boolean hasLat() {
+    public boolean hasLat() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
@@ -8622,7 +8439,20 @@
      * <code>required sint64 lat = 8;</code>
      */
-    @Override
-	public long getLat() {
+    public long getLat() {
       return lat_;
+    }
+    /**
+     * <code>required sint64 lat = 8;</code>
+     */
+    private void setLat(long value) {
+      bitField0_ |= 0x00000004;
+      lat_ = value;
+    }
+    /**
+     * <code>required sint64 lat = 8;</code>
+     */
+    private void clearLat() {
+      bitField0_ = (bitField0_ & ~0x00000004);
+      lat_ = 0L;
     }
 
@@ -8632,6 +8462,5 @@
      * <code>required sint64 lon = 9;</code>
      */
-    @Override
-	public boolean hasLon() {
+    public boolean hasLon() {
       return ((bitField0_ & 0x00000008) == 0x00000008);
     }
@@ -8639,42 +8468,23 @@
      * <code>required sint64 lon = 9;</code>
      */
-    @Override
-	public long getLon() {
+    public long getLon() {
       return lon_;
     }
-
-    private void initFields() {
-      id_ = 0L;
-      keys_ = java.util.Collections.emptyList();
-      vals_ = java.util.Collections.emptyList();
-      info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
-      lat_ = 0L;
+    /**
+     * <code>required sint64 lon = 9;</code>
+     */
+    private void setLon(long value) {
+      bitField0_ |= 0x00000008;
+      lon_ = value;
+    }
+    /**
+     * <code>required sint64 lon = 9;</code>
+     */
+    private void clearLon() {
+      bitField0_ = (bitField0_ & ~0x00000008);
       lon_ = 0L;
     }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      if (!hasId()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      if (!hasLat()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      if (!hasLon()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
@@ -8683,19 +8493,19 @@
       }
       if (getKeysList().size() > 0) {
-        output.writeRawVarint32(18);
-        output.writeRawVarint32(keysMemoizedSerializedSize);
+        output.writeUInt32NoTag(18);
+        output.writeUInt32NoTag(keysMemoizedSerializedSize);
       }
       for (int i = 0; i < keys_.size(); i++) {
-        output.writeUInt32NoTag(keys_.get(i));
+        output.writeUInt32NoTag(keys_.getInt(i));
       }
       if (getValsList().size() > 0) {
-        output.writeRawVarint32(26);
-        output.writeRawVarint32(valsMemoizedSerializedSize);
+        output.writeUInt32NoTag(26);
+        output.writeUInt32NoTag(valsMemoizedSerializedSize);
       }
       for (int i = 0; i < vals_.size(); i++) {
-        output.writeUInt32NoTag(vals_.get(i));
+        output.writeUInt32NoTag(vals_.getInt(i));
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeMessage(4, info_);
+        output.writeMessage(4, getInfo());
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
@@ -8705,10 +8515,8 @@
         output.writeSInt64(9, lon_);
       }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -8723,5 +8531,5 @@
         for (int i = 0; i < keys_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeUInt32SizeNoTag(keys_.get(i));
+            .computeUInt32SizeNoTag(keys_.getInt(i));
         }
         size += dataSize;
@@ -8737,5 +8545,5 @@
         for (int i = 0; i < vals_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeUInt32SizeNoTag(vals_.get(i));
+            .computeUInt32SizeNoTag(vals_.getInt(i));
         }
         size += dataSize;
@@ -8749,5 +8557,5 @@
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, info_);
+          .computeMessageSize(4, getInfo());
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
@@ -8759,20 +8567,27 @@
           .computeSInt64Size(9, lon_);
       }
-      size += unknownFields.size();
+      size += unknownFields.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 crosby.binary.Osmformat.Node parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Osmformat.Node parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Osmformat.Node parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.Node parseFrom(
@@ -8780,9 +8595,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Node parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.Node parseFrom(
@@ -8790,9 +8607,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Node parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.Node parseFrom(
@@ -8800,9 +8619,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Node parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.Node parseDelimitedFrom(
@@ -8810,10 +8630,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Node parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.Node parseFrom(
@@ -8821,15 +8642,14 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Osmformat.Node prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
 
     /**
@@ -8838,182 +8658,24 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Osmformat.Node, Builder>
-        implements
+          crosby.binary.Osmformat.Node, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.Node)
         crosby.binary.Osmformat.NodeOrBuilder {
       // Construct using crosby.binary.Osmformat.Node.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        id_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        keys_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000002);
-        vals_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000004);
-        info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
-        bitField0_ = (bitField0_ & ~0x00000008);
-        lat_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000010);
-        lon_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000020);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Osmformat.Node getDefaultInstanceForType() {
-        return crosby.binary.Osmformat.Node.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Osmformat.Node build() {
-        crosby.binary.Osmformat.Node result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Osmformat.Node buildPartial() {
-        crosby.binary.Osmformat.Node result = new crosby.binary.Osmformat.Node(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.id_ = id_;
-        if (((bitField0_ & 0x00000002) == 0x00000002)) {
-          keys_ = java.util.Collections.unmodifiableList(keys_);
-          bitField0_ = (bitField0_ & ~0x00000002);
-        }
-        result.keys_ = keys_;
-        if (((bitField0_ & 0x00000004) == 0x00000004)) {
-          vals_ = java.util.Collections.unmodifiableList(vals_);
-          bitField0_ = (bitField0_ & ~0x00000004);
-        }
-        result.vals_ = vals_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.info_ = info_;
-        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.lat_ = lat_;
-        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.lon_ = lon_;
-        result.bitField0_ = to_bitField0_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Osmformat.Node other) {
-        if (other == crosby.binary.Osmformat.Node.getDefaultInstance()) return this;
-        if (other.hasId()) {
-          setId(other.getId());
-        }
-        if (!other.keys_.isEmpty()) {
-          if (keys_.isEmpty()) {
-            keys_ = other.keys_;
-            bitField0_ = (bitField0_ & ~0x00000002);
-          } else {
-            ensureKeysIsMutable();
-            keys_.addAll(other.keys_);
-          }
-
-        }
-        if (!other.vals_.isEmpty()) {
-          if (vals_.isEmpty()) {
-            vals_ = other.vals_;
-            bitField0_ = (bitField0_ & ~0x00000004);
-          } else {
-            ensureValsIsMutable();
-            vals_.addAll(other.vals_);
-          }
-
-        }
-        if (other.hasInfo()) {
-          mergeInfo(other.getInfo());
-        }
-        if (other.hasLat()) {
-          setLat(other.getLat());
-        }
-        if (other.hasLon()) {
-          setLon(other.getLon());
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        if (!hasId()) {
-
-          return false;
-        }
-        if (!hasLat()) {
-
-          return false;
-        }
-        if (!hasLon()) {
-
-          return false;
-        }
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Osmformat.Node parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Osmformat.Node) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private long id_ ;
+        super(DEFAULT_INSTANCE);
+      }
+
+
       /**
        * <code>required sint64 id = 1;</code>
        */
-      @Override
-	public boolean hasId() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
+      public boolean hasId() {
+        return instance.hasId();
       }
       /**
        * <code>required sint64 id = 1;</code>
        */
-      @Override
-	public long getId() {
-        return id_;
+      public long getId() {
+        return instance.getId();
       }
       /**
@@ -9021,7 +8683,6 @@
        */
       public Builder setId(long value) {
-        bitField0_ |= 0x00000001;
-        id_ = value;
-
+        copyOnWrite();
+        instance.setId(value);
         return this;
       }
@@ -9030,304 +8691,255 @@
        */
       public Builder clearId() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        id_ = 0L;
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> keys_ = java.util.Collections.emptyList();
-      private void ensureKeysIsMutable() {
-        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          keys_ = new java.util.ArrayList<>(keys_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-      /**
+        copyOnWrite();
+        instance.clearId();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * Parallel arrays.
+       * </pre>
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Integer>
+          getKeysList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getKeysList());
+      }
+      /**
        * <pre>
        * Parallel arrays.
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Integer>
-          getKeysList() {
-        return java.util.Collections.unmodifiableList(keys_);
-      }
-      /**
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
+       */
+      public int getKeysCount() {
+        return instance.getKeysCount();
+      }
+      /**
        * <pre>
        * Parallel arrays.
        * </pre>
-       */
-      @Override
-	public int getKeysCount() {
-        return keys_.size();
-      }
-      /**
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
+       */
+      public int getKeys(int index) {
+        return instance.getKeys(index);
+      }
+      /**
        * <pre>
        * Parallel arrays.
        * </pre>
-       */
-      @Override
-	public int getKeys(int index) {
-        return keys_.get(index);
-      }
-      /**
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
-       * <pre>
-       * Parallel arrays.
-       * </pre>
        */
       public Builder setKeys(
           int index, int value) {
-        ensureKeysIsMutable();
-        keys_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setKeys(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * Parallel arrays.
+       * </pre>
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
+       */
+      public Builder addKeys(int value) {
+        copyOnWrite();
+        instance.addKeys(value);
+        return this;
+      }
+      /**
        * <pre>
        * Parallel arrays.
        * </pre>
-       */
-      public Builder addKeys(int value) {
-        ensureKeysIsMutable();
-        keys_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
-       * <pre>
-       * Parallel arrays.
-       * </pre>
        */
       public Builder addAllKeys(
           java.lang.Iterable<? extends java.lang.Integer> values) {
-        ensureKeysIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, keys_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllKeys(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * Parallel arrays.
+       * </pre>
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
-       * <pre>
-       * Parallel arrays.
-       * </pre>
        */
       public Builder clearKeys() {
-        keys_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000002);
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> vals_ = java.util.Collections.emptyList();
-      private void ensureValsIsMutable() {
-        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
-          vals_ = new java.util.ArrayList<>(vals_);
-          bitField0_ |= 0x00000004;
-         }
-      }
-      /**
+        copyOnWrite();
+        instance.clearKeys();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * String IDs.
+       * </pre>
+       *
        * <code>repeated uint32 vals = 3 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Integer>
+          getValsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getValsList());
+      }
+      /**
        * <pre>
        * String IDs.
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Integer>
-          getValsList() {
-        return java.util.Collections.unmodifiableList(vals_);
-      }
-      /**
+       *
        * <code>repeated uint32 vals = 3 [packed = true];</code>
-       *
+       */
+      public int getValsCount() {
+        return instance.getValsCount();
+      }
+      /**
        * <pre>
        * String IDs.
        * </pre>
-       */
-      @Override
-	public int getValsCount() {
-        return vals_.size();
-      }
-      /**
+       *
        * <code>repeated uint32 vals = 3 [packed = true];</code>
-       *
+       */
+      public int getVals(int index) {
+        return instance.getVals(index);
+      }
+      /**
        * <pre>
        * String IDs.
        * </pre>
-       */
-      @Override
-	public int getVals(int index) {
-        return vals_.get(index);
-      }
-      /**
+       *
        * <code>repeated uint32 vals = 3 [packed = true];</code>
-       *
-       * <pre>
-       * String IDs.
-       * </pre>
        */
       public Builder setVals(
           int index, int value) {
-        ensureValsIsMutable();
-        vals_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setVals(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * String IDs.
+       * </pre>
+       *
        * <code>repeated uint32 vals = 3 [packed = true];</code>
-       *
+       */
+      public Builder addVals(int value) {
+        copyOnWrite();
+        instance.addVals(value);
+        return this;
+      }
+      /**
        * <pre>
        * String IDs.
        * </pre>
-       */
-      public Builder addVals(int value) {
-        ensureValsIsMutable();
-        vals_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated uint32 vals = 3 [packed = true];</code>
-       *
-       * <pre>
-       * String IDs.
-       * </pre>
        */
       public Builder addAllVals(
           java.lang.Iterable<? extends java.lang.Integer> values) {
-        ensureValsIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, vals_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllVals(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * String IDs.
+       * </pre>
+       *
        * <code>repeated uint32 vals = 3 [packed = true];</code>
-       *
-       * <pre>
-       * String IDs.
-       * </pre>
        */
       public Builder clearVals() {
-        vals_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000004);
-
-        return this;
-      }
-
-      private crosby.binary.Osmformat.Info info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
-      /**
+        copyOnWrite();
+        instance.clearVals();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * May be omitted in omitmeta
+       * </pre>
+       *
        * <code>optional .OSMPBF.Info info = 4;</code>
-       *
+       */
+      public boolean hasInfo() {
+        return instance.hasInfo();
+      }
+      /**
        * <pre>
        * May be omitted in omitmeta
        * </pre>
-       */
-      @Override
-	public boolean hasInfo() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
+       *
        * <code>optional .OSMPBF.Info info = 4;</code>
-       *
+       */
+      public crosby.binary.Osmformat.Info getInfo() {
+        return instance.getInfo();
+      }
+      /**
        * <pre>
        * May be omitted in omitmeta
        * </pre>
-       */
-      @Override
-	public crosby.binary.Osmformat.Info getInfo() {
-        return info_;
-      }
-      /**
+       *
        * <code>optional .OSMPBF.Info info = 4;</code>
-       *
+       */
+      public Builder setInfo(crosby.binary.Osmformat.Info value) {
+        copyOnWrite();
+        instance.setInfo(value);
+        return this;
+        }
+      /**
        * <pre>
        * May be omitted in omitmeta
        * </pre>
-       */
-      public Builder setInfo(crosby.binary.Osmformat.Info value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        info_ = value;
-
-        bitField0_ |= 0x00000008;
-        return this;
-      }
-      /**
+       *
        * <code>optional .OSMPBF.Info info = 4;</code>
-       *
-       * <pre>
-       * May be omitted in omitmeta
-       * </pre>
        */
       public Builder setInfo(
           crosby.binary.Osmformat.Info.Builder builderForValue) {
-        info_ = builderForValue.build();
-
-        bitField0_ |= 0x00000008;
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setInfo(builderForValue);
+        return this;
+      }
+      /**
+       * <pre>
+       * May be omitted in omitmeta
+       * </pre>
+       *
        * <code>optional .OSMPBF.Info info = 4;</code>
-       *
+       */
+      public Builder mergeInfo(crosby.binary.Osmformat.Info value) {
+        copyOnWrite();
+        instance.mergeInfo(value);
+        return this;
+      }
+      /**
        * <pre>
        * May be omitted in omitmeta
        * </pre>
-       */
-      public Builder mergeInfo(crosby.binary.Osmformat.Info value) {
-        if (((bitField0_ & 0x00000008) == 0x00000008) &&
-            info_ != crosby.binary.Osmformat.Info.getDefaultInstance()) {
-          info_ =
-            crosby.binary.Osmformat.Info.newBuilder(info_).mergeFrom(value).buildPartial();
-        } else {
-          info_ = value;
-        }
-
-        bitField0_ |= 0x00000008;
-        return this;
-      }
-      /**
+       *
        * <code>optional .OSMPBF.Info info = 4;</code>
-       *
-       * <pre>
-       * May be omitted in omitmeta
-       * </pre>
-       */
-      public Builder clearInfo() {
-        info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
-
-        bitField0_ = (bitField0_ & ~0x00000008);
-        return this;
-      }
-
-      private long lat_ ;
+       */
+      public Builder clearInfo() {  copyOnWrite();
+        instance.clearInfo();
+        return this;
+      }
+
       /**
        * <code>required sint64 lat = 8;</code>
        */
-      @Override
-	public boolean hasLat() {
-        return ((bitField0_ & 0x00000010) == 0x00000010);
+      public boolean hasLat() {
+        return instance.hasLat();
       }
       /**
        * <code>required sint64 lat = 8;</code>
        */
-      @Override
-	public long getLat() {
-        return lat_;
+      public long getLat() {
+        return instance.getLat();
       }
       /**
@@ -9335,7 +8947,6 @@
        */
       public Builder setLat(long value) {
-        bitField0_ |= 0x00000010;
-        lat_ = value;
-
+        copyOnWrite();
+        instance.setLat(value);
         return this;
       }
@@ -9344,24 +8955,20 @@
        */
       public Builder clearLat() {
-        bitField0_ = (bitField0_ & ~0x00000010);
-        lat_ = 0L;
-
-        return this;
-      }
-
-      private long lon_ ;
+        copyOnWrite();
+        instance.clearLat();
+        return this;
+      }
+
       /**
        * <code>required sint64 lon = 9;</code>
        */
-      @Override
-	public boolean hasLon() {
-        return ((bitField0_ & 0x00000020) == 0x00000020);
+      public boolean hasLon() {
+        return instance.hasLon();
       }
       /**
        * <code>required sint64 lon = 9;</code>
        */
-      @Override
-	public long getLon() {
-        return lon_;
+      public long getLon() {
+        return instance.getLon();
       }
       /**
@@ -9369,7 +8976,6 @@
        */
       public Builder setLon(long value) {
-        bitField0_ |= 0x00000020;
-        lon_ = value;
-
+        copyOnWrite();
+        instance.setLon(value);
         return this;
       }
@@ -9378,7 +8984,6 @@
        */
       public Builder clearLon() {
-        bitField0_ = (bitField0_ & ~0x00000020);
-        lon_ = 0L;
-
+        copyOnWrite();
+        instance.clearLon();
         return this;
       }
@@ -9386,11 +8991,204 @@
       // @@protoc_insertion_point(builder_scope:OSMPBF.Node)
     }
-
+    private byte memoizedIsInitialized = -1;
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Osmformat.Node();
+        }
+        case IS_INITIALIZED: {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized == 1) return DEFAULT_INSTANCE;
+          if (isInitialized == 0) return null;
+
+          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
+          if (!hasId()) {
+            if (shouldMemoize) {
+              memoizedIsInitialized = 0;
+            }
+            return null;
+          }
+          if (!hasLat()) {
+            if (shouldMemoize) {
+              memoizedIsInitialized = 0;
+            }
+            return null;
+          }
+          if (!hasLon()) {
+            if (shouldMemoize) {
+              memoizedIsInitialized = 0;
+            }
+            return null;
+          }
+          if (shouldMemoize) memoizedIsInitialized = 1;
+          return DEFAULT_INSTANCE;
+
+        }
+        case MAKE_IMMUTABLE: {
+          keys_.makeImmutable();
+          vals_.makeImmutable();
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Osmformat.Node other = (crosby.binary.Osmformat.Node) arg1;
+          id_ = visitor.visitLong(
+              hasId(), id_,
+              other.hasId(), other.id_);
+          keys_= visitor.visitIntList(keys_, other.keys_);
+          vals_= visitor.visitIntList(vals_, other.vals_);
+          info_ = visitor.visitMessage(info_, other.info_);
+          lat_ = visitor.visitLong(
+              hasLat(), lat_,
+              other.hasLat(), other.lat_);
+          lon_ = visitor.visitLong(
+              hasLon(), lon_,
+              other.hasLon(), other.lon_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+            bitField0_ |= other.bitField0_;
+          }
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  bitField0_ |= 0x00000001;
+                  id_ = input.readSInt64();
+                  break;
+                }
+                case 16: {
+                  if (!keys_.isModifiable()) {
+                    keys_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(keys_);
+                  }
+                  keys_.addInt(input.readUInt32());
+                  break;
+                }
+                case 18: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!keys_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    keys_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(keys_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    keys_.addInt(input.readUInt32());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 24: {
+                  if (!vals_.isModifiable()) {
+                    vals_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(vals_);
+                  }
+                  vals_.addInt(input.readUInt32());
+                  break;
+                }
+                case 26: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!vals_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    vals_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(vals_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    vals_.addInt(input.readUInt32());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 34: {
+                  crosby.binary.Osmformat.Info.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = info_.toBuilder();
+                  }
+                  info_ = input.readMessage(crosby.binary.Osmformat.Info.parser(), extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(info_);
+                    info_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
+                  break;
+                }
+                case 64: {
+                  bitField0_ |= 0x00000004;
+                  lat_ = input.readSInt64();
+                  break;
+                }
+                case 72: {
+                  bitField0_ |= 0x00000008;
+                  lon_ = input.readSInt64();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Osmformat.Node.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.Node)
+    private static final crosby.binary.Osmformat.Node DEFAULT_INSTANCE;
     static {
-      defaultInstance = new Node(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.Node)
+      DEFAULT_INSTANCE = new Node();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Osmformat.Node getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<Node> PARSER;
+
+    public static com.google.protobuf.Parser<Node> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
@@ -9400,117 +9198,117 @@
 
     /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 id = 1 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Long> getIdList();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    java.util.List<java.lang.Long> getIdList();
-    /**
+     *
      * <code>repeated sint64 id = 1 [packed = true];</code>
-     *
+     */
+    int getIdCount();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    int getIdCount();
-    /**
+     *
      * <code>repeated sint64 id = 1 [packed = true];</code>
-     *
+     */
+    long getId(int index);
+
+    /**
+     * <pre>
+     *repeated Info info = 4;
+     * </pre>
+     *
+     * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
+     */
+    boolean hasDenseinfo();
+    /**
+     * <pre>
+     *repeated Info info = 4;
+     * </pre>
+     *
+     * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
+     */
+    crosby.binary.Osmformat.DenseInfo getDenseinfo();
+
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    long getId(int index);
-
-    /**
-     * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
-     *
-     * <pre>
-     *repeated Info info = 4;
-     * </pre>
-     */
-    boolean hasDenseinfo();
-    /**
-     * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
-     *
-     * <pre>
-     *repeated Info info = 4;
-     * </pre>
-     */
-    crosby.binary.Osmformat.DenseInfo getDenseinfo();
-
-    /**
+     *
      * <code>repeated sint64 lat = 8 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Long> getLatList();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    java.util.List<java.lang.Long> getLatList();
-    /**
+     *
      * <code>repeated sint64 lat = 8 [packed = true];</code>
-     *
+     */
+    int getLatCount();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    int getLatCount();
-    /**
+     *
      * <code>repeated sint64 lat = 8 [packed = true];</code>
-     *
+     */
+    long getLat(int index);
+
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    long getLat(int index);
-
-    /**
+     *
      * <code>repeated sint64 lon = 9 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Long> getLonList();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    java.util.List<java.lang.Long> getLonList();
-    /**
+     *
      * <code>repeated sint64 lon = 9 [packed = true];</code>
-     *
+     */
+    int getLonCount();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    int getLonCount();
-    /**
+     *
      * <code>repeated sint64 lon = 9 [packed = true];</code>
-     *
-     * <pre>
-     * DELTA coded
-     * </pre>
      */
     long getLon(int index);
 
     /**
+     * <pre>
+     * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
+     * </pre>
+     *
      * <code>repeated int32 keys_vals = 10 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Integer> getKeysValsList();
+    /**
      * <pre>
      * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
      * </pre>
-     */
-    java.util.List<java.lang.Integer> getKeysValsList();
-    /**
+     *
      * <code>repeated int32 keys_vals = 10 [packed = true];</code>
-     *
+     */
+    int getKeysValsCount();
+    /**
      * <pre>
      * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
      * </pre>
-     */
-    int getKeysValsCount();
-    /**
+     *
      * <code>repeated int32 keys_vals = 10 [packed = true];</code>
-     *
-     * <pre>
-     * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
-     * </pre>
      */
     int getKeysVals(int index);
@@ -9519,432 +9317,478 @@
    * Protobuf type {@code OSMPBF.DenseNodes}
    */
-  public static final class DenseNodes extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class DenseNodes extends
+      com.google.protobuf.GeneratedMessageLite<
+          DenseNodes, DenseNodes.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.DenseNodes)
       DenseNodesOrBuilder {
-    // Use DenseNodes.newBuilder() to construct.
-    private DenseNodes(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private DenseNodes(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final DenseNodes defaultInstance;
-    public static DenseNodes getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public DenseNodes getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private DenseNodes(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 8: {
-              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-                id_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              id_.add(input.readSInt64());
-              break;
-            }
-            case 10: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
-                id_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                id_.add(input.readSInt64());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 42: {
-              crosby.binary.Osmformat.DenseInfo.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000001) == 0x00000001)) {
-                subBuilder = denseinfo_.toBuilder();
-              }
-              denseinfo_ = input.readMessage(crosby.binary.Osmformat.DenseInfo.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(denseinfo_);
-                denseinfo_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000001;
-              break;
-            }
-            case 64: {
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-                lat_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              lat_.add(input.readSInt64());
-              break;
-            }
-            case 66: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
-                lat_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                lat_.add(input.readSInt64());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 72: {
-              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
-                lon_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000008;
-              }
-              lon_.add(input.readSInt64());
-              break;
-            }
-            case 74: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
-                lon_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000008;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                lon_.add(input.readSInt64());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 80: {
-              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-                keysVals_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000010;
-              }
-              keysVals_.add(input.readInt32());
-              break;
-            }
-            case 82: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
-                keysVals_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000010;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                keysVals_.add(input.readInt32());
-              }
-              input.popLimit(limit);
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-          id_ = java.util.Collections.unmodifiableList(id_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-          lat_ = java.util.Collections.unmodifiableList(lat_);
-        }
-        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
-          lon_ = java.util.Collections.unmodifiableList(lon_);
-        }
-        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-          keysVals_ = java.util.Collections.unmodifiableList(keysVals_);
-        }
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<DenseNodes> PARSER =
-        new com.google.protobuf.AbstractParser<DenseNodes>() {
-      @Override
-	public DenseNodes parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DenseNodes(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<DenseNodes> getParserForType() {
-      return PARSER;
-    }
-
+    private DenseNodes() {
+      id_ = emptyLongList();
+      lat_ = emptyLongList();
+      lon_ = emptyLongList();
+      keysVals_ = emptyIntList();
+    }
     private int bitField0_;
     public static final int ID_FIELD_NUMBER = 1;
-    private java.util.List<java.lang.Long> id_;
-    /**
+    private com.google.protobuf.Internal.LongList id_;
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 id = 1 [packed = true];</code>
-     *
-     * <pre>
-     * DELTA coded
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Long>
+     */
+    public java.util.List<java.lang.Long>
         getIdList() {
       return id_;
     }
     /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 id = 1 [packed = true];</code>
-     *
+     */
+    public int getIdCount() {
+      return id_.size();
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public int getIdCount() {
-      return id_.size();
-    }
-    /**
+     *
      * <code>repeated sint64 id = 1 [packed = true];</code>
-     *
+     */
+    public long getId(int index) {
+      return id_.getLong(index);
+    }
+    private int idMemoizedSerializedSize = -1;
+    private void ensureIdIsMutable() {
+      if (!id_.isModifiable()) {
+        id_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(id_);
+       }
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public long getId(int index) {
-      return id_.get(index);
-    }
-    private int idMemoizedSerializedSize = -1;
+     *
+     * <code>repeated sint64 id = 1 [packed = true];</code>
+     */
+    private void setId(
+        int index, long value) {
+      ensureIdIsMutable();
+      id_.setLong(index, value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 id = 1 [packed = true];</code>
+     */
+    private void addId(long value) {
+      ensureIdIsMutable();
+      id_.addLong(value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 id = 1 [packed = true];</code>
+     */
+    private void addAllId(
+        java.lang.Iterable<? extends java.lang.Long> values) {
+      ensureIdIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, id_);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 id = 1 [packed = true];</code>
+     */
+    private void clearId() {
+      id_ = emptyLongList();
+    }
 
     public static final int DENSEINFO_FIELD_NUMBER = 5;
     private crosby.binary.Osmformat.DenseInfo denseinfo_;
     /**
+     * <pre>
+     *repeated Info info = 4;
+     * </pre>
+     *
      * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
-     *
+     */
+    public boolean hasDenseinfo() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
      * <pre>
      *repeated Info info = 4;
      * </pre>
-     */
-    @Override
-	public boolean hasDenseinfo() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
+     *
      * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
-     *
+     */
+    public crosby.binary.Osmformat.DenseInfo getDenseinfo() {
+      return denseinfo_ == null ? crosby.binary.Osmformat.DenseInfo.getDefaultInstance() : denseinfo_;
+    }
+    /**
      * <pre>
      *repeated Info info = 4;
      * </pre>
-     */
-    @Override
-	public crosby.binary.Osmformat.DenseInfo getDenseinfo() {
-      return denseinfo_;
+     *
+     * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
+     */
+    private void setDenseinfo(crosby.binary.Osmformat.DenseInfo value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      denseinfo_ = value;
+      bitField0_ |= 0x00000001;
+      }
+    /**
+     * <pre>
+     *repeated Info info = 4;
+     * </pre>
+     *
+     * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
+     */
+    private void setDenseinfo(
+        crosby.binary.Osmformat.DenseInfo.Builder builderForValue) {
+      denseinfo_ = builderForValue.build();
+      bitField0_ |= 0x00000001;
+    }
+    /**
+     * <pre>
+     *repeated Info info = 4;
+     * </pre>
+     *
+     * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
+     */
+    private void mergeDenseinfo(crosby.binary.Osmformat.DenseInfo value) {
+      if (denseinfo_ != null &&
+          denseinfo_ != crosby.binary.Osmformat.DenseInfo.getDefaultInstance()) {
+        denseinfo_ =
+          crosby.binary.Osmformat.DenseInfo.newBuilder(denseinfo_).mergeFrom(value).buildPartial();
+      } else {
+        denseinfo_ = value;
+      }
+      bitField0_ |= 0x00000001;
+    }
+    /**
+     * <pre>
+     *repeated Info info = 4;
+     * </pre>
+     *
+     * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
+     */
+    private void clearDenseinfo() {  denseinfo_ = null;
+      bitField0_ = (bitField0_ & ~0x00000001);
     }
 
     public static final int LAT_FIELD_NUMBER = 8;
-    private java.util.List<java.lang.Long> lat_;
-    /**
+    private com.google.protobuf.Internal.LongList lat_;
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 lat = 8 [packed = true];</code>
-     *
-     * <pre>
-     * DELTA coded
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Long>
+     */
+    public java.util.List<java.lang.Long>
         getLatList() {
       return lat_;
     }
     /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 lat = 8 [packed = true];</code>
-     *
+     */
+    public int getLatCount() {
+      return lat_.size();
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public int getLatCount() {
-      return lat_.size();
-    }
-    /**
+     *
      * <code>repeated sint64 lat = 8 [packed = true];</code>
-     *
+     */
+    public long getLat(int index) {
+      return lat_.getLong(index);
+    }
+    private int latMemoizedSerializedSize = -1;
+    private void ensureLatIsMutable() {
+      if (!lat_.isModifiable()) {
+        lat_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(lat_);
+       }
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public long getLat(int index) {
-      return lat_.get(index);
-    }
-    private int latMemoizedSerializedSize = -1;
+     *
+     * <code>repeated sint64 lat = 8 [packed = true];</code>
+     */
+    private void setLat(
+        int index, long value) {
+      ensureLatIsMutable();
+      lat_.setLong(index, value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 lat = 8 [packed = true];</code>
+     */
+    private void addLat(long value) {
+      ensureLatIsMutable();
+      lat_.addLong(value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 lat = 8 [packed = true];</code>
+     */
+    private void addAllLat(
+        java.lang.Iterable<? extends java.lang.Long> values) {
+      ensureLatIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, lat_);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 lat = 8 [packed = true];</code>
+     */
+    private void clearLat() {
+      lat_ = emptyLongList();
+    }
 
     public static final int LON_FIELD_NUMBER = 9;
-    private java.util.List<java.lang.Long> lon_;
-    /**
+    private com.google.protobuf.Internal.LongList lon_;
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 lon = 9 [packed = true];</code>
-     *
-     * <pre>
-     * DELTA coded
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Long>
+     */
+    public java.util.List<java.lang.Long>
         getLonList() {
       return lon_;
     }
     /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 lon = 9 [packed = true];</code>
-     *
+     */
+    public int getLonCount() {
+      return lon_.size();
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public int getLonCount() {
-      return lon_.size();
-    }
-    /**
+     *
      * <code>repeated sint64 lon = 9 [packed = true];</code>
-     *
+     */
+    public long getLon(int index) {
+      return lon_.getLong(index);
+    }
+    private int lonMemoizedSerializedSize = -1;
+    private void ensureLonIsMutable() {
+      if (!lon_.isModifiable()) {
+        lon_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(lon_);
+       }
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public long getLon(int index) {
-      return lon_.get(index);
-    }
-    private int lonMemoizedSerializedSize = -1;
+     *
+     * <code>repeated sint64 lon = 9 [packed = true];</code>
+     */
+    private void setLon(
+        int index, long value) {
+      ensureLonIsMutable();
+      lon_.setLong(index, value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 lon = 9 [packed = true];</code>
+     */
+    private void addLon(long value) {
+      ensureLonIsMutable();
+      lon_.addLong(value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 lon = 9 [packed = true];</code>
+     */
+    private void addAllLon(
+        java.lang.Iterable<? extends java.lang.Long> values) {
+      ensureLonIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, lon_);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 lon = 9 [packed = true];</code>
+     */
+    private void clearLon() {
+      lon_ = emptyLongList();
+    }
 
     public static final int KEYS_VALS_FIELD_NUMBER = 10;
-    private java.util.List<java.lang.Integer> keysVals_;
-    /**
+    private com.google.protobuf.Internal.IntList keysVals_;
+    /**
+     * <pre>
+     * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
+     * </pre>
+     *
      * <code>repeated int32 keys_vals = 10 [packed = true];</code>
-     *
-     * <pre>
-     * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Integer>
+     */
+    public java.util.List<java.lang.Integer>
         getKeysValsList() {
       return keysVals_;
     }
     /**
+     * <pre>
+     * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
+     * </pre>
+     *
      * <code>repeated int32 keys_vals = 10 [packed = true];</code>
-     *
+     */
+    public int getKeysValsCount() {
+      return keysVals_.size();
+    }
+    /**
      * <pre>
      * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
      * </pre>
-     */
-    @Override
-	public int getKeysValsCount() {
-      return keysVals_.size();
-    }
-    /**
+     *
      * <code>repeated int32 keys_vals = 10 [packed = true];</code>
-     *
+     */
+    public int getKeysVals(int index) {
+      return keysVals_.getInt(index);
+    }
+    private int keysValsMemoizedSerializedSize = -1;
+    private void ensureKeysValsIsMutable() {
+      if (!keysVals_.isModifiable()) {
+        keysVals_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(keysVals_);
+       }
+    }
+    /**
      * <pre>
      * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
      * </pre>
-     */
-    @Override
-	public int getKeysVals(int index) {
-      return keysVals_.get(index);
-    }
-    private int keysValsMemoizedSerializedSize = -1;
-
-    private void initFields() {
-      id_ = java.util.Collections.emptyList();
-      denseinfo_ = crosby.binary.Osmformat.DenseInfo.getDefaultInstance();
-      lat_ = java.util.Collections.emptyList();
-      lon_ = java.util.Collections.emptyList();
-      keysVals_ = java.util.Collections.emptyList();
-    }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+     *
+     * <code>repeated int32 keys_vals = 10 [packed = true];</code>
+     */
+    private void setKeysVals(
+        int index, int value) {
+      ensureKeysValsIsMutable();
+      keysVals_.setInt(index, value);
+    }
+    /**
+     * <pre>
+     * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
+     * </pre>
+     *
+     * <code>repeated int32 keys_vals = 10 [packed = true];</code>
+     */
+    private void addKeysVals(int value) {
+      ensureKeysValsIsMutable();
+      keysVals_.addInt(value);
+    }
+    /**
+     * <pre>
+     * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
+     * </pre>
+     *
+     * <code>repeated int32 keys_vals = 10 [packed = true];</code>
+     */
+    private void addAllKeysVals(
+        java.lang.Iterable<? extends java.lang.Integer> values) {
+      ensureKeysValsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, keysVals_);
+    }
+    /**
+     * <pre>
+     * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
+     * </pre>
+     *
+     * <code>repeated int32 keys_vals = 10 [packed = true];</code>
+     */
+    private void clearKeysVals() {
+      keysVals_ = emptyIntList();
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
       if (getIdList().size() > 0) {
-        output.writeRawVarint32(10);
-        output.writeRawVarint32(idMemoizedSerializedSize);
+        output.writeUInt32NoTag(10);
+        output.writeUInt32NoTag(idMemoizedSerializedSize);
       }
       for (int i = 0; i < id_.size(); i++) {
-        output.writeSInt64NoTag(id_.get(i));
+        output.writeSInt64NoTag(id_.getLong(i));
       }
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeMessage(5, denseinfo_);
+        output.writeMessage(5, getDenseinfo());
       }
       if (getLatList().size() > 0) {
-        output.writeRawVarint32(66);
-        output.writeRawVarint32(latMemoizedSerializedSize);
+        output.writeUInt32NoTag(66);
+        output.writeUInt32NoTag(latMemoizedSerializedSize);
       }
       for (int i = 0; i < lat_.size(); i++) {
-        output.writeSInt64NoTag(lat_.get(i));
+        output.writeSInt64NoTag(lat_.getLong(i));
       }
       if (getLonList().size() > 0) {
-        output.writeRawVarint32(74);
-        output.writeRawVarint32(lonMemoizedSerializedSize);
+        output.writeUInt32NoTag(74);
+        output.writeUInt32NoTag(lonMemoizedSerializedSize);
       }
       for (int i = 0; i < lon_.size(); i++) {
-        output.writeSInt64NoTag(lon_.get(i));
+        output.writeSInt64NoTag(lon_.getLong(i));
       }
       if (getKeysValsList().size() > 0) {
-        output.writeRawVarint32(82);
-        output.writeRawVarint32(keysValsMemoizedSerializedSize);
+        output.writeUInt32NoTag(82);
+        output.writeUInt32NoTag(keysValsMemoizedSerializedSize);
       }
       for (int i = 0; i < keysVals_.size(); i++) {
-        output.writeInt32NoTag(keysVals_.get(i));
-      }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+        output.writeInt32NoTag(keysVals_.getInt(i));
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -9955,5 +9799,5 @@
         for (int i = 0; i < id_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeSInt64SizeNoTag(id_.get(i));
+            .computeSInt64SizeNoTag(id_.getLong(i));
         }
         size += dataSize;
@@ -9967,5 +9811,5 @@
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, denseinfo_);
+          .computeMessageSize(5, getDenseinfo());
       }
       {
@@ -9973,5 +9817,5 @@
         for (int i = 0; i < lat_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeSInt64SizeNoTag(lat_.get(i));
+            .computeSInt64SizeNoTag(lat_.getLong(i));
         }
         size += dataSize;
@@ -9987,5 +9831,5 @@
         for (int i = 0; i < lon_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeSInt64SizeNoTag(lon_.get(i));
+            .computeSInt64SizeNoTag(lon_.getLong(i));
         }
         size += dataSize;
@@ -10001,5 +9845,5 @@
         for (int i = 0; i < keysVals_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeInt32SizeNoTag(keysVals_.get(i));
+            .computeInt32SizeNoTag(keysVals_.getInt(i));
         }
         size += dataSize;
@@ -10011,20 +9855,27 @@
         keysValsMemoizedSerializedSize = dataSize;
       }
-      size += unknownFields.size();
+      size += unknownFields.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 crosby.binary.Osmformat.DenseNodes parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Osmformat.DenseNodes parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Osmformat.DenseNodes parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.DenseNodes parseFrom(
@@ -10032,9 +9883,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.DenseNodes parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.DenseNodes parseFrom(
@@ -10042,9 +9895,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.DenseNodes parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.DenseNodes parseFrom(
@@ -10052,9 +9907,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.DenseNodes parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.DenseNodes parseDelimitedFrom(
@@ -10062,10 +9918,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.DenseNodes parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.DenseNodes parseFrom(
@@ -10073,15 +9930,14 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Osmformat.DenseNodes prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
 
     /**
@@ -10090,634 +9946,411 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Osmformat.DenseNodes, Builder>
-        implements
+          crosby.binary.Osmformat.DenseNodes, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.DenseNodes)
         crosby.binary.Osmformat.DenseNodesOrBuilder {
       // Construct using crosby.binary.Osmformat.DenseNodes.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        id_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        denseinfo_ = crosby.binary.Osmformat.DenseInfo.getDefaultInstance();
-        bitField0_ = (bitField0_ & ~0x00000002);
-        lat_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000004);
-        lon_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000008);
-        keysVals_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000010);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Osmformat.DenseNodes getDefaultInstanceForType() {
-        return crosby.binary.Osmformat.DenseNodes.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Osmformat.DenseNodes build() {
-        crosby.binary.Osmformat.DenseNodes result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Osmformat.DenseNodes buildPartial() {
-        crosby.binary.Osmformat.DenseNodes result = new crosby.binary.Osmformat.DenseNodes(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((bitField0_ & 0x00000001) == 0x00000001)) {
-          id_ = java.util.Collections.unmodifiableList(id_);
-          bitField0_ = (bitField0_ & ~0x00000001);
-        }
-        result.id_ = id_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.denseinfo_ = denseinfo_;
-        if (((bitField0_ & 0x00000004) == 0x00000004)) {
-          lat_ = java.util.Collections.unmodifiableList(lat_);
-          bitField0_ = (bitField0_ & ~0x00000004);
-        }
-        result.lat_ = lat_;
-        if (((bitField0_ & 0x00000008) == 0x00000008)) {
-          lon_ = java.util.Collections.unmodifiableList(lon_);
-          bitField0_ = (bitField0_ & ~0x00000008);
-        }
-        result.lon_ = lon_;
-        if (((bitField0_ & 0x00000010) == 0x00000010)) {
-          keysVals_ = java.util.Collections.unmodifiableList(keysVals_);
-          bitField0_ = (bitField0_ & ~0x00000010);
-        }
-        result.keysVals_ = keysVals_;
-        result.bitField0_ = to_bitField0_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Osmformat.DenseNodes other) {
-        if (other == crosby.binary.Osmformat.DenseNodes.getDefaultInstance()) return this;
-        if (!other.id_.isEmpty()) {
-          if (id_.isEmpty()) {
-            id_ = other.id_;
-            bitField0_ = (bitField0_ & ~0x00000001);
-          } else {
-            ensureIdIsMutable();
-            id_.addAll(other.id_);
-          }
-
-        }
-        if (other.hasDenseinfo()) {
-          mergeDenseinfo(other.getDenseinfo());
-        }
-        if (!other.lat_.isEmpty()) {
-          if (lat_.isEmpty()) {
-            lat_ = other.lat_;
-            bitField0_ = (bitField0_ & ~0x00000004);
-          } else {
-            ensureLatIsMutable();
-            lat_.addAll(other.lat_);
-          }
-
-        }
-        if (!other.lon_.isEmpty()) {
-          if (lon_.isEmpty()) {
-            lon_ = other.lon_;
-            bitField0_ = (bitField0_ & ~0x00000008);
-          } else {
-            ensureLonIsMutable();
-            lon_.addAll(other.lon_);
-          }
-
-        }
-        if (!other.keysVals_.isEmpty()) {
-          if (keysVals_.isEmpty()) {
-            keysVals_ = other.keysVals_;
-            bitField0_ = (bitField0_ & ~0x00000010);
-          } else {
-            ensureKeysValsIsMutable();
-            keysVals_.addAll(other.keysVals_);
-          }
-
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Osmformat.DenseNodes parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Osmformat.DenseNodes) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<java.lang.Long> id_ = java.util.Collections.emptyList();
-      private void ensureIdIsMutable() {
-        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
-          id_ = new java.util.ArrayList<>(id_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-      /**
+        super(DEFAULT_INSTANCE);
+      }
+
+
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 id = 1 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Long>
+          getIdList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getIdList());
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Long>
-          getIdList() {
-        return java.util.Collections.unmodifiableList(id_);
-      }
-      /**
+       *
        * <code>repeated sint64 id = 1 [packed = true];</code>
-       *
+       */
+      public int getIdCount() {
+        return instance.getIdCount();
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public int getIdCount() {
-        return id_.size();
-      }
-      /**
+       *
        * <code>repeated sint64 id = 1 [packed = true];</code>
-       *
+       */
+      public long getId(int index) {
+        return instance.getId(index);
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public long getId(int index) {
-        return id_.get(index);
-      }
-      /**
+       *
        * <code>repeated sint64 id = 1 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder setId(
           int index, long value) {
-        ensureIdIsMutable();
-        id_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setId(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 id = 1 [packed = true];</code>
-       *
+       */
+      public Builder addId(long value) {
+        copyOnWrite();
+        instance.addId(value);
+        return this;
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      public Builder addId(long value) {
-        ensureIdIsMutable();
-        id_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated sint64 id = 1 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder addAllId(
           java.lang.Iterable<? extends java.lang.Long> values) {
-        ensureIdIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, id_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllId(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 id = 1 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder clearId() {
-        id_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-
-        return this;
-      }
-
-      private crosby.binary.Osmformat.DenseInfo denseinfo_ = crosby.binary.Osmformat.DenseInfo.getDefaultInstance();
-      /**
+        copyOnWrite();
+        instance.clearId();
+        return this;
+      }
+
+      /**
+       * <pre>
+       *repeated Info info = 4;
+       * </pre>
+       *
        * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
-       *
+       */
+      public boolean hasDenseinfo() {
+        return instance.hasDenseinfo();
+      }
+      /**
        * <pre>
        *repeated Info info = 4;
        * </pre>
-       */
-      @Override
-	public boolean hasDenseinfo() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
+       *
        * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
-       *
+       */
+      public crosby.binary.Osmformat.DenseInfo getDenseinfo() {
+        return instance.getDenseinfo();
+      }
+      /**
        * <pre>
        *repeated Info info = 4;
        * </pre>
-       */
-      @Override
-	public crosby.binary.Osmformat.DenseInfo getDenseinfo() {
-        return denseinfo_;
-      }
-      /**
+       *
        * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
-       *
+       */
+      public Builder setDenseinfo(crosby.binary.Osmformat.DenseInfo value) {
+        copyOnWrite();
+        instance.setDenseinfo(value);
+        return this;
+        }
+      /**
        * <pre>
        *repeated Info info = 4;
        * </pre>
-       */
-      public Builder setDenseinfo(crosby.binary.Osmformat.DenseInfo value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        denseinfo_ = value;
-
-        bitField0_ |= 0x00000002;
-        return this;
-      }
-      /**
+       *
        * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
-       *
-       * <pre>
-       *repeated Info info = 4;
-       * </pre>
        */
       public Builder setDenseinfo(
           crosby.binary.Osmformat.DenseInfo.Builder builderForValue) {
-        denseinfo_ = builderForValue.build();
-
-        bitField0_ |= 0x00000002;
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setDenseinfo(builderForValue);
+        return this;
+      }
+      /**
+       * <pre>
+       *repeated Info info = 4;
+       * </pre>
+       *
        * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
-       *
+       */
+      public Builder mergeDenseinfo(crosby.binary.Osmformat.DenseInfo value) {
+        copyOnWrite();
+        instance.mergeDenseinfo(value);
+        return this;
+      }
+      /**
        * <pre>
        *repeated Info info = 4;
        * </pre>
-       */
-      public Builder mergeDenseinfo(crosby.binary.Osmformat.DenseInfo value) {
-        if (((bitField0_ & 0x00000002) == 0x00000002) &&
-            denseinfo_ != crosby.binary.Osmformat.DenseInfo.getDefaultInstance()) {
-          denseinfo_ =
-            crosby.binary.Osmformat.DenseInfo.newBuilder(denseinfo_).mergeFrom(value).buildPartial();
-        } else {
-          denseinfo_ = value;
-        }
-
-        bitField0_ |= 0x00000002;
-        return this;
-      }
-      /**
+       *
        * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
-       *
-       * <pre>
-       *repeated Info info = 4;
-       * </pre>
-       */
-      public Builder clearDenseinfo() {
-        denseinfo_ = crosby.binary.Osmformat.DenseInfo.getDefaultInstance();
-
-        bitField0_ = (bitField0_ & ~0x00000002);
-        return this;
-      }
-
-      private java.util.List<java.lang.Long> lat_ = java.util.Collections.emptyList();
-      private void ensureLatIsMutable() {
-        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
-          lat_ = new java.util.ArrayList<>(lat_);
-          bitField0_ |= 0x00000004;
-         }
-      }
-      /**
+       */
+      public Builder clearDenseinfo() {  copyOnWrite();
+        instance.clearDenseinfo();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 lat = 8 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Long>
+          getLatList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getLatList());
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Long>
-          getLatList() {
-        return java.util.Collections.unmodifiableList(lat_);
-      }
-      /**
+       *
        * <code>repeated sint64 lat = 8 [packed = true];</code>
-       *
+       */
+      public int getLatCount() {
+        return instance.getLatCount();
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public int getLatCount() {
-        return lat_.size();
-      }
-      /**
+       *
        * <code>repeated sint64 lat = 8 [packed = true];</code>
-       *
+       */
+      public long getLat(int index) {
+        return instance.getLat(index);
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public long getLat(int index) {
-        return lat_.get(index);
-      }
-      /**
+       *
        * <code>repeated sint64 lat = 8 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder setLat(
           int index, long value) {
-        ensureLatIsMutable();
-        lat_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setLat(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 lat = 8 [packed = true];</code>
-       *
+       */
+      public Builder addLat(long value) {
+        copyOnWrite();
+        instance.addLat(value);
+        return this;
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      public Builder addLat(long value) {
-        ensureLatIsMutable();
-        lat_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated sint64 lat = 8 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder addAllLat(
           java.lang.Iterable<? extends java.lang.Long> values) {
-        ensureLatIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, lat_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllLat(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 lat = 8 [packed = true];</code>
-       *
+       */
+      public Builder clearLat() {
+        copyOnWrite();
+        instance.clearLat();
+        return this;
+      }
+
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      public Builder clearLat() {
-        lat_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000004);
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Long> lon_ = java.util.Collections.emptyList();
-      private void ensureLonIsMutable() {
-        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
-          lon_ = new java.util.ArrayList<>(lon_);
-          bitField0_ |= 0x00000008;
-         }
-      }
-      /**
+       *
        * <code>repeated sint64 lon = 9 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Long>
+          getLonList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getLonList());
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Long>
-          getLonList() {
-        return java.util.Collections.unmodifiableList(lon_);
-      }
-      /**
+       *
        * <code>repeated sint64 lon = 9 [packed = true];</code>
-       *
+       */
+      public int getLonCount() {
+        return instance.getLonCount();
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public int getLonCount() {
-        return lon_.size();
-      }
-      /**
+       *
        * <code>repeated sint64 lon = 9 [packed = true];</code>
-       *
+       */
+      public long getLon(int index) {
+        return instance.getLon(index);
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public long getLon(int index) {
-        return lon_.get(index);
-      }
-      /**
+       *
        * <code>repeated sint64 lon = 9 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder setLon(
           int index, long value) {
-        ensureLonIsMutable();
-        lon_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setLon(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 lon = 9 [packed = true];</code>
-       *
+       */
+      public Builder addLon(long value) {
+        copyOnWrite();
+        instance.addLon(value);
+        return this;
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      public Builder addLon(long value) {
-        ensureLonIsMutable();
-        lon_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated sint64 lon = 9 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder addAllLon(
           java.lang.Iterable<? extends java.lang.Long> values) {
-        ensureLonIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, lon_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllLon(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 lon = 9 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder clearLon() {
-        lon_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000008);
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> keysVals_ = java.util.Collections.emptyList();
-      private void ensureKeysValsIsMutable() {
-        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
-          keysVals_ = new java.util.ArrayList<>(keysVals_);
-          bitField0_ |= 0x00000010;
-         }
-      }
-      /**
+        copyOnWrite();
+        instance.clearLon();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
+       * </pre>
+       *
        * <code>repeated int32 keys_vals = 10 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Integer>
+          getKeysValsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getKeysValsList());
+      }
+      /**
        * <pre>
        * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Integer>
-          getKeysValsList() {
-        return java.util.Collections.unmodifiableList(keysVals_);
-      }
-      /**
+       *
        * <code>repeated int32 keys_vals = 10 [packed = true];</code>
-       *
+       */
+      public int getKeysValsCount() {
+        return instance.getKeysValsCount();
+      }
+      /**
        * <pre>
        * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
        * </pre>
-       */
-      @Override
-	public int getKeysValsCount() {
-        return keysVals_.size();
-      }
-      /**
+       *
        * <code>repeated int32 keys_vals = 10 [packed = true];</code>
-       *
+       */
+      public int getKeysVals(int index) {
+        return instance.getKeysVals(index);
+      }
+      /**
        * <pre>
        * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
        * </pre>
-       */
-      @Override
-	public int getKeysVals(int index) {
-        return keysVals_.get(index);
-      }
-      /**
+       *
        * <code>repeated int32 keys_vals = 10 [packed = true];</code>
-       *
-       * <pre>
-       * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
-       * </pre>
        */
       public Builder setKeysVals(
           int index, int value) {
-        ensureKeysValsIsMutable();
-        keysVals_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setKeysVals(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
+       * </pre>
+       *
        * <code>repeated int32 keys_vals = 10 [packed = true];</code>
-       *
+       */
+      public Builder addKeysVals(int value) {
+        copyOnWrite();
+        instance.addKeysVals(value);
+        return this;
+      }
+      /**
        * <pre>
        * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
        * </pre>
-       */
-      public Builder addKeysVals(int value) {
-        ensureKeysValsIsMutable();
-        keysVals_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated int32 keys_vals = 10 [packed = true];</code>
-       *
-       * <pre>
-       * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
-       * </pre>
        */
       public Builder addAllKeysVals(
           java.lang.Iterable<? extends java.lang.Integer> values) {
-        ensureKeysValsIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, keysVals_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllKeysVals(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
+       * </pre>
+       *
        * <code>repeated int32 keys_vals = 10 [packed = true];</code>
-       *
-       * <pre>
-       * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
-       * </pre>
        */
       public Builder clearKeysVals() {
-        keysVals_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000010);
-
+        copyOnWrite();
+        instance.clearKeysVals();
         return this;
       }
@@ -10725,11 +10358,200 @@
       // @@protoc_insertion_point(builder_scope:OSMPBF.DenseNodes)
     }
-
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Osmformat.DenseNodes();
+        }
+        case IS_INITIALIZED: {
+          return DEFAULT_INSTANCE;
+        }
+        case MAKE_IMMUTABLE: {
+          id_.makeImmutable();
+          lat_.makeImmutable();
+          lon_.makeImmutable();
+          keysVals_.makeImmutable();
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Osmformat.DenseNodes other = (crosby.binary.Osmformat.DenseNodes) arg1;
+          id_= visitor.visitLongList(id_, other.id_);
+          denseinfo_ = visitor.visitMessage(denseinfo_, other.denseinfo_);
+          lat_= visitor.visitLongList(lat_, other.lat_);
+          lon_= visitor.visitLongList(lon_, other.lon_);
+          keysVals_= visitor.visitIntList(keysVals_, other.keysVals_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+            bitField0_ |= other.bitField0_;
+          }
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  if (!id_.isModifiable()) {
+                    id_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(id_);
+                  }
+                  id_.addLong(input.readSInt64());
+                  break;
+                }
+                case 10: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!id_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    id_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(id_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    id_.addLong(input.readSInt64());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 42: {
+                  crosby.binary.Osmformat.DenseInfo.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                    subBuilder = denseinfo_.toBuilder();
+                  }
+                  denseinfo_ = input.readMessage(crosby.binary.Osmformat.DenseInfo.parser(), extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(denseinfo_);
+                    denseinfo_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000001;
+                  break;
+                }
+                case 64: {
+                  if (!lat_.isModifiable()) {
+                    lat_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(lat_);
+                  }
+                  lat_.addLong(input.readSInt64());
+                  break;
+                }
+                case 66: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!lat_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    lat_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(lat_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    lat_.addLong(input.readSInt64());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 72: {
+                  if (!lon_.isModifiable()) {
+                    lon_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(lon_);
+                  }
+                  lon_.addLong(input.readSInt64());
+                  break;
+                }
+                case 74: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!lon_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    lon_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(lon_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    lon_.addLong(input.readSInt64());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 80: {
+                  if (!keysVals_.isModifiable()) {
+                    keysVals_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(keysVals_);
+                  }
+                  keysVals_.addInt(input.readInt32());
+                  break;
+                }
+                case 82: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!keysVals_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    keysVals_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(keysVals_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    keysVals_.addInt(input.readInt32());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Osmformat.DenseNodes.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.DenseNodes)
+    private static final crosby.binary.Osmformat.DenseNodes DEFAULT_INSTANCE;
     static {
-      defaultInstance = new DenseNodes(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.DenseNodes)
+      DEFAULT_INSTANCE = new DenseNodes();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Osmformat.DenseNodes getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<DenseNodes> PARSER;
+
+    public static com.google.protobuf.Parser<DenseNodes> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
@@ -10748,25 +10570,25 @@
 
     /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Integer> getKeysList();
+    /**
      * <pre>
      * Parallel arrays.
      * </pre>
-     */
-    java.util.List<java.lang.Integer> getKeysList();
-    /**
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
+     */
+    int getKeysCount();
+    /**
      * <pre>
      * Parallel arrays.
      * </pre>
-     */
-    int getKeysCount();
-    /**
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
-     * <pre>
-     * Parallel arrays.
-     * </pre>
      */
     int getKeys(int index);
@@ -10795,25 +10617,25 @@
 
     /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 refs = 8 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Long> getRefsList();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    java.util.List<java.lang.Long> getRefsList();
-    /**
+     *
      * <code>repeated sint64 refs = 8 [packed = true];</code>
-     *
+     */
+    int getRefsCount();
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    int getRefsCount();
-    /**
+     *
      * <code>repeated sint64 refs = 8 [packed = true];</code>
-     *
-     * <pre>
-     * DELTA coded
-     * </pre>
      */
     long getRefs(int index);
@@ -10822,176 +10644,14 @@
    * Protobuf type {@code OSMPBF.Way}
    */
-  public static final class Way extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class Way extends
+      com.google.protobuf.GeneratedMessageLite<
+          Way, Way.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.Way)
       WayOrBuilder {
-    // Use Way.newBuilder() to construct.
-    private Way(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private Way(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final Way defaultInstance;
-    public static Way getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public Way getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private Way(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 8: {
-              bitField0_ |= 0x00000001;
-              id_ = input.readInt64();
-              break;
-            }
-            case 16: {
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                keys_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              keys_.add(input.readUInt32());
-              break;
-            }
-            case 18: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
-                keys_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                keys_.add(input.readUInt32());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 24: {
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-                vals_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              vals_.add(input.readUInt32());
-              break;
-            }
-            case 26: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
-                vals_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                vals_.add(input.readUInt32());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 34: {
-              crosby.binary.Osmformat.Info.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000002) == 0x00000002)) {
-                subBuilder = info_.toBuilder();
-              }
-              info_ = input.readMessage(crosby.binary.Osmformat.Info.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(info_);
-                info_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000002;
-              break;
-            }
-            case 64: {
-              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-                refs_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000010;
-              }
-              refs_.add(input.readSInt64());
-              break;
-            }
-            case 66: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
-                refs_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000010;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                refs_.add(input.readSInt64());
-              }
-              input.popLimit(limit);
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-          keys_ = java.util.Collections.unmodifiableList(keys_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-          vals_ = java.util.Collections.unmodifiableList(vals_);
-        }
-        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-          refs_ = java.util.Collections.unmodifiableList(refs_);
-        }
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<Way> PARSER =
-        new com.google.protobuf.AbstractParser<Way>() {
-      @Override
-	public Way parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Way(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<Way> getParserForType() {
-      return PARSER;
-    }
-
+    private Way() {
+      keys_ = emptyIntList();
+      vals_ = emptyIntList();
+      refs_ = emptyLongList();
+    }
     private int bitField0_;
     public static final int ID_FIELD_NUMBER = 1;
@@ -11000,6 +10660,5 @@
      * <code>required int64 id = 1;</code>
      */
-    @Override
-	public boolean hasId() {
+    public boolean hasId() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -11007,54 +10666,115 @@
      * <code>required int64 id = 1;</code>
      */
-    @Override
-	public long getId() {
+    public long getId() {
       return id_;
     }
+    /**
+     * <code>required int64 id = 1;</code>
+     */
+    private void setId(long value) {
+      bitField0_ |= 0x00000001;
+      id_ = value;
+    }
+    /**
+     * <code>required int64 id = 1;</code>
+     */
+    private void clearId() {
+      bitField0_ = (bitField0_ & ~0x00000001);
+      id_ = 0L;
+    }
 
     public static final int KEYS_FIELD_NUMBER = 2;
-    private java.util.List<java.lang.Integer> keys_;
-    /**
+    private com.google.protobuf.Internal.IntList keys_;
+    /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
-     * <pre>
-     * Parallel arrays.
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Integer>
+     */
+    public java.util.List<java.lang.Integer>
         getKeysList() {
       return keys_;
     }
     /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
+     */
+    public int getKeysCount() {
+      return keys_.size();
+    }
+    /**
      * <pre>
      * Parallel arrays.
      * </pre>
-     */
-    @Override
-	public int getKeysCount() {
-      return keys_.size();
-    }
-    /**
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
+     */
+    public int getKeys(int index) {
+      return keys_.getInt(index);
+    }
+    private int keysMemoizedSerializedSize = -1;
+    private void ensureKeysIsMutable() {
+      if (!keys_.isModifiable()) {
+        keys_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(keys_);
+       }
+    }
+    /**
      * <pre>
      * Parallel arrays.
      * </pre>
-     */
-    @Override
-	public int getKeys(int index) {
-      return keys_.get(index);
-    }
-    private int keysMemoizedSerializedSize = -1;
+     *
+     * <code>repeated uint32 keys = 2 [packed = true];</code>
+     */
+    private void setKeys(
+        int index, int value) {
+      ensureKeysIsMutable();
+      keys_.setInt(index, value);
+    }
+    /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
+     * <code>repeated uint32 keys = 2 [packed = true];</code>
+     */
+    private void addKeys(int value) {
+      ensureKeysIsMutable();
+      keys_.addInt(value);
+    }
+    /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
+     * <code>repeated uint32 keys = 2 [packed = true];</code>
+     */
+    private void addAllKeys(
+        java.lang.Iterable<? extends java.lang.Integer> values) {
+      ensureKeysIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, keys_);
+    }
+    /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
+     * <code>repeated uint32 keys = 2 [packed = true];</code>
+     */
+    private void clearKeys() {
+      keys_ = emptyIntList();
+    }
 
     public static final int VALS_FIELD_NUMBER = 3;
-    private java.util.List<java.lang.Integer> vals_;
+    private com.google.protobuf.Internal.IntList vals_;
     /**
      * <code>repeated uint32 vals = 3 [packed = true];</code>
      */
-    @Override
-	public java.util.List<java.lang.Integer>
+    public java.util.List<java.lang.Integer>
         getValsList() {
       return vals_;
@@ -11063,6 +10783,5 @@
      * <code>repeated uint32 vals = 3 [packed = true];</code>
      */
-    @Override
-	public int getValsCount() {
+    public int getValsCount() {
       return vals_.size();
     }
@@ -11070,9 +10789,44 @@
      * <code>repeated uint32 vals = 3 [packed = true];</code>
      */
-    @Override
-	public int getVals(int index) {
-      return vals_.get(index);
+    public int getVals(int index) {
+      return vals_.getInt(index);
     }
     private int valsMemoizedSerializedSize = -1;
+    private void ensureValsIsMutable() {
+      if (!vals_.isModifiable()) {
+        vals_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(vals_);
+       }
+    }
+    /**
+     * <code>repeated uint32 vals = 3 [packed = true];</code>
+     */
+    private void setVals(
+        int index, int value) {
+      ensureValsIsMutable();
+      vals_.setInt(index, value);
+    }
+    /**
+     * <code>repeated uint32 vals = 3 [packed = true];</code>
+     */
+    private void addVals(int value) {
+      ensureValsIsMutable();
+      vals_.addInt(value);
+    }
+    /**
+     * <code>repeated uint32 vals = 3 [packed = true];</code>
+     */
+    private void addAllVals(
+        java.lang.Iterable<? extends java.lang.Integer> values) {
+      ensureValsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, vals_);
+    }
+    /**
+     * <code>repeated uint32 vals = 3 [packed = true];</code>
+     */
+    private void clearVals() {
+      vals_ = emptyIntList();
+    }
 
     public static final int INFO_FIELD_NUMBER = 4;
@@ -11081,6 +10835,5 @@
      * <code>optional .OSMPBF.Info info = 4;</code>
      */
-    @Override
-	public boolean hasInfo() {
+    public boolean hasInfo() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
@@ -11088,71 +10841,133 @@
      * <code>optional .OSMPBF.Info info = 4;</code>
      */
-    @Override
-	public crosby.binary.Osmformat.Info getInfo() {
-      return info_;
+    public crosby.binary.Osmformat.Info getInfo() {
+      return info_ == null ? crosby.binary.Osmformat.Info.getDefaultInstance() : info_;
+    }
+    /**
+     * <code>optional .OSMPBF.Info info = 4;</code>
+     */
+    private void setInfo(crosby.binary.Osmformat.Info value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      info_ = value;
+      bitField0_ |= 0x00000002;
+      }
+    /**
+     * <code>optional .OSMPBF.Info info = 4;</code>
+     */
+    private void setInfo(
+        crosby.binary.Osmformat.Info.Builder builderForValue) {
+      info_ = builderForValue.build();
+      bitField0_ |= 0x00000002;
+    }
+    /**
+     * <code>optional .OSMPBF.Info info = 4;</code>
+     */
+    private void mergeInfo(crosby.binary.Osmformat.Info value) {
+      if (info_ != null &&
+          info_ != crosby.binary.Osmformat.Info.getDefaultInstance()) {
+        info_ =
+          crosby.binary.Osmformat.Info.newBuilder(info_).mergeFrom(value).buildPartial();
+      } else {
+        info_ = value;
+      }
+      bitField0_ |= 0x00000002;
+    }
+    /**
+     * <code>optional .OSMPBF.Info info = 4;</code>
+     */
+    private void clearInfo() {  info_ = null;
+      bitField0_ = (bitField0_ & ~0x00000002);
     }
 
     public static final int REFS_FIELD_NUMBER = 8;
-    private java.util.List<java.lang.Long> refs_;
-    /**
+    private com.google.protobuf.Internal.LongList refs_;
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 refs = 8 [packed = true];</code>
-     *
-     * <pre>
-     * DELTA coded
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Long>
+     */
+    public java.util.List<java.lang.Long>
         getRefsList() {
       return refs_;
     }
     /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
      * <code>repeated sint64 refs = 8 [packed = true];</code>
-     *
+     */
+    public int getRefsCount() {
+      return refs_.size();
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public int getRefsCount() {
-      return refs_.size();
-    }
-    /**
+     *
      * <code>repeated sint64 refs = 8 [packed = true];</code>
-     *
+     */
+    public long getRefs(int index) {
+      return refs_.getLong(index);
+    }
+    private int refsMemoizedSerializedSize = -1;
+    private void ensureRefsIsMutable() {
+      if (!refs_.isModifiable()) {
+        refs_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(refs_);
+       }
+    }
+    /**
      * <pre>
      * DELTA coded
      * </pre>
-     */
-    @Override
-	public long getRefs(int index) {
-      return refs_.get(index);
-    }
-    private int refsMemoizedSerializedSize = -1;
-
-    private void initFields() {
-      id_ = 0L;
-      keys_ = java.util.Collections.emptyList();
-      vals_ = java.util.Collections.emptyList();
-      info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
-      refs_ = java.util.Collections.emptyList();
-    }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      if (!hasId()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+     *
+     * <code>repeated sint64 refs = 8 [packed = true];</code>
+     */
+    private void setRefs(
+        int index, long value) {
+      ensureRefsIsMutable();
+      refs_.setLong(index, value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 refs = 8 [packed = true];</code>
+     */
+    private void addRefs(long value) {
+      ensureRefsIsMutable();
+      refs_.addLong(value);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 refs = 8 [packed = true];</code>
+     */
+    private void addAllRefs(
+        java.lang.Iterable<? extends java.lang.Long> values) {
+      ensureRefsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, refs_);
+    }
+    /**
+     * <pre>
+     * DELTA coded
+     * </pre>
+     *
+     * <code>repeated sint64 refs = 8 [packed = true];</code>
+     */
+    private void clearRefs() {
+      refs_ = emptyLongList();
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
@@ -11161,33 +10976,31 @@
       }
       if (getKeysList().size() > 0) {
-        output.writeRawVarint32(18);
-        output.writeRawVarint32(keysMemoizedSerializedSize);
+        output.writeUInt32NoTag(18);
+        output.writeUInt32NoTag(keysMemoizedSerializedSize);
       }
       for (int i = 0; i < keys_.size(); i++) {
-        output.writeUInt32NoTag(keys_.get(i));
+        output.writeUInt32NoTag(keys_.getInt(i));
       }
       if (getValsList().size() > 0) {
-        output.writeRawVarint32(26);
-        output.writeRawVarint32(valsMemoizedSerializedSize);
+        output.writeUInt32NoTag(26);
+        output.writeUInt32NoTag(valsMemoizedSerializedSize);
       }
       for (int i = 0; i < vals_.size(); i++) {
-        output.writeUInt32NoTag(vals_.get(i));
+        output.writeUInt32NoTag(vals_.getInt(i));
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeMessage(4, info_);
+        output.writeMessage(4, getInfo());
       }
       if (getRefsList().size() > 0) {
-        output.writeRawVarint32(66);
-        output.writeRawVarint32(refsMemoizedSerializedSize);
+        output.writeUInt32NoTag(66);
+        output.writeUInt32NoTag(refsMemoizedSerializedSize);
       }
       for (int i = 0; i < refs_.size(); i++) {
-        output.writeSInt64NoTag(refs_.get(i));
-      }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+        output.writeSInt64NoTag(refs_.getLong(i));
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -11202,5 +11015,5 @@
         for (int i = 0; i < keys_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeUInt32SizeNoTag(keys_.get(i));
+            .computeUInt32SizeNoTag(keys_.getInt(i));
         }
         size += dataSize;
@@ -11216,5 +11029,5 @@
         for (int i = 0; i < vals_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeUInt32SizeNoTag(vals_.get(i));
+            .computeUInt32SizeNoTag(vals_.getInt(i));
         }
         size += dataSize;
@@ -11228,5 +11041,5 @@
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, info_);
+          .computeMessageSize(4, getInfo());
       }
       {
@@ -11234,5 +11047,5 @@
         for (int i = 0; i < refs_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeSInt64SizeNoTag(refs_.get(i));
+            .computeSInt64SizeNoTag(refs_.getLong(i));
         }
         size += dataSize;
@@ -11244,20 +11057,27 @@
         refsMemoizedSerializedSize = dataSize;
       }
-      size += unknownFields.size();
+      size += unknownFields.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 crosby.binary.Osmformat.Way parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Osmformat.Way parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Osmformat.Way parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.Way parseFrom(
@@ -11265,9 +11085,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Way parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.Way parseFrom(
@@ -11275,9 +11097,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Way parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.Way parseFrom(
@@ -11285,9 +11109,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Way parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.Way parseDelimitedFrom(
@@ -11295,10 +11120,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Way parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.Way parseFrom(
@@ -11306,15 +11132,14 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Osmformat.Way prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
 
     /**
@@ -11323,173 +11148,24 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Osmformat.Way, Builder>
-        implements
+          crosby.binary.Osmformat.Way, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.Way)
         crosby.binary.Osmformat.WayOrBuilder {
       // Construct using crosby.binary.Osmformat.Way.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        id_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        keys_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000002);
-        vals_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000004);
-        info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
-        bitField0_ = (bitField0_ & ~0x00000008);
-        refs_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000010);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Osmformat.Way getDefaultInstanceForType() {
-        return crosby.binary.Osmformat.Way.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Osmformat.Way build() {
-        crosby.binary.Osmformat.Way result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Osmformat.Way buildPartial() {
-        crosby.binary.Osmformat.Way result = new crosby.binary.Osmformat.Way(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.id_ = id_;
-        if (((bitField0_ & 0x00000002) == 0x00000002)) {
-          keys_ = java.util.Collections.unmodifiableList(keys_);
-          bitField0_ = (bitField0_ & ~0x00000002);
-        }
-        result.keys_ = keys_;
-        if (((bitField0_ & 0x00000004) == 0x00000004)) {
-          vals_ = java.util.Collections.unmodifiableList(vals_);
-          bitField0_ = (bitField0_ & ~0x00000004);
-        }
-        result.vals_ = vals_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.info_ = info_;
-        if (((bitField0_ & 0x00000010) == 0x00000010)) {
-          refs_ = java.util.Collections.unmodifiableList(refs_);
-          bitField0_ = (bitField0_ & ~0x00000010);
-        }
-        result.refs_ = refs_;
-        result.bitField0_ = to_bitField0_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Osmformat.Way other) {
-        if (other == crosby.binary.Osmformat.Way.getDefaultInstance()) return this;
-        if (other.hasId()) {
-          setId(other.getId());
-        }
-        if (!other.keys_.isEmpty()) {
-          if (keys_.isEmpty()) {
-            keys_ = other.keys_;
-            bitField0_ = (bitField0_ & ~0x00000002);
-          } else {
-            ensureKeysIsMutable();
-            keys_.addAll(other.keys_);
-          }
-
-        }
-        if (!other.vals_.isEmpty()) {
-          if (vals_.isEmpty()) {
-            vals_ = other.vals_;
-            bitField0_ = (bitField0_ & ~0x00000004);
-          } else {
-            ensureValsIsMutable();
-            vals_.addAll(other.vals_);
-          }
-
-        }
-        if (other.hasInfo()) {
-          mergeInfo(other.getInfo());
-        }
-        if (!other.refs_.isEmpty()) {
-          if (refs_.isEmpty()) {
-            refs_ = other.refs_;
-            bitField0_ = (bitField0_ & ~0x00000010);
-          } else {
-            ensureRefsIsMutable();
-            refs_.addAll(other.refs_);
-          }
-
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        if (!hasId()) {
-
-          return false;
-        }
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Osmformat.Way parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Osmformat.Way) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private long id_ ;
+        super(DEFAULT_INSTANCE);
+      }
+
+
       /**
        * <code>required int64 id = 1;</code>
        */
-      @Override
-	public boolean hasId() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
+      public boolean hasId() {
+        return instance.hasId();
       }
       /**
        * <code>required int64 id = 1;</code>
        */
-      @Override
-	public long getId() {
-        return id_;
+      public long getId() {
+        return instance.getId();
       }
       /**
@@ -11497,7 +11173,6 @@
        */
       public Builder setId(long value) {
-        bitField0_ |= 0x00000001;
-        id_ = value;
-
+        copyOnWrite();
+        instance.setId(value);
         return this;
       }
@@ -11506,135 +11181,111 @@
        */
       public Builder clearId() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        id_ = 0L;
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> keys_ = java.util.Collections.emptyList();
-      private void ensureKeysIsMutable() {
-        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          keys_ = new java.util.ArrayList<>(keys_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-      /**
+        copyOnWrite();
+        instance.clearId();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * Parallel arrays.
+       * </pre>
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Integer>
+          getKeysList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getKeysList());
+      }
+      /**
        * <pre>
        * Parallel arrays.
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Integer>
-          getKeysList() {
-        return java.util.Collections.unmodifiableList(keys_);
-      }
-      /**
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
+       */
+      public int getKeysCount() {
+        return instance.getKeysCount();
+      }
+      /**
        * <pre>
        * Parallel arrays.
        * </pre>
-       */
-      @Override
-	public int getKeysCount() {
-        return keys_.size();
-      }
-      /**
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
+       */
+      public int getKeys(int index) {
+        return instance.getKeys(index);
+      }
+      /**
        * <pre>
        * Parallel arrays.
        * </pre>
-       */
-      @Override
-	public int getKeys(int index) {
-        return keys_.get(index);
-      }
-      /**
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
-       * <pre>
-       * Parallel arrays.
-       * </pre>
        */
       public Builder setKeys(
           int index, int value) {
-        ensureKeysIsMutable();
-        keys_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setKeys(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * Parallel arrays.
+       * </pre>
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
+       */
+      public Builder addKeys(int value) {
+        copyOnWrite();
+        instance.addKeys(value);
+        return this;
+      }
+      /**
        * <pre>
        * Parallel arrays.
        * </pre>
-       */
-      public Builder addKeys(int value) {
-        ensureKeysIsMutable();
-        keys_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
-       * <pre>
-       * Parallel arrays.
-       * </pre>
        */
       public Builder addAllKeys(
           java.lang.Iterable<? extends java.lang.Integer> values) {
-        ensureKeysIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, keys_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllKeys(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * Parallel arrays.
+       * </pre>
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
-       * <pre>
-       * Parallel arrays.
-       * </pre>
        */
       public Builder clearKeys() {
-        keys_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000002);
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> vals_ = java.util.Collections.emptyList();
-      private void ensureValsIsMutable() {
-        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
-          vals_ = new java.util.ArrayList<>(vals_);
-          bitField0_ |= 0x00000004;
-         }
-      }
+        copyOnWrite();
+        instance.clearKeys();
+        return this;
+      }
+
       /**
        * <code>repeated uint32 vals = 3 [packed = true];</code>
        */
-      @Override
-	public java.util.List<java.lang.Integer>
+      public java.util.List<java.lang.Integer>
           getValsList() {
-        return java.util.Collections.unmodifiableList(vals_);
+        return java.util.Collections.unmodifiableList(
+            instance.getValsList());
       }
       /**
        * <code>repeated uint32 vals = 3 [packed = true];</code>
        */
-      @Override
-	public int getValsCount() {
-        return vals_.size();
+      public int getValsCount() {
+        return instance.getValsCount();
       }
       /**
        * <code>repeated uint32 vals = 3 [packed = true];</code>
        */
-      @Override
-	public int getVals(int index) {
-        return vals_.get(index);
+      public int getVals(int index) {
+        return instance.getVals(index);
       }
       /**
@@ -11643,7 +11294,6 @@
       public Builder setVals(
           int index, int value) {
-        ensureValsIsMutable();
-        vals_.set(index, value);
-
+        copyOnWrite();
+        instance.setVals(index, value);
         return this;
       }
@@ -11652,7 +11302,6 @@
        */
       public Builder addVals(int value) {
-        ensureValsIsMutable();
-        vals_.add(value);
-
+        copyOnWrite();
+        instance.addVals(value);
         return this;
       }
@@ -11662,8 +11311,6 @@
       public Builder addAllVals(
           java.lang.Iterable<? extends java.lang.Integer> values) {
-        ensureValsIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, vals_);
-
+        copyOnWrite();
+        instance.addAllVals(values);
         return this;
       }
@@ -11672,24 +11319,20 @@
        */
       public Builder clearVals() {
-        vals_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000004);
-
-        return this;
-      }
-
-      private crosby.binary.Osmformat.Info info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
+        copyOnWrite();
+        instance.clearVals();
+        return this;
+      }
+
       /**
        * <code>optional .OSMPBF.Info info = 4;</code>
        */
-      @Override
-	public boolean hasInfo() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
+      public boolean hasInfo() {
+        return instance.hasInfo();
       }
       /**
        * <code>optional .OSMPBF.Info info = 4;</code>
        */
-      @Override
-	public crosby.binary.Osmformat.Info getInfo() {
-        return info_;
+      public crosby.binary.Osmformat.Info getInfo() {
+        return instance.getInfo();
       }
       /**
@@ -11697,12 +11340,8 @@
        */
       public Builder setInfo(crosby.binary.Osmformat.Info value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        info_ = value;
-
-        bitField0_ |= 0x00000008;
-        return this;
-      }
+        copyOnWrite();
+        instance.setInfo(value);
+        return this;
+        }
       /**
        * <code>optional .OSMPBF.Info info = 4;</code>
@@ -11710,7 +11349,6 @@
       public Builder setInfo(
           crosby.binary.Osmformat.Info.Builder builderForValue) {
-        info_ = builderForValue.build();
-
-        bitField0_ |= 0x00000008;
+        copyOnWrite();
+        instance.setInfo(builderForValue);
         return this;
       }
@@ -11719,13 +11357,6 @@
        */
       public Builder mergeInfo(crosby.binary.Osmformat.Info value) {
-        if (((bitField0_ & 0x00000008) == 0x00000008) &&
-            info_ != crosby.binary.Osmformat.Info.getDefaultInstance()) {
-          info_ =
-            crosby.binary.Osmformat.Info.newBuilder(info_).mergeFrom(value).buildPartial();
-        } else {
-          info_ = value;
-        }
-
-        bitField0_ |= 0x00000008;
+        copyOnWrite();
+        instance.mergeInfo(value);
         return this;
       }
@@ -11733,105 +11364,89 @@
        * <code>optional .OSMPBF.Info info = 4;</code>
        */
-      public Builder clearInfo() {
-        info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
-
-        bitField0_ = (bitField0_ & ~0x00000008);
-        return this;
-      }
-
-      private java.util.List<java.lang.Long> refs_ = java.util.Collections.emptyList();
-      private void ensureRefsIsMutable() {
-        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
-          refs_ = new java.util.ArrayList<>(refs_);
-          bitField0_ |= 0x00000010;
-         }
-      }
-      /**
+      public Builder clearInfo() {  copyOnWrite();
+        instance.clearInfo();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 refs = 8 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Long>
+          getRefsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getRefsList());
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Long>
-          getRefsList() {
-        return java.util.Collections.unmodifiableList(refs_);
-      }
-      /**
+       *
        * <code>repeated sint64 refs = 8 [packed = true];</code>
-       *
+       */
+      public int getRefsCount() {
+        return instance.getRefsCount();
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public int getRefsCount() {
-        return refs_.size();
-      }
-      /**
+       *
        * <code>repeated sint64 refs = 8 [packed = true];</code>
-       *
+       */
+      public long getRefs(int index) {
+        return instance.getRefs(index);
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      @Override
-	public long getRefs(int index) {
-        return refs_.get(index);
-      }
-      /**
+       *
        * <code>repeated sint64 refs = 8 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder setRefs(
           int index, long value) {
-        ensureRefsIsMutable();
-        refs_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setRefs(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 refs = 8 [packed = true];</code>
-       *
+       */
+      public Builder addRefs(long value) {
+        copyOnWrite();
+        instance.addRefs(value);
+        return this;
+      }
+      /**
        * <pre>
        * DELTA coded
        * </pre>
-       */
-      public Builder addRefs(long value) {
-        ensureRefsIsMutable();
-        refs_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated sint64 refs = 8 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder addAllRefs(
           java.lang.Iterable<? extends java.lang.Long> values) {
-        ensureRefsIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, refs_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllRefs(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA coded
+       * </pre>
+       *
        * <code>repeated sint64 refs = 8 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA coded
-       * </pre>
        */
       public Builder clearRefs() {
-        refs_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000010);
-
+        copyOnWrite();
+        instance.clearRefs();
         return this;
       }
@@ -11839,11 +11454,199 @@
       // @@protoc_insertion_point(builder_scope:OSMPBF.Way)
     }
-
+    private byte memoizedIsInitialized = -1;
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Osmformat.Way();
+        }
+        case IS_INITIALIZED: {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized == 1) return DEFAULT_INSTANCE;
+          if (isInitialized == 0) return null;
+
+          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
+          if (!hasId()) {
+            if (shouldMemoize) {
+              memoizedIsInitialized = 0;
+            }
+            return null;
+          }
+          if (shouldMemoize) memoizedIsInitialized = 1;
+          return DEFAULT_INSTANCE;
+
+        }
+        case MAKE_IMMUTABLE: {
+          keys_.makeImmutable();
+          vals_.makeImmutable();
+          refs_.makeImmutable();
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Osmformat.Way other = (crosby.binary.Osmformat.Way) arg1;
+          id_ = visitor.visitLong(
+              hasId(), id_,
+              other.hasId(), other.id_);
+          keys_= visitor.visitIntList(keys_, other.keys_);
+          vals_= visitor.visitIntList(vals_, other.vals_);
+          info_ = visitor.visitMessage(info_, other.info_);
+          refs_= visitor.visitLongList(refs_, other.refs_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+            bitField0_ |= other.bitField0_;
+          }
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  bitField0_ |= 0x00000001;
+                  id_ = input.readInt64();
+                  break;
+                }
+                case 16: {
+                  if (!keys_.isModifiable()) {
+                    keys_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(keys_);
+                  }
+                  keys_.addInt(input.readUInt32());
+                  break;
+                }
+                case 18: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!keys_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    keys_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(keys_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    keys_.addInt(input.readUInt32());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 24: {
+                  if (!vals_.isModifiable()) {
+                    vals_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(vals_);
+                  }
+                  vals_.addInt(input.readUInt32());
+                  break;
+                }
+                case 26: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!vals_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    vals_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(vals_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    vals_.addInt(input.readUInt32());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 34: {
+                  crosby.binary.Osmformat.Info.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = info_.toBuilder();
+                  }
+                  info_ = input.readMessage(crosby.binary.Osmformat.Info.parser(), extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(info_);
+                    info_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
+                  break;
+                }
+                case 64: {
+                  if (!refs_.isModifiable()) {
+                    refs_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(refs_);
+                  }
+                  refs_.addLong(input.readSInt64());
+                  break;
+                }
+                case 66: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!refs_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    refs_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(refs_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    refs_.addLong(input.readSInt64());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Osmformat.Way.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.Way)
+    private static final crosby.binary.Osmformat.Way DEFAULT_INSTANCE;
     static {
-      defaultInstance = new Way(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.Way)
+      DEFAULT_INSTANCE = new Way();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Osmformat.Way getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<Way> PARSER;
+
+    public static com.google.protobuf.Parser<Way> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
@@ -11862,25 +11665,25 @@
 
     /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Integer> getKeysList();
+    /**
      * <pre>
      * Parallel arrays.
      * </pre>
-     */
-    java.util.List<java.lang.Integer> getKeysList();
-    /**
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
+     */
+    int getKeysCount();
+    /**
      * <pre>
      * Parallel arrays.
      * </pre>
-     */
-    int getKeysCount();
-    /**
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
-     * <pre>
-     * Parallel arrays.
-     * </pre>
      */
     int getKeys(int index);
@@ -11909,50 +11712,50 @@
 
     /**
+     * <pre>
+     * Parallel arrays
+     * </pre>
+     *
      * <code>repeated int32 roles_sid = 8 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Integer> getRolesSidList();
+    /**
      * <pre>
      * Parallel arrays
      * </pre>
-     */
-    java.util.List<java.lang.Integer> getRolesSidList();
-    /**
+     *
      * <code>repeated int32 roles_sid = 8 [packed = true];</code>
-     *
+     */
+    int getRolesSidCount();
+    /**
      * <pre>
      * Parallel arrays
      * </pre>
-     */
-    int getRolesSidCount();
-    /**
+     *
      * <code>repeated int32 roles_sid = 8 [packed = true];</code>
-     *
-     * <pre>
-     * Parallel arrays
-     * </pre>
      */
     int getRolesSid(int index);
 
     /**
+     * <pre>
+     * DELTA encoded
+     * </pre>
+     *
      * <code>repeated sint64 memids = 9 [packed = true];</code>
-     *
+     */
+    java.util.List<java.lang.Long> getMemidsList();
+    /**
      * <pre>
      * DELTA encoded
      * </pre>
-     */
-    java.util.List<java.lang.Long> getMemidsList();
-    /**
+     *
      * <code>repeated sint64 memids = 9 [packed = true];</code>
-     *
+     */
+    int getMemidsCount();
+    /**
      * <pre>
      * DELTA encoded
      * </pre>
-     */
-    int getMemidsCount();
-    /**
+     *
      * <code>repeated sint64 memids = 9 [packed = true];</code>
-     *
-     * <pre>
-     * DELTA encoded
-     * </pre>
      */
     long getMemids(int index);
@@ -11974,238 +11777,16 @@
    * Protobuf type {@code OSMPBF.Relation}
    */
-  public static final class Relation extends
-      com.google.protobuf.GeneratedMessageLite implements
+  public  static final class Relation extends
+      com.google.protobuf.GeneratedMessageLite<
+          Relation, Relation.Builder> implements
       // @@protoc_insertion_point(message_implements:OSMPBF.Relation)
       RelationOrBuilder {
-    // Use Relation.newBuilder() to construct.
-    private Relation(com.google.protobuf.GeneratedMessageLite.Builder builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private Relation(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
-
-    private static final Relation defaultInstance;
-    public static Relation getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    @Override
-	public Relation getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.ByteString unknownFields;
-    private Relation(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.ByteString.Output unknownFieldsOutput =
-          com.google.protobuf.ByteString.newOutput();
-      com.google.protobuf.CodedOutputStream unknownFieldsCodedOutput =
-          com.google.protobuf.CodedOutputStream.newInstance(
-              unknownFieldsOutput);
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFieldsCodedOutput,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 8: {
-              bitField0_ |= 0x00000001;
-              id_ = input.readInt64();
-              break;
-            }
-            case 16: {
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                keys_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              keys_.add(input.readUInt32());
-              break;
-            }
-            case 18: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
-                keys_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                keys_.add(input.readUInt32());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 24: {
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-                vals_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              vals_.add(input.readUInt32());
-              break;
-            }
-            case 26: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
-                vals_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                vals_.add(input.readUInt32());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 34: {
-              crosby.binary.Osmformat.Info.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000002) == 0x00000002)) {
-                subBuilder = info_.toBuilder();
-              }
-              info_ = input.readMessage(crosby.binary.Osmformat.Info.PARSER, extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(info_);
-                info_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000002;
-              break;
-            }
-            case 64: {
-              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-                rolesSid_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000010;
-              }
-              rolesSid_.add(input.readInt32());
-              break;
-            }
-            case 66: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
-                rolesSid_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000010;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                rolesSid_.add(input.readInt32());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 72: {
-              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
-                memids_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000020;
-              }
-              memids_.add(input.readSInt64());
-              break;
-            }
-            case 74: {
-              int length = input.readRawVarint32();
-              int limit = input.pushLimit(length);
-              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
-                memids_ = new java.util.ArrayList<>();
-                mutable_bitField0_ |= 0x00000020;
-              }
-              while (input.getBytesUntilLimit() > 0) {
-                memids_.add(input.readSInt64());
-              }
-              input.popLimit(limit);
-              break;
-            }
-            case 80: {
-              int rawValue = input.readEnum();
-              crosby.binary.Osmformat.Relation.MemberType value = crosby.binary.Osmformat.Relation.MemberType.valueOf(rawValue);
-              if (value == null) {
-                unknownFieldsCodedOutput.writeRawVarint32(tag);
-                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
-                } else {
-                if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
-                  types_ = new java.util.ArrayList<>();
-                  mutable_bitField0_ |= 0x00000040;
-                }
-                types_.add(value);
-              }
-              break;
-            }
-            case 82: {
-              int length = input.readRawVarint32();
-              int oldLimit = input.pushLimit(length);
-              while(input.getBytesUntilLimit() > 0) {
-                int rawValue = input.readEnum();
-                crosby.binary.Osmformat.Relation.MemberType value = crosby.binary.Osmformat.Relation.MemberType.valueOf(rawValue);
-                if (value == null) {
-                  unknownFieldsCodedOutput.writeRawVarint32(tag);
-                  unknownFieldsCodedOutput.writeRawVarint32(rawValue);
-                  } else {
-                  if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
-                    types_ = new java.util.ArrayList<>();
-                    mutable_bitField0_ |= 0x00000040;
-                  }
-                  types_.add(value);
-                }
-              }
-              input.popLimit(oldLimit);
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-          keys_ = java.util.Collections.unmodifiableList(keys_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-          vals_ = java.util.Collections.unmodifiableList(vals_);
-        }
-        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
-          rolesSid_ = java.util.Collections.unmodifiableList(rolesSid_);
-        }
-        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
-          memids_ = java.util.Collections.unmodifiableList(memids_);
-        }
-        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
-          types_ = java.util.Collections.unmodifiableList(types_);
-        }
-        try {
-          unknownFieldsCodedOutput.flush();
-        } catch (java.io.IOException e) {
-        // Should not happen
-        } finally {
-          unknownFields = unknownFieldsOutput.toByteString();
-        }
-        makeExtensionsImmutable();
-      }
-    }
-    public static com.google.protobuf.Parser<Relation> PARSER =
-        new com.google.protobuf.AbstractParser<Relation>() {
-      @Override
-	public Relation parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Relation(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<Relation> getParserForType() {
-      return PARSER;
-    }
-
+    private Relation() {
+      keys_ = emptyIntList();
+      vals_ = emptyIntList();
+      rolesSid_ = emptyIntList();
+      memids_ = emptyLongList();
+      types_ = emptyIntList();
+    }
     /**
      * Protobuf enum {@code OSMPBF.Relation.MemberType}
@@ -12216,13 +11797,13 @@
        * <code>NODE = 0;</code>
        */
-      NODE(0, 0),
+      NODE(0),
       /**
        * <code>WAY = 1;</code>
        */
-      WAY(1, 1),
+      WAY(1),
       /**
        * <code>RELATION = 2;</code>
        */
-      RELATION(2, 2),
+      RELATION(2),
       ;
 
@@ -12241,8 +11822,17 @@
 
 
-      @Override
-	public final int getNumber() { return value; }
-
+      public final int getNumber() {
+        return value;
+      }
+
+      /**
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
       public static MemberType valueOf(int value) {
+        return forNumber(value);
+      }
+
+      public static MemberType forNumber(int value) {
         switch (value) {
           case 0: return NODE;
@@ -12257,10 +11847,9 @@
         return internalValueMap;
       }
-      private static com.google.protobuf.Internal.EnumLiteMap<MemberType>
-          internalValueMap =
+      private static final com.google.protobuf.Internal.EnumLiteMap<
+          MemberType> internalValueMap =
             new com.google.protobuf.Internal.EnumLiteMap<MemberType>() {
-              @Override
-			public MemberType findValueByNumber(int number) {
-                return MemberType.valueOf(number);
+              public MemberType findValueByNumber(int number) {
+                return MemberType.forNumber(number);
               }
             };
@@ -12268,5 +11857,5 @@
       private final int value;
 
-      private MemberType(int index, int value) {
+      private MemberType(int value) {
         this.value = value;
       }
@@ -12281,6 +11870,5 @@
      * <code>required int64 id = 1;</code>
      */
-    @Override
-	public boolean hasId() {
+    public boolean hasId() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
@@ -12288,54 +11876,115 @@
      * <code>required int64 id = 1;</code>
      */
-    @Override
-	public long getId() {
+    public long getId() {
       return id_;
     }
+    /**
+     * <code>required int64 id = 1;</code>
+     */
+    private void setId(long value) {
+      bitField0_ |= 0x00000001;
+      id_ = value;
+    }
+    /**
+     * <code>required int64 id = 1;</code>
+     */
+    private void clearId() {
+      bitField0_ = (bitField0_ & ~0x00000001);
+      id_ = 0L;
+    }
 
     public static final int KEYS_FIELD_NUMBER = 2;
-    private java.util.List<java.lang.Integer> keys_;
-    /**
+    private com.google.protobuf.Internal.IntList keys_;
+    /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
-     * <pre>
-     * Parallel arrays.
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Integer>
+     */
+    public java.util.List<java.lang.Integer>
         getKeysList() {
       return keys_;
     }
     /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
+     */
+    public int getKeysCount() {
+      return keys_.size();
+    }
+    /**
      * <pre>
      * Parallel arrays.
      * </pre>
-     */
-    @Override
-	public int getKeysCount() {
-      return keys_.size();
-    }
-    /**
+     *
      * <code>repeated uint32 keys = 2 [packed = true];</code>
-     *
+     */
+    public int getKeys(int index) {
+      return keys_.getInt(index);
+    }
+    private int keysMemoizedSerializedSize = -1;
+    private void ensureKeysIsMutable() {
+      if (!keys_.isModifiable()) {
+        keys_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(keys_);
+       }
+    }
+    /**
      * <pre>
      * Parallel arrays.
      * </pre>
-     */
-    @Override
-	public int getKeys(int index) {
-      return keys_.get(index);
-    }
-    private int keysMemoizedSerializedSize = -1;
+     *
+     * <code>repeated uint32 keys = 2 [packed = true];</code>
+     */
+    private void setKeys(
+        int index, int value) {
+      ensureKeysIsMutable();
+      keys_.setInt(index, value);
+    }
+    /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
+     * <code>repeated uint32 keys = 2 [packed = true];</code>
+     */
+    private void addKeys(int value) {
+      ensureKeysIsMutable();
+      keys_.addInt(value);
+    }
+    /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
+     * <code>repeated uint32 keys = 2 [packed = true];</code>
+     */
+    private void addAllKeys(
+        java.lang.Iterable<? extends java.lang.Integer> values) {
+      ensureKeysIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, keys_);
+    }
+    /**
+     * <pre>
+     * Parallel arrays.
+     * </pre>
+     *
+     * <code>repeated uint32 keys = 2 [packed = true];</code>
+     */
+    private void clearKeys() {
+      keys_ = emptyIntList();
+    }
 
     public static final int VALS_FIELD_NUMBER = 3;
-    private java.util.List<java.lang.Integer> vals_;
+    private com.google.protobuf.Internal.IntList vals_;
     /**
      * <code>repeated uint32 vals = 3 [packed = true];</code>
      */
-    @Override
-	public java.util.List<java.lang.Integer>
+    public java.util.List<java.lang.Integer>
         getValsList() {
       return vals_;
@@ -12344,6 +11993,5 @@
      * <code>repeated uint32 vals = 3 [packed = true];</code>
      */
-    @Override
-	public int getValsCount() {
+    public int getValsCount() {
       return vals_.size();
     }
@@ -12351,9 +11999,44 @@
      * <code>repeated uint32 vals = 3 [packed = true];</code>
      */
-    @Override
-	public int getVals(int index) {
-      return vals_.get(index);
+    public int getVals(int index) {
+      return vals_.getInt(index);
     }
     private int valsMemoizedSerializedSize = -1;
+    private void ensureValsIsMutable() {
+      if (!vals_.isModifiable()) {
+        vals_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(vals_);
+       }
+    }
+    /**
+     * <code>repeated uint32 vals = 3 [packed = true];</code>
+     */
+    private void setVals(
+        int index, int value) {
+      ensureValsIsMutable();
+      vals_.setInt(index, value);
+    }
+    /**
+     * <code>repeated uint32 vals = 3 [packed = true];</code>
+     */
+    private void addVals(int value) {
+      ensureValsIsMutable();
+      vals_.addInt(value);
+    }
+    /**
+     * <code>repeated uint32 vals = 3 [packed = true];</code>
+     */
+    private void addAllVals(
+        java.lang.Iterable<? extends java.lang.Integer> values) {
+      ensureValsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, vals_);
+    }
+    /**
+     * <code>repeated uint32 vals = 3 [packed = true];</code>
+     */
+    private void clearVals() {
+      vals_ = emptyIntList();
+    }
 
     public static final int INFO_FIELD_NUMBER = 4;
@@ -12362,6 +12045,5 @@
      * <code>optional .OSMPBF.Info info = 4;</code>
      */
-    @Override
-	public boolean hasInfo() {
+    public boolean hasInfo() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
@@ -12369,99 +12051,241 @@
      * <code>optional .OSMPBF.Info info = 4;</code>
      */
-    @Override
-	public crosby.binary.Osmformat.Info getInfo() {
-      return info_;
+    public crosby.binary.Osmformat.Info getInfo() {
+      return info_ == null ? crosby.binary.Osmformat.Info.getDefaultInstance() : info_;
+    }
+    /**
+     * <code>optional .OSMPBF.Info info = 4;</code>
+     */
+    private void setInfo(crosby.binary.Osmformat.Info value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      info_ = value;
+      bitField0_ |= 0x00000002;
+      }
+    /**
+     * <code>optional .OSMPBF.Info info = 4;</code>
+     */
+    private void setInfo(
+        crosby.binary.Osmformat.Info.Builder builderForValue) {
+      info_ = builderForValue.build();
+      bitField0_ |= 0x00000002;
+    }
+    /**
+     * <code>optional .OSMPBF.Info info = 4;</code>
+     */
+    private void mergeInfo(crosby.binary.Osmformat.Info value) {
+      if (info_ != null &&
+          info_ != crosby.binary.Osmformat.Info.getDefaultInstance()) {
+        info_ =
+          crosby.binary.Osmformat.Info.newBuilder(info_).mergeFrom(value).buildPartial();
+      } else {
+        info_ = value;
+      }
+      bitField0_ |= 0x00000002;
+    }
+    /**
+     * <code>optional .OSMPBF.Info info = 4;</code>
+     */
+    private void clearInfo() {  info_ = null;
+      bitField0_ = (bitField0_ & ~0x00000002);
     }
 
     public static final int ROLES_SID_FIELD_NUMBER = 8;
-    private java.util.List<java.lang.Integer> rolesSid_;
-    /**
+    private com.google.protobuf.Internal.IntList rolesSid_;
+    /**
+     * <pre>
+     * Parallel arrays
+     * </pre>
+     *
      * <code>repeated int32 roles_sid = 8 [packed = true];</code>
-     *
-     * <pre>
-     * Parallel arrays
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Integer>
+     */
+    public java.util.List<java.lang.Integer>
         getRolesSidList() {
       return rolesSid_;
     }
     /**
+     * <pre>
+     * Parallel arrays
+     * </pre>
+     *
      * <code>repeated int32 roles_sid = 8 [packed = true];</code>
-     *
+     */
+    public int getRolesSidCount() {
+      return rolesSid_.size();
+    }
+    /**
      * <pre>
      * Parallel arrays
      * </pre>
-     */
-    @Override
-	public int getRolesSidCount() {
-      return rolesSid_.size();
-    }
-    /**
+     *
      * <code>repeated int32 roles_sid = 8 [packed = true];</code>
-     *
+     */
+    public int getRolesSid(int index) {
+      return rolesSid_.getInt(index);
+    }
+    private int rolesSidMemoizedSerializedSize = -1;
+    private void ensureRolesSidIsMutable() {
+      if (!rolesSid_.isModifiable()) {
+        rolesSid_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(rolesSid_);
+       }
+    }
+    /**
      * <pre>
      * Parallel arrays
      * </pre>
-     */
-    @Override
-	public int getRolesSid(int index) {
-      return rolesSid_.get(index);
-    }
-    private int rolesSidMemoizedSerializedSize = -1;
+     *
+     * <code>repeated int32 roles_sid = 8 [packed = true];</code>
+     */
+    private void setRolesSid(
+        int index, int value) {
+      ensureRolesSidIsMutable();
+      rolesSid_.setInt(index, value);
+    }
+    /**
+     * <pre>
+     * Parallel arrays
+     * </pre>
+     *
+     * <code>repeated int32 roles_sid = 8 [packed = true];</code>
+     */
+    private void addRolesSid(int value) {
+      ensureRolesSidIsMutable();
+      rolesSid_.addInt(value);
+    }
+    /**
+     * <pre>
+     * Parallel arrays
+     * </pre>
+     *
+     * <code>repeated int32 roles_sid = 8 [packed = true];</code>
+     */
+    private void addAllRolesSid(
+        java.lang.Iterable<? extends java.lang.Integer> values) {
+      ensureRolesSidIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, rolesSid_);
+    }
+    /**
+     * <pre>
+     * Parallel arrays
+     * </pre>
+     *
+     * <code>repeated int32 roles_sid = 8 [packed = true];</code>
+     */
+    private void clearRolesSid() {
+      rolesSid_ = emptyIntList();
+    }
 
     public static final int MEMIDS_FIELD_NUMBER = 9;
-    private java.util.List<java.lang.Long> memids_;
-    /**
+    private com.google.protobuf.Internal.LongList memids_;
+    /**
+     * <pre>
+     * DELTA encoded
+     * </pre>
+     *
      * <code>repeated sint64 memids = 9 [packed = true];</code>
-     *
-     * <pre>
-     * DELTA encoded
-     * </pre>
-     */
-    @Override
-	public java.util.List<java.lang.Long>
+     */
+    public java.util.List<java.lang.Long>
         getMemidsList() {
       return memids_;
     }
     /**
+     * <pre>
+     * DELTA encoded
+     * </pre>
+     *
      * <code>repeated sint64 memids = 9 [packed = true];</code>
-     *
+     */
+    public int getMemidsCount() {
+      return memids_.size();
+    }
+    /**
      * <pre>
      * DELTA encoded
      * </pre>
-     */
-    @Override
-	public int getMemidsCount() {
-      return memids_.size();
-    }
-    /**
+     *
      * <code>repeated sint64 memids = 9 [packed = true];</code>
-     *
+     */
+    public long getMemids(int index) {
+      return memids_.getLong(index);
+    }
+    private int memidsMemoizedSerializedSize = -1;
+    private void ensureMemidsIsMutable() {
+      if (!memids_.isModifiable()) {
+        memids_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(memids_);
+       }
+    }
+    /**
      * <pre>
      * DELTA encoded
      * </pre>
-     */
-    @Override
-	public long getMemids(int index) {
-      return memids_.get(index);
-    }
-    private int memidsMemoizedSerializedSize = -1;
+     *
+     * <code>repeated sint64 memids = 9 [packed = true];</code>
+     */
+    private void setMemids(
+        int index, long value) {
+      ensureMemidsIsMutable();
+      memids_.setLong(index, value);
+    }
+    /**
+     * <pre>
+     * DELTA encoded
+     * </pre>
+     *
+     * <code>repeated sint64 memids = 9 [packed = true];</code>
+     */
+    private void addMemids(long value) {
+      ensureMemidsIsMutable();
+      memids_.addLong(value);
+    }
+    /**
+     * <pre>
+     * DELTA encoded
+     * </pre>
+     *
+     * <code>repeated sint64 memids = 9 [packed = true];</code>
+     */
+    private void addAllMemids(
+        java.lang.Iterable<? extends java.lang.Long> values) {
+      ensureMemidsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, memids_);
+    }
+    /**
+     * <pre>
+     * DELTA encoded
+     * </pre>
+     *
+     * <code>repeated sint64 memids = 9 [packed = true];</code>
+     */
+    private void clearMemids() {
+      memids_ = emptyLongList();
+    }
 
     public static final int TYPES_FIELD_NUMBER = 10;
-    private java.util.List<crosby.binary.Osmformat.Relation.MemberType> types_;
+    private com.google.protobuf.Internal.IntList types_;
+    private static final com.google.protobuf.Internal.ListAdapter.Converter<
+        java.lang.Integer, crosby.binary.Osmformat.Relation.MemberType> types_converter_ =
+            new com.google.protobuf.Internal.ListAdapter.Converter<
+                java.lang.Integer, crosby.binary.Osmformat.Relation.MemberType>() {
+              public crosby.binary.Osmformat.Relation.MemberType convert(java.lang.Integer from) {
+                crosby.binary.Osmformat.Relation.MemberType result = crosby.binary.Osmformat.Relation.MemberType.forNumber(from);
+                return result == null ? crosby.binary.Osmformat.Relation.MemberType.NODE : result;
+              }
+            };
     /**
      * <code>repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];</code>
      */
-    @Override
-	public java.util.List<crosby.binary.Osmformat.Relation.MemberType> getTypesList() {
-      return types_;
+    public java.util.List<crosby.binary.Osmformat.Relation.MemberType> getTypesList() {
+      return new com.google.protobuf.Internal.ListAdapter<
+          java.lang.Integer, crosby.binary.Osmformat.Relation.MemberType>(types_, types_converter_);
     }
     /**
      * <code>repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];</code>
      */
-    @Override
-	public int getTypesCount() {
+    public int getTypesCount() {
       return types_.size();
     }
@@ -12469,36 +12293,53 @@
      * <code>repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];</code>
      */
-    @Override
-	public crosby.binary.Osmformat.Relation.MemberType getTypes(int index) {
-      return types_.get(index);
+    public crosby.binary.Osmformat.Relation.MemberType getTypes(int index) {
+      return types_converter_.convert(types_.getInt(index));
     }
     private int typesMemoizedSerializedSize;
-
-    private void initFields() {
-      id_ = 0L;
-      keys_ = java.util.Collections.emptyList();
-      vals_ = java.util.Collections.emptyList();
-      info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
-      rolesSid_ = java.util.Collections.emptyList();
-      memids_ = java.util.Collections.emptyList();
-      types_ = java.util.Collections.emptyList();
-    }
-    private byte memoizedIsInitialized = -1;
-    @Override
-	public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      if (!hasId()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @Override
-	public void writeTo(com.google.protobuf.CodedOutputStream output)
+    private void ensureTypesIsMutable() {
+      if (!types_.isModifiable()) {
+        types_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(types_);
+      }
+    }
+    /**
+     * <code>repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];</code>
+     */
+    private void setTypes(
+        int index, crosby.binary.Osmformat.Relation.MemberType value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureTypesIsMutable();
+      types_.setInt(index, value.getNumber());
+    }
+    /**
+     * <code>repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];</code>
+     */
+    private void addTypes(crosby.binary.Osmformat.Relation.MemberType value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      ensureTypesIsMutable();
+      types_.addInt(value.getNumber());
+    }
+    /**
+     * <code>repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];</code>
+     */
+    private void addAllTypes(
+        java.lang.Iterable<? extends crosby.binary.Osmformat.Relation.MemberType> values) {
+      ensureTypesIsMutable();
+      for (crosby.binary.Osmformat.Relation.MemberType value : values) {
+        types_.addInt(value.getNumber());
+      }
+    }
+    /**
+     * <code>repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];</code>
+     */
+    private void clearTypes() {
+      types_ = emptyIntList();
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
@@ -12507,47 +12348,45 @@
       }
       if (getKeysList().size() > 0) {
-        output.writeRawVarint32(18);
-        output.writeRawVarint32(keysMemoizedSerializedSize);
+        output.writeUInt32NoTag(18);
+        output.writeUInt32NoTag(keysMemoizedSerializedSize);
       }
       for (int i = 0; i < keys_.size(); i++) {
-        output.writeUInt32NoTag(keys_.get(i));
+        output.writeUInt32NoTag(keys_.getInt(i));
       }
       if (getValsList().size() > 0) {
-        output.writeRawVarint32(26);
-        output.writeRawVarint32(valsMemoizedSerializedSize);
+        output.writeUInt32NoTag(26);
+        output.writeUInt32NoTag(valsMemoizedSerializedSize);
       }
       for (int i = 0; i < vals_.size(); i++) {
-        output.writeUInt32NoTag(vals_.get(i));
+        output.writeUInt32NoTag(vals_.getInt(i));
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeMessage(4, info_);
+        output.writeMessage(4, getInfo());
       }
       if (getRolesSidList().size() > 0) {
-        output.writeRawVarint32(66);
-        output.writeRawVarint32(rolesSidMemoizedSerializedSize);
+        output.writeUInt32NoTag(66);
+        output.writeUInt32NoTag(rolesSidMemoizedSerializedSize);
       }
       for (int i = 0; i < rolesSid_.size(); i++) {
-        output.writeInt32NoTag(rolesSid_.get(i));
+        output.writeInt32NoTag(rolesSid_.getInt(i));
       }
       if (getMemidsList().size() > 0) {
-        output.writeRawVarint32(74);
-        output.writeRawVarint32(memidsMemoizedSerializedSize);
+        output.writeUInt32NoTag(74);
+        output.writeUInt32NoTag(memidsMemoizedSerializedSize);
       }
       for (int i = 0; i < memids_.size(); i++) {
-        output.writeSInt64NoTag(memids_.get(i));
+        output.writeSInt64NoTag(memids_.getLong(i));
       }
       if (getTypesList().size() > 0) {
-        output.writeRawVarint32(82);
-        output.writeRawVarint32(typesMemoizedSerializedSize);
+        output.writeUInt32NoTag(82);
+        output.writeUInt32NoTag(typesMemoizedSerializedSize);
       }
       for (int i = 0; i < types_.size(); i++) {
-        output.writeEnumNoTag(types_.get(i).getNumber());
-      }
-      output.writeRawBytes(unknownFields);
-    }
-
-    private int memoizedSerializedSize = -1;
-    @Override
-	public int getSerializedSize() {
+        output.writeEnumNoTag(types_.getInt(i));
+      }
+      unknownFields.writeTo(output);
+    }
+
+    public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
@@ -12562,5 +12401,5 @@
         for (int i = 0; i < keys_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeUInt32SizeNoTag(keys_.get(i));
+            .computeUInt32SizeNoTag(keys_.getInt(i));
         }
         size += dataSize;
@@ -12576,5 +12415,5 @@
         for (int i = 0; i < vals_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeUInt32SizeNoTag(vals_.get(i));
+            .computeUInt32SizeNoTag(vals_.getInt(i));
         }
         size += dataSize;
@@ -12588,5 +12427,5 @@
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, info_);
+          .computeMessageSize(4, getInfo());
       }
       {
@@ -12594,5 +12433,5 @@
         for (int i = 0; i < rolesSid_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeInt32SizeNoTag(rolesSid_.get(i));
+            .computeInt32SizeNoTag(rolesSid_.getInt(i));
         }
         size += dataSize;
@@ -12608,5 +12447,5 @@
         for (int i = 0; i < memids_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeSInt64SizeNoTag(memids_.get(i));
+            .computeSInt64SizeNoTag(memids_.getLong(i));
         }
         size += dataSize;
@@ -12622,28 +12461,35 @@
         for (int i = 0; i < types_.size(); i++) {
           dataSize += com.google.protobuf.CodedOutputStream
-            .computeEnumSizeNoTag(types_.get(i).getNumber());
+            .computeEnumSizeNoTag(types_.getInt(i));
         }
         size += dataSize;
         if (!getTypesList().isEmpty()) {  size += 1;
           size += com.google.protobuf.CodedOutputStream
-            .computeRawVarint32Size(dataSize);
+            .computeUInt32SizeNoTag(dataSize);
         }typesMemoizedSerializedSize = dataSize;
       }
-      size += unknownFields.size();
+      size += unknownFields.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 crosby.binary.Osmformat.Relation parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
+    }
+    public static crosby.binary.Osmformat.Relation parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
+    }
     public static crosby.binary.Osmformat.Relation parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.Relation parseFrom(
@@ -12651,9 +12497,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Relation parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data);
     }
     public static crosby.binary.Osmformat.Relation parseFrom(
@@ -12661,9 +12509,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, data, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Relation parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.Relation parseFrom(
@@ -12671,9 +12521,10 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Relation parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.Relation parseDelimitedFrom(
@@ -12681,10 +12532,11 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
     }
     public static crosby.binary.Osmformat.Relation parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return PARSER.parseFrom(input);
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input);
     }
     public static crosby.binary.Osmformat.Relation parseFrom(
@@ -12692,15 +12544,14 @@
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    @Override
-	public Builder newBuilderForType() { return newBuilder(); }
+      return com.google.protobuf.GeneratedMessageLite.parseFrom(
+          DEFAULT_INSTANCE, input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
     public static Builder newBuilder(crosby.binary.Osmformat.Relation prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    @Override
-	public Builder toBuilder() { return newBuilder(this); }
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
 
     /**
@@ -12709,207 +12560,24 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageLite.Builder<
-          crosby.binary.Osmformat.Relation, Builder>
-        implements
+          crosby.binary.Osmformat.Relation, Builder> implements
         // @@protoc_insertion_point(builder_implements:OSMPBF.Relation)
         crosby.binary.Osmformat.RelationOrBuilder {
       // Construct using crosby.binary.Osmformat.Relation.newBuilder()
       private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private void maybeForceBuilderInitialization() {
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      @Override
-	public Builder clear() {
-        super.clear();
-        id_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        keys_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000002);
-        vals_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000004);
-        info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
-        bitField0_ = (bitField0_ & ~0x00000008);
-        rolesSid_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000010);
-        memids_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000020);
-        types_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000040);
-        return this;
-      }
-
-      @Override
-	public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      @Override
-	public crosby.binary.Osmformat.Relation getDefaultInstanceForType() {
-        return crosby.binary.Osmformat.Relation.getDefaultInstance();
-      }
-
-      @Override
-	public crosby.binary.Osmformat.Relation build() {
-        crosby.binary.Osmformat.Relation result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @Override
-	public crosby.binary.Osmformat.Relation buildPartial() {
-        crosby.binary.Osmformat.Relation result = new crosby.binary.Osmformat.Relation(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.id_ = id_;
-        if (((bitField0_ & 0x00000002) == 0x00000002)) {
-          keys_ = java.util.Collections.unmodifiableList(keys_);
-          bitField0_ = (bitField0_ & ~0x00000002);
-        }
-        result.keys_ = keys_;
-        if (((bitField0_ & 0x00000004) == 0x00000004)) {
-          vals_ = java.util.Collections.unmodifiableList(vals_);
-          bitField0_ = (bitField0_ & ~0x00000004);
-        }
-        result.vals_ = vals_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.info_ = info_;
-        if (((bitField0_ & 0x00000010) == 0x00000010)) {
-          rolesSid_ = java.util.Collections.unmodifiableList(rolesSid_);
-          bitField0_ = (bitField0_ & ~0x00000010);
-        }
-        result.rolesSid_ = rolesSid_;
-        if (((bitField0_ & 0x00000020) == 0x00000020)) {
-          memids_ = java.util.Collections.unmodifiableList(memids_);
-          bitField0_ = (bitField0_ & ~0x00000020);
-        }
-        result.memids_ = memids_;
-        if (((bitField0_ & 0x00000040) == 0x00000040)) {
-          types_ = java.util.Collections.unmodifiableList(types_);
-          bitField0_ = (bitField0_ & ~0x00000040);
-        }
-        result.types_ = types_;
-        result.bitField0_ = to_bitField0_;
-        return result;
-      }
-
-      @Override
-	public Builder mergeFrom(crosby.binary.Osmformat.Relation other) {
-        if (other == crosby.binary.Osmformat.Relation.getDefaultInstance()) return this;
-        if (other.hasId()) {
-          setId(other.getId());
-        }
-        if (!other.keys_.isEmpty()) {
-          if (keys_.isEmpty()) {
-            keys_ = other.keys_;
-            bitField0_ = (bitField0_ & ~0x00000002);
-          } else {
-            ensureKeysIsMutable();
-            keys_.addAll(other.keys_);
-          }
-
-        }
-        if (!other.vals_.isEmpty()) {
-          if (vals_.isEmpty()) {
-            vals_ = other.vals_;
-            bitField0_ = (bitField0_ & ~0x00000004);
-          } else {
-            ensureValsIsMutable();
-            vals_.addAll(other.vals_);
-          }
-
-        }
-        if (other.hasInfo()) {
-          mergeInfo(other.getInfo());
-        }
-        if (!other.rolesSid_.isEmpty()) {
-          if (rolesSid_.isEmpty()) {
-            rolesSid_ = other.rolesSid_;
-            bitField0_ = (bitField0_ & ~0x00000010);
-          } else {
-            ensureRolesSidIsMutable();
-            rolesSid_.addAll(other.rolesSid_);
-          }
-
-        }
-        if (!other.memids_.isEmpty()) {
-          if (memids_.isEmpty()) {
-            memids_ = other.memids_;
-            bitField0_ = (bitField0_ & ~0x00000020);
-          } else {
-            ensureMemidsIsMutable();
-            memids_.addAll(other.memids_);
-          }
-
-        }
-        if (!other.types_.isEmpty()) {
-          if (types_.isEmpty()) {
-            types_ = other.types_;
-            bitField0_ = (bitField0_ & ~0x00000040);
-          } else {
-            ensureTypesIsMutable();
-            types_.addAll(other.types_);
-          }
-
-        }
-        setUnknownFields(
-            getUnknownFields().concat(other.unknownFields));
-        return this;
-      }
-
-      @Override
-	public final boolean isInitialized() {
-        if (!hasId()) {
-
-          return false;
-        }
-        return true;
-      }
-
-      @Override
-	public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        crosby.binary.Osmformat.Relation parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (crosby.binary.Osmformat.Relation) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private long id_ ;
+        super(DEFAULT_INSTANCE);
+      }
+
+
       /**
        * <code>required int64 id = 1;</code>
        */
-      @Override
-	public boolean hasId() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
+      public boolean hasId() {
+        return instance.hasId();
       }
       /**
        * <code>required int64 id = 1;</code>
        */
-      @Override
-	public long getId() {
-        return id_;
+      public long getId() {
+        return instance.getId();
       }
       /**
@@ -12917,7 +12585,6 @@
        */
       public Builder setId(long value) {
-        bitField0_ |= 0x00000001;
-        id_ = value;
-
+        copyOnWrite();
+        instance.setId(value);
         return this;
       }
@@ -12926,135 +12593,111 @@
        */
       public Builder clearId() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        id_ = 0L;
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> keys_ = java.util.Collections.emptyList();
-      private void ensureKeysIsMutable() {
-        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          keys_ = new java.util.ArrayList<>(keys_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-      /**
+        copyOnWrite();
+        instance.clearId();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * Parallel arrays.
+       * </pre>
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Integer>
+          getKeysList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getKeysList());
+      }
+      /**
        * <pre>
        * Parallel arrays.
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Integer>
-          getKeysList() {
-        return java.util.Collections.unmodifiableList(keys_);
-      }
-      /**
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
+       */
+      public int getKeysCount() {
+        return instance.getKeysCount();
+      }
+      /**
        * <pre>
        * Parallel arrays.
        * </pre>
-       */
-      @Override
-	public int getKeysCount() {
-        return keys_.size();
-      }
-      /**
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
+       */
+      public int getKeys(int index) {
+        return instance.getKeys(index);
+      }
+      /**
        * <pre>
        * Parallel arrays.
        * </pre>
-       */
-      @Override
-	public int getKeys(int index) {
-        return keys_.get(index);
-      }
-      /**
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
-       * <pre>
-       * Parallel arrays.
-       * </pre>
        */
       public Builder setKeys(
           int index, int value) {
-        ensureKeysIsMutable();
-        keys_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setKeys(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * Parallel arrays.
+       * </pre>
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
+       */
+      public Builder addKeys(int value) {
+        copyOnWrite();
+        instance.addKeys(value);
+        return this;
+      }
+      /**
        * <pre>
        * Parallel arrays.
        * </pre>
-       */
-      public Builder addKeys(int value) {
-        ensureKeysIsMutable();
-        keys_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
-       * <pre>
-       * Parallel arrays.
-       * </pre>
        */
       public Builder addAllKeys(
           java.lang.Iterable<? extends java.lang.Integer> values) {
-        ensureKeysIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, keys_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllKeys(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * Parallel arrays.
+       * </pre>
+       *
        * <code>repeated uint32 keys = 2 [packed = true];</code>
-       *
-       * <pre>
-       * Parallel arrays.
-       * </pre>
        */
       public Builder clearKeys() {
-        keys_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000002);
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> vals_ = java.util.Collections.emptyList();
-      private void ensureValsIsMutable() {
-        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
-          vals_ = new java.util.ArrayList<>(vals_);
-          bitField0_ |= 0x00000004;
-         }
-      }
+        copyOnWrite();
+        instance.clearKeys();
+        return this;
+      }
+
       /**
        * <code>repeated uint32 vals = 3 [packed = true];</code>
        */
-      @Override
-	public java.util.List<java.lang.Integer>
+      public java.util.List<java.lang.Integer>
           getValsList() {
-        return java.util.Collections.unmodifiableList(vals_);
+        return java.util.Collections.unmodifiableList(
+            instance.getValsList());
       }
       /**
        * <code>repeated uint32 vals = 3 [packed = true];</code>
        */
-      @Override
-	public int getValsCount() {
-        return vals_.size();
+      public int getValsCount() {
+        return instance.getValsCount();
       }
       /**
        * <code>repeated uint32 vals = 3 [packed = true];</code>
        */
-      @Override
-	public int getVals(int index) {
-        return vals_.get(index);
+      public int getVals(int index) {
+        return instance.getVals(index);
       }
       /**
@@ -13063,7 +12706,6 @@
       public Builder setVals(
           int index, int value) {
-        ensureValsIsMutable();
-        vals_.set(index, value);
-
+        copyOnWrite();
+        instance.setVals(index, value);
         return this;
       }
@@ -13072,7 +12714,6 @@
        */
       public Builder addVals(int value) {
-        ensureValsIsMutable();
-        vals_.add(value);
-
+        copyOnWrite();
+        instance.addVals(value);
         return this;
       }
@@ -13082,8 +12723,6 @@
       public Builder addAllVals(
           java.lang.Iterable<? extends java.lang.Integer> values) {
-        ensureValsIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, vals_);
-
+        copyOnWrite();
+        instance.addAllVals(values);
         return this;
       }
@@ -13092,24 +12731,20 @@
        */
       public Builder clearVals() {
-        vals_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000004);
-
-        return this;
-      }
-
-      private crosby.binary.Osmformat.Info info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
+        copyOnWrite();
+        instance.clearVals();
+        return this;
+      }
+
       /**
        * <code>optional .OSMPBF.Info info = 4;</code>
        */
-      @Override
-	public boolean hasInfo() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
+      public boolean hasInfo() {
+        return instance.hasInfo();
       }
       /**
        * <code>optional .OSMPBF.Info info = 4;</code>
        */
-      @Override
-	public crosby.binary.Osmformat.Info getInfo() {
-        return info_;
+      public crosby.binary.Osmformat.Info getInfo() {
+        return instance.getInfo();
       }
       /**
@@ -13117,12 +12752,8 @@
        */
       public Builder setInfo(crosby.binary.Osmformat.Info value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        info_ = value;
-
-        bitField0_ |= 0x00000008;
-        return this;
-      }
+        copyOnWrite();
+        instance.setInfo(value);
+        return this;
+        }
       /**
        * <code>optional .OSMPBF.Info info = 4;</code>
@@ -13130,7 +12761,6 @@
       public Builder setInfo(
           crosby.binary.Osmformat.Info.Builder builderForValue) {
-        info_ = builderForValue.build();
-
-        bitField0_ |= 0x00000008;
+        copyOnWrite();
+        instance.setInfo(builderForValue);
         return this;
       }
@@ -13139,13 +12769,6 @@
        */
       public Builder mergeInfo(crosby.binary.Osmformat.Info value) {
-        if (((bitField0_ & 0x00000008) == 0x00000008) &&
-            info_ != crosby.binary.Osmformat.Info.getDefaultInstance()) {
-          info_ =
-            crosby.binary.Osmformat.Info.newBuilder(info_).mergeFrom(value).buildPartial();
-        } else {
-          info_ = value;
-        }
-
-        bitField0_ |= 0x00000008;
+        copyOnWrite();
+        instance.mergeInfo(value);
         return this;
       }
@@ -13153,233 +12776,192 @@
        * <code>optional .OSMPBF.Info info = 4;</code>
        */
-      public Builder clearInfo() {
-        info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
-
-        bitField0_ = (bitField0_ & ~0x00000008);
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> rolesSid_ = java.util.Collections.emptyList();
-      private void ensureRolesSidIsMutable() {
-        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
-          rolesSid_ = new java.util.ArrayList<>(rolesSid_);
-          bitField0_ |= 0x00000010;
-         }
-      }
-      /**
+      public Builder clearInfo() {  copyOnWrite();
+        instance.clearInfo();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * Parallel arrays
+       * </pre>
+       *
        * <code>repeated int32 roles_sid = 8 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Integer>
+          getRolesSidList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getRolesSidList());
+      }
+      /**
        * <pre>
        * Parallel arrays
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Integer>
-          getRolesSidList() {
-        return java.util.Collections.unmodifiableList(rolesSid_);
-      }
-      /**
+       *
        * <code>repeated int32 roles_sid = 8 [packed = true];</code>
-       *
+       */
+      public int getRolesSidCount() {
+        return instance.getRolesSidCount();
+      }
+      /**
        * <pre>
        * Parallel arrays
        * </pre>
-       */
-      @Override
-	public int getRolesSidCount() {
-        return rolesSid_.size();
-      }
-      /**
+       *
        * <code>repeated int32 roles_sid = 8 [packed = true];</code>
-       *
+       */
+      public int getRolesSid(int index) {
+        return instance.getRolesSid(index);
+      }
+      /**
        * <pre>
        * Parallel arrays
        * </pre>
-       */
-      @Override
-	public int getRolesSid(int index) {
-        return rolesSid_.get(index);
-      }
-      /**
+       *
        * <code>repeated int32 roles_sid = 8 [packed = true];</code>
-       *
-       * <pre>
-       * Parallel arrays
-       * </pre>
        */
       public Builder setRolesSid(
           int index, int value) {
-        ensureRolesSidIsMutable();
-        rolesSid_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setRolesSid(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * Parallel arrays
+       * </pre>
+       *
        * <code>repeated int32 roles_sid = 8 [packed = true];</code>
-       *
+       */
+      public Builder addRolesSid(int value) {
+        copyOnWrite();
+        instance.addRolesSid(value);
+        return this;
+      }
+      /**
        * <pre>
        * Parallel arrays
        * </pre>
-       */
-      public Builder addRolesSid(int value) {
-        ensureRolesSidIsMutable();
-        rolesSid_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated int32 roles_sid = 8 [packed = true];</code>
-       *
-       * <pre>
-       * Parallel arrays
-       * </pre>
        */
       public Builder addAllRolesSid(
           java.lang.Iterable<? extends java.lang.Integer> values) {
-        ensureRolesSidIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, rolesSid_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllRolesSid(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * Parallel arrays
+       * </pre>
+       *
        * <code>repeated int32 roles_sid = 8 [packed = true];</code>
-       *
-       * <pre>
-       * Parallel arrays
-       * </pre>
        */
       public Builder clearRolesSid() {
-        rolesSid_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000010);
-
-        return this;
-      }
-
-      private java.util.List<java.lang.Long> memids_ = java.util.Collections.emptyList();
-      private void ensureMemidsIsMutable() {
-        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
-          memids_ = new java.util.ArrayList<>(memids_);
-          bitField0_ |= 0x00000020;
-         }
-      }
-      /**
+        copyOnWrite();
+        instance.clearRolesSid();
+        return this;
+      }
+
+      /**
+       * <pre>
+       * DELTA encoded
+       * </pre>
+       *
        * <code>repeated sint64 memids = 9 [packed = true];</code>
-       *
+       */
+      public java.util.List<java.lang.Long>
+          getMemidsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getMemidsList());
+      }
+      /**
        * <pre>
        * DELTA encoded
        * </pre>
-       */
-      @Override
-	public java.util.List<java.lang.Long>
-          getMemidsList() {
-        return java.util.Collections.unmodifiableList(memids_);
-      }
-      /**
+       *
        * <code>repeated sint64 memids = 9 [packed = true];</code>
-       *
+       */
+      public int getMemidsCount() {
+        return instance.getMemidsCount();
+      }
+      /**
        * <pre>
        * DELTA encoded
        * </pre>
-       */
-      @Override
-	public int getMemidsCount() {
-        return memids_.size();
-      }
-      /**
+       *
        * <code>repeated sint64 memids = 9 [packed = true];</code>
-       *
+       */
+      public long getMemids(int index) {
+        return instance.getMemids(index);
+      }
+      /**
        * <pre>
        * DELTA encoded
        * </pre>
-       */
-      @Override
-	public long getMemids(int index) {
-        return memids_.get(index);
-      }
-      /**
+       *
        * <code>repeated sint64 memids = 9 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA encoded
-       * </pre>
        */
       public Builder setMemids(
           int index, long value) {
-        ensureMemidsIsMutable();
-        memids_.set(index, value);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.setMemids(index, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA encoded
+       * </pre>
+       *
        * <code>repeated sint64 memids = 9 [packed = true];</code>
-       *
+       */
+      public Builder addMemids(long value) {
+        copyOnWrite();
+        instance.addMemids(value);
+        return this;
+      }
+      /**
        * <pre>
        * DELTA encoded
        * </pre>
-       */
-      public Builder addMemids(long value) {
-        ensureMemidsIsMutable();
-        memids_.add(value);
-
-        return this;
-      }
-      /**
+       *
        * <code>repeated sint64 memids = 9 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA encoded
-       * </pre>
        */
       public Builder addAllMemids(
           java.lang.Iterable<? extends java.lang.Long> values) {
-        ensureMemidsIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, memids_);
-
-        return this;
-      }
-      /**
+        copyOnWrite();
+        instance.addAllMemids(values);
+        return this;
+      }
+      /**
+       * <pre>
+       * DELTA encoded
+       * </pre>
+       *
        * <code>repeated sint64 memids = 9 [packed = true];</code>
-       *
-       * <pre>
-       * DELTA encoded
-       * </pre>
        */
       public Builder clearMemids() {
-        memids_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000020);
-
-        return this;
-      }
-
-      private java.util.List<crosby.binary.Osmformat.Relation.MemberType> types_ =
-        java.util.Collections.emptyList();
-      private void ensureTypesIsMutable() {
-        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
-          types_ = new java.util.ArrayList<>(types_);
-          bitField0_ |= 0x00000040;
-        }
-      }
+        copyOnWrite();
+        instance.clearMemids();
+        return this;
+      }
+
       /**
        * <code>repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];</code>
        */
-      @Override
-	public java.util.List<crosby.binary.Osmformat.Relation.MemberType> getTypesList() {
-        return java.util.Collections.unmodifiableList(types_);
+      public java.util.List<crosby.binary.Osmformat.Relation.MemberType> getTypesList() {
+        return instance.getTypesList();
       }
       /**
        * <code>repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];</code>
        */
-      @Override
-	public int getTypesCount() {
-        return types_.size();
+      public int getTypesCount() {
+        return instance.getTypesCount();
       }
       /**
        * <code>repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];</code>
        */
-      @Override
-	public crosby.binary.Osmformat.Relation.MemberType getTypes(int index) {
-        return types_.get(index);
+      public crosby.binary.Osmformat.Relation.MemberType getTypes(int index) {
+        return instance.getTypes(index);
       }
       /**
@@ -13388,10 +12970,6 @@
       public Builder setTypes(
           int index, crosby.binary.Osmformat.Relation.MemberType value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureTypesIsMutable();
-        types_.set(index, value);
-
+        copyOnWrite();
+        instance.setTypes(index, value);
         return this;
       }
@@ -13400,10 +12978,6 @@
        */
       public Builder addTypes(crosby.binary.Osmformat.Relation.MemberType value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureTypesIsMutable();
-        types_.add(value);
-
+        copyOnWrite();
+        instance.addTypes(value);
         return this;
       }
@@ -13413,9 +12987,6 @@
       public Builder addAllTypes(
           java.lang.Iterable<? extends crosby.binary.Osmformat.Relation.MemberType> values) {
-        ensureTypesIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, types_);
-
-        return this;
+        copyOnWrite();
+        instance.addAllTypes(values);  return this;
       }
       /**
@@ -13423,7 +12994,6 @@
        */
       public Builder clearTypes() {
-        types_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000040);
-
+        copyOnWrite();
+        instance.clearTypes();
         return this;
       }
@@ -13431,11 +13001,257 @@
       // @@protoc_insertion_point(builder_scope:OSMPBF.Relation)
     }
-
+    private byte memoizedIsInitialized = -1;
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new crosby.binary.Osmformat.Relation();
+        }
+        case IS_INITIALIZED: {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized == 1) return DEFAULT_INSTANCE;
+          if (isInitialized == 0) return null;
+
+          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
+          if (!hasId()) {
+            if (shouldMemoize) {
+              memoizedIsInitialized = 0;
+            }
+            return null;
+          }
+          if (shouldMemoize) memoizedIsInitialized = 1;
+          return DEFAULT_INSTANCE;
+
+        }
+        case MAKE_IMMUTABLE: {
+          keys_.makeImmutable();
+          vals_.makeImmutable();
+          rolesSid_.makeImmutable();
+          memids_.makeImmutable();
+          types_.makeImmutable();
+          return null;
+        }
+        case NEW_BUILDER: {
+          return new Builder();
+        }
+        case VISIT: {
+          Visitor visitor = (Visitor) arg0;
+          crosby.binary.Osmformat.Relation other = (crosby.binary.Osmformat.Relation) arg1;
+          id_ = visitor.visitLong(
+              hasId(), id_,
+              other.hasId(), other.id_);
+          keys_= visitor.visitIntList(keys_, other.keys_);
+          vals_= visitor.visitIntList(vals_, other.vals_);
+          info_ = visitor.visitMessage(info_, other.info_);
+          rolesSid_= visitor.visitIntList(rolesSid_, other.rolesSid_);
+          memids_= visitor.visitLongList(memids_, other.memids_);
+          types_= visitor.visitIntList(types_, other.types_);
+          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+              .INSTANCE) {
+            bitField0_ |= other.bitField0_;
+          }
+          return this;
+        }
+        case MERGE_FROM_STREAM: {
+          com.google.protobuf.CodedInputStream input =
+              (com.google.protobuf.CodedInputStream) arg0;
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+              (com.google.protobuf.ExtensionRegistryLite) arg1;
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(tag, input)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  bitField0_ |= 0x00000001;
+                  id_ = input.readInt64();
+                  break;
+                }
+                case 16: {
+                  if (!keys_.isModifiable()) {
+                    keys_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(keys_);
+                  }
+                  keys_.addInt(input.readUInt32());
+                  break;
+                }
+                case 18: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!keys_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    keys_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(keys_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    keys_.addInt(input.readUInt32());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 24: {
+                  if (!vals_.isModifiable()) {
+                    vals_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(vals_);
+                  }
+                  vals_.addInt(input.readUInt32());
+                  break;
+                }
+                case 26: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!vals_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    vals_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(vals_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    vals_.addInt(input.readUInt32());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 34: {
+                  crosby.binary.Osmformat.Info.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = info_.toBuilder();
+                  }
+                  info_ = input.readMessage(crosby.binary.Osmformat.Info.parser(), extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(info_);
+                    info_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
+                  break;
+                }
+                case 64: {
+                  if (!rolesSid_.isModifiable()) {
+                    rolesSid_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(rolesSid_);
+                  }
+                  rolesSid_.addInt(input.readInt32());
+                  break;
+                }
+                case 66: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!rolesSid_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    rolesSid_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(rolesSid_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    rolesSid_.addInt(input.readInt32());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 72: {
+                  if (!memids_.isModifiable()) {
+                    memids_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(memids_);
+                  }
+                  memids_.addLong(input.readSInt64());
+                  break;
+                }
+                case 74: {
+                  int length = input.readRawVarint32();
+                  int limit = input.pushLimit(length);
+                  if (!memids_.isModifiable() && input.getBytesUntilLimit() > 0) {
+                    memids_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(memids_);
+                  }
+                  while (input.getBytesUntilLimit() > 0) {
+                    memids_.addLong(input.readSInt64());
+                  }
+                  input.popLimit(limit);
+                  break;
+                }
+                case 80: {
+                  if (!types_.isModifiable()) {
+                    types_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(types_);
+                  }
+                  int rawValue = input.readEnum();
+                  crosby.binary.Osmformat.Relation.MemberType value = crosby.binary.Osmformat.Relation.MemberType.forNumber(rawValue);
+                  if (value == null) {
+                    super.mergeVarintField(10, rawValue);
+                  } else {
+                    types_.addInt(rawValue);
+                  }
+                  break;
+                }
+                case 82: {
+                  if (!types_.isModifiable()) {
+                    types_ =
+                        com.google.protobuf.GeneratedMessageLite.mutableCopy(types_);
+                  }
+                  int length = input.readRawVarint32();
+                  int oldLimit = input.pushLimit(length);
+                  while(input.getBytesUntilLimit() > 0) {
+                    int rawValue = input.readEnum();
+                    crosby.binary.Osmformat.Relation.MemberType value = crosby.binary.Osmformat.Relation.MemberType.forNumber(rawValue);
+                    if (value == null) {
+                      super.mergeVarintField(10, rawValue);
+                    } else {
+                      types_.addInt(rawValue);
+                    }
+                  }
+                  input.popLimit(oldLimit);
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw new RuntimeException(e.setUnfinishedMessage(this));
+          } catch (java.io.IOException e) {
+            throw new RuntimeException(
+                new com.google.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this));
+          } finally {
+          }
+        }
+        // fall through
+        case GET_DEFAULT_INSTANCE: {
+          return DEFAULT_INSTANCE;
+        }
+        case GET_PARSER: {
+          if (PARSER == null) {    synchronized (crosby.binary.Osmformat.Relation.class) {
+              if (PARSER == null) {
+                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+              }
+            }
+          }
+          return PARSER;
+        }
+      }
+      throw new UnsupportedOperationException();
+    }
+
+
+    // @@protoc_insertion_point(class_scope:OSMPBF.Relation)
+    private static final crosby.binary.Osmformat.Relation DEFAULT_INSTANCE;
     static {
-      defaultInstance = new Relation(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:OSMPBF.Relation)
+      DEFAULT_INSTANCE = new Relation();
+      DEFAULT_INSTANCE.makeImmutable();
+    }
+
+    public static crosby.binary.Osmformat.Relation getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static volatile com.google.protobuf.Parser<Relation> PARSER;
+
+    public static com.google.protobuf.Parser<Relation> parser() {
+      return DEFAULT_INSTANCE.getParserForType();
+    }
   }
 
Index: applications/editors/josm/plugins/pbf/tools/readme.txt
===================================================================
--- applications/editors/josm/plugins/pbf/tools/readme.txt	(revision 33771)
+++ applications/editors/josm/plugins/pbf/tools/readme.txt	(revision 33772)
@@ -3,13 +3,13 @@
 https://developers.google.com/protocol-buffers/
 
-This package contains a precompiled Win32 binary version of the protocol buffer
-compiler (protoc).  This binary is intended for Windows users who want to
-use Protocol Buffers in Java or Python but do not want to compile protoc
-themselves.  To install, simply place this binary somewhere in your PATH.
+This package contains a precompiled binary version of the protocol buffer
+compiler (protoc). This binary is intended for users who want to use Protocol
+Buffers in languages other than C++ but do not want to compile protoc
+themselves. To install, simply place this binary somewhere in your PATH.
 
-This binary was built using MinGW, but the output is the same regardless of
-the C++ compiler used.
+If you intend to use the included well known types then don't forget to
+copy the contents of the 'include' directory somewhere as well, for example
+into '/usr/local/include/'.
 
-You will still need to download the source code package in order to obtain the
-Java or Python runtime libraries.  Get it from:
-  https://github.com/google/protobuf/releases/
+Please refer to our official github site for more installation instructions:
+  https://github.com/google/protobuf
