Index: /applications/editors/josm/plugins/pbf/compile.cmd
===================================================================
--- /applications/editors/josm/plugins/pbf/compile.cmd	(revision 30658)
+++ /applications/editors/josm/plugins/pbf/compile.cmd	(revision 30658)
@@ -0,0 +1,2 @@
+@echo off
+.\tools\protoc.exe --proto_path=proto;protobuf --java_out=gen protobuf\descriptor.proto proto\fileformat.proto proto\osmformat.proto
Index: /applications/editors/josm/plugins/pbf/gen/com/google/protobuf/DescriptorProtos.java
===================================================================
--- /applications/editors/josm/plugins/pbf/gen/com/google/protobuf/DescriptorProtos.java	(revision 30657)
+++ /applications/editors/josm/plugins/pbf/gen/com/google/protobuf/DescriptorProtos.java	(revision 30658)
@@ -1,4 +1,4 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: protobuf/descriptor.proto
+// source: descriptor.proto
 
 package com.google.protobuf;
@@ -9,8 +9,8 @@
       com.google.protobuf.ExtensionRegistry registry) {
   }
-  public interface FileDescriptorSetOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // repeated .google.protobuf.FileDescriptorProto file = 1;
+  public interface FileDescriptorSetOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.FileDescriptorSet)
+      com.google.protobuf.MessageOrBuilder {
+
     /**
      * <code>repeated .google.protobuf.FileDescriptorProto file = 1;</code>
@@ -46,6 +46,7 @@
    */
   public static final class FileDescriptorSet extends
-      com.google.protobuf.GeneratedMessage
-      implements FileDescriptorSetOrBuilder {
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.FileDescriptorSet)
+      FileDescriptorSetOrBuilder {
     // Use FileDescriptorSet.newBuilder() to construct.
     private FileDescriptorSet(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
@@ -143,5 +144,4 @@
     }
 
-    // repeated .google.protobuf.FileDescriptorProto file = 1;
     public static final int FILE_FIELD_NUMBER = 1;
     private java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> file_;
@@ -185,5 +185,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getFileCount(); i++) {
@@ -303,6 +304,7 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements com.google.protobuf.DescriptorProtos.FileDescriptorSetOrBuilder {
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.FileDescriptorSet)
+        com.google.protobuf.DescriptorProtos.FileDescriptorSetOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -454,5 +456,4 @@
       private int bitField0_;
 
-      // repeated .google.protobuf.FileDescriptorProto file = 1;
       private java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> file_ =
         java.util.Collections.emptyList();
@@ -596,5 +597,6 @@
         if (fileBuilder_ == null) {
           ensureFileIsMutable();
-          super.addAll(values, file_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, file_);
           onChanged();
         } else {
@@ -705,8 +707,8 @@
   }
 
-  public interface FileDescriptorProtoOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // optional string name = 1;
+  public interface FileDescriptorProtoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.FileDescriptorProto)
+      com.google.protobuf.MessageOrBuilder {
+
     /**
      * <code>optional string name = 1;</code>
@@ -735,5 +737,4 @@
         getNameBytes();
 
-    // optional string package = 2;
     /**
      * <code>optional string package = 2;</code>
@@ -762,5 +763,4 @@
         getPackageBytes();
 
-    // repeated string dependency = 3;
     /**
      * <code>repeated string dependency = 3;</code>
@@ -770,6 +770,6 @@
      * </pre>
      */
-    java.util.List<java.lang.String>
-    getDependencyList();
+    com.google.protobuf.ProtocolStringList
+        getDependencyList();
     /**
      * <code>repeated string dependency = 3;</code>
@@ -798,5 +798,4 @@
         getDependencyBytes(int index);
 
-    // repeated int32 public_dependency = 10;
     /**
      * <code>repeated int32 public_dependency = 10;</code>
@@ -824,5 +823,4 @@
     int getPublicDependency(int index);
 
-    // repeated int32 weak_dependency = 11;
     /**
      * <code>repeated int32 weak_dependency = 11;</code>
@@ -853,5 +851,4 @@
     int getWeakDependency(int index);
 
-    // repeated .google.protobuf.DescriptorProto message_type = 4;
     /**
      * <code>repeated .google.protobuf.DescriptorProto message_type = 4;</code>
@@ -898,5 +895,4 @@
         int index);
 
-    // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
     /**
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 5;</code>
@@ -923,5 +919,4 @@
         int index);
 
-    // repeated .google.protobuf.ServiceDescriptorProto service = 6;
     /**
      * <code>repeated .google.protobuf.ServiceDescriptorProto service = 6;</code>
@@ -948,5 +943,4 @@
         int index);
 
-    // repeated .google.protobuf.FieldDescriptorProto extension = 7;
     /**
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 7;</code>
@@ -973,5 +967,4 @@
         int index);
 
-    // optional .google.protobuf.FileOptions options = 8;
     /**
      * <code>optional .google.protobuf.FileOptions options = 8;</code>
@@ -987,5 +980,4 @@
     com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder getOptionsOrBuilder();
 
-    // optional .google.protobuf.SourceCodeInfo source_code_info = 9;
     /**
      * <code>optional .google.protobuf.SourceCodeInfo source_code_info = 9;</code>
@@ -1030,6 +1022,7 @@
    */
   public static final class FileDescriptorProto extends
-      com.google.protobuf.GeneratedMessage
-      implements FileDescriptorProtoOrBuilder {
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.FileDescriptorProto)
+      FileDescriptorProtoOrBuilder {
     // Use FileDescriptorProto.newBuilder() to construct.
     private FileDescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
@@ -1078,19 +1071,22 @@
             }
             case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000001;
-              name_ = input.readBytes();
+              name_ = bs;
               break;
             }
             case 18: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000002;
-              package_ = input.readBytes();
+              package_ = bs;
               break;
             }
             case 26: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                 dependency_ = new com.google.protobuf.LazyStringArrayList();
                 mutable_bitField0_ |= 0x00000004;
               }
-              dependency_.add(input.readBytes());
+              dependency_.add(bs);
               break;
             }
@@ -1204,5 +1200,5 @@
       } finally {
         if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-          dependency_ = new com.google.protobuf.UnmodifiableLazyStringList(dependency_);
+          dependency_ = dependency_.getUnmodifiableView();
         }
         if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
@@ -1256,5 +1252,4 @@
 
     private int bitField0_;
-    // optional string name = 1;
     public static final int NAME_FIELD_NUMBER = 1;
     private java.lang.Object name_;
@@ -1311,5 +1306,4 @@
     }
 
-    // optional string package = 2;
     public static final int PACKAGE_FIELD_NUMBER = 2;
     private java.lang.Object package_;
@@ -1366,5 +1360,4 @@
     }
 
-    // repeated string dependency = 3;
     public static final int DEPENDENCY_FIELD_NUMBER = 3;
     private com.google.protobuf.LazyStringList dependency_;
@@ -1376,5 +1369,5 @@
      * </pre>
      */
-    public java.util.List<java.lang.String>
+    public com.google.protobuf.ProtocolStringList
         getDependencyList() {
       return dependency_;
@@ -1412,5 +1405,4 @@
     }
 
-    // repeated int32 public_dependency = 10;
     public static final int PUBLIC_DEPENDENCY_FIELD_NUMBER = 10;
     private java.util.List<java.lang.Integer> publicDependency_;
@@ -1447,5 +1439,4 @@
     }
 
-    // repeated int32 weak_dependency = 11;
     public static final int WEAK_DEPENDENCY_FIELD_NUMBER = 11;
     private java.util.List<java.lang.Integer> weakDependency_;
@@ -1485,5 +1476,4 @@
     }
 
-    // repeated .google.protobuf.DescriptorProto message_type = 4;
     public static final int MESSAGE_TYPE_FIELD_NUMBER = 4;
     private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> messageType_;
@@ -1541,5 +1531,4 @@
     }
 
-    // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
     public static final int ENUM_TYPE_FIELD_NUMBER = 5;
     private java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> enumType_;
@@ -1577,5 +1566,4 @@
     }
 
-    // repeated .google.protobuf.ServiceDescriptorProto service = 6;
     public static final int SERVICE_FIELD_NUMBER = 6;
     private java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> service_;
@@ -1613,5 +1601,4 @@
     }
 
-    // repeated .google.protobuf.FieldDescriptorProto extension = 7;
     public static final int EXTENSION_FIELD_NUMBER = 7;
     private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> extension_;
@@ -1649,5 +1636,4 @@
     }
 
-    // optional .google.protobuf.FileOptions options = 8;
     public static final int OPTIONS_FIELD_NUMBER = 8;
     private com.google.protobuf.DescriptorProtos.FileOptions options_;
@@ -1671,5 +1657,4 @@
     }
 
-    // optional .google.protobuf.SourceCodeInfo source_code_info = 9;
     public static final int SOURCE_CODE_INFO_FIELD_NUMBER = 9;
     private com.google.protobuf.DescriptorProtos.SourceCodeInfo sourceCodeInfo_;
@@ -1730,5 +1715,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getMessageTypeCount(); i++) {
@@ -1956,6 +1942,7 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder {
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.FileDescriptorProto)
+        com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -2079,6 +2066,5 @@
         result.package_ = package_;
         if (((bitField0_ & 0x00000004) == 0x00000004)) {
-          dependency_ = new com.google.protobuf.UnmodifiableLazyStringList(
-              dependency_);
+          dependency_ = dependency_.getUnmodifiableView();
           bitField0_ = (bitField0_ & ~0x00000004);
         }
@@ -2369,5 +2355,4 @@
       private int bitField0_;
 
-      // optional string name = 1;
       private java.lang.Object name_ = "";
       /**
@@ -2391,7 +2376,10 @@
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          name_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
           return s;
         } else {
@@ -2467,5 +2455,4 @@
       }
 
-      // optional string package = 2;
       private java.lang.Object package_ = "";
       /**
@@ -2489,7 +2476,10 @@
         java.lang.Object ref = package_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          package_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            package_ = s;
+          }
           return s;
         } else {
@@ -2565,5 +2555,4 @@
       }
 
-      // repeated string dependency = 3;
       private com.google.protobuf.LazyStringList dependency_ = com.google.protobuf.LazyStringArrayList.EMPTY;
       private void ensureDependencyIsMutable() {
@@ -2580,7 +2569,7 @@
        * </pre>
        */
-      public java.util.List<java.lang.String>
+      public com.google.protobuf.ProtocolStringList
           getDependencyList() {
-        return java.util.Collections.unmodifiableList(dependency_);
+        return dependency_.getUnmodifiableView();
       }
       /**
@@ -2659,5 +2648,6 @@
           java.lang.Iterable<java.lang.String> values) {
         ensureDependencyIsMutable();
-        super.addAll(values, dependency_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, dependency_);
         onChanged();
         return this;
@@ -2694,5 +2684,4 @@
       }
 
-      // repeated int32 public_dependency = 10;
       private java.util.List<java.lang.Integer> publicDependency_ = java.util.Collections.emptyList();
       private void ensurePublicDependencyIsMutable() {
@@ -2770,5 +2759,6 @@
           java.lang.Iterable<? extends java.lang.Integer> values) {
         ensurePublicDependencyIsMutable();
-        super.addAll(values, publicDependency_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, publicDependency_);
         onChanged();
         return this;
@@ -2788,5 +2778,4 @@
       }
 
-      // repeated int32 weak_dependency = 11;
       private java.util.List<java.lang.Integer> weakDependency_ = java.util.Collections.emptyList();
       private void ensureWeakDependencyIsMutable() {
@@ -2870,5 +2859,6 @@
           java.lang.Iterable<? extends java.lang.Integer> values) {
         ensureWeakDependencyIsMutable();
-        super.addAll(values, weakDependency_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, weakDependency_);
         onChanged();
         return this;
@@ -2889,5 +2879,4 @@
       }
 
-      // repeated .google.protobuf.DescriptorProto message_type = 4;
       private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> messageType_ =
         java.util.Collections.emptyList();
@@ -3071,5 +3060,6 @@
         if (messageTypeBuilder_ == null) {
           ensureMessageTypeIsMutable();
-          super.addAll(values, messageType_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, messageType_);
           onChanged();
         } else {
@@ -3201,5 +3191,4 @@
       }
 
-      // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
       private java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> enumType_ =
         java.util.Collections.emptyList();
@@ -3343,5 +3332,6 @@
         if (enumTypeBuilder_ == null) {
           ensureEnumTypeIsMutable();
-          super.addAll(values, enumType_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, enumType_);
           onChanged();
         } else {
@@ -3441,5 +3431,4 @@
       }
 
-      // repeated .google.protobuf.ServiceDescriptorProto service = 6;
       private java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> service_ =
         java.util.Collections.emptyList();
@@ -3583,5 +3572,6 @@
         if (serviceBuilder_ == null) {
           ensureServiceIsMutable();
-          super.addAll(values, service_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, service_);
           onChanged();
         } else {
@@ -3681,5 +3671,4 @@
       }
 
-      // repeated .google.protobuf.FieldDescriptorProto extension = 7;
       private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> extension_ =
         java.util.Collections.emptyList();
@@ -3823,5 +3812,6 @@
         if (extensionBuilder_ == null) {
           ensureExtensionIsMutable();
-          super.addAll(values, extension_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, extension_);
           onChanged();
         } else {
@@ -3921,5 +3911,4 @@
       }
 
-      // optional .google.protobuf.FileOptions options = 8;
       private com.google.protobuf.DescriptorProtos.FileOptions options_ = com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance();
       private com.google.protobuf.SingleFieldBuilder<
@@ -4030,5 +4019,5 @@
           optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
               com.google.protobuf.DescriptorProtos.FileOptions, com.google.protobuf.DescriptorProtos.FileOptions.Builder, com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder>(
-                  options_,
+                  getOptions(),
                   getParentForChildren(),
                   isClean());
@@ -4038,5 +4027,4 @@
       }
 
-      // optional .google.protobuf.SourceCodeInfo source_code_info = 9;
       private com.google.protobuf.DescriptorProtos.SourceCodeInfo sourceCodeInfo_ = com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance();
       private com.google.protobuf.SingleFieldBuilder<
@@ -4210,5 +4198,5 @@
           sourceCodeInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
               com.google.protobuf.DescriptorProtos.SourceCodeInfo, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder>(
-                  sourceCodeInfo_,
+                  getSourceCodeInfo(),
                   getParentForChildren(),
                   isClean());
@@ -4229,8 +4217,8 @@
   }
 
-  public interface DescriptorProtoOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // optional string name = 1;
+  public interface DescriptorProtoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.DescriptorProto)
+      com.google.protobuf.MessageOrBuilder {
+
     /**
      * <code>optional string name = 1;</code>
@@ -4247,5 +4235,4 @@
         getNameBytes();
 
-    // repeated .google.protobuf.FieldDescriptorProto field = 2;
     /**
      * <code>repeated .google.protobuf.FieldDescriptorProto field = 2;</code>
@@ -4272,5 +4259,4 @@
         int index);
 
-    // repeated .google.protobuf.FieldDescriptorProto extension = 6;
     /**
      * <code>repeated .google.protobuf.FieldDescriptorProto extension = 6;</code>
@@ -4297,5 +4283,4 @@
         int index);
 
-    // repeated .google.protobuf.DescriptorProto nested_type = 3;
     /**
      * <code>repeated .google.protobuf.DescriptorProto nested_type = 3;</code>
@@ -4322,5 +4307,4 @@
         int index);
 
-    // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
     /**
      * <code>repeated .google.protobuf.EnumDescriptorProto enum_type = 4;</code>
@@ -4347,5 +4331,4 @@
         int index);
 
-    // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
     /**
      * <code>repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;</code>
@@ -4372,5 +4355,28 @@
         int index);
 
-    // optional .google.protobuf.MessageOptions options = 7;
+    /**
+     * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+     */
+    java.util.List<com.google.protobuf.DescriptorProtos.OneofDescriptorProto> 
+        getOneofDeclList();
+    /**
+     * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+     */
+    com.google.protobuf.DescriptorProtos.OneofDescriptorProto getOneofDecl(int index);
+    /**
+     * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+     */
+    int getOneofDeclCount();
+    /**
+     * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+     */
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> 
+        getOneofDeclOrBuilderList();
+    /**
+     * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+     */
+    com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder getOneofDeclOrBuilder(
+        int index);
+
     /**
      * <code>optional .google.protobuf.MessageOptions options = 7;</code>
@@ -4394,6 +4400,7 @@
    */
   public static final class DescriptorProto extends
-      com.google.protobuf.GeneratedMessage
-      implements DescriptorProtoOrBuilder {
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.DescriptorProto)
+      DescriptorProtoOrBuilder {
     // Use DescriptorProto.newBuilder() to construct.
     private DescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
@@ -4442,6 +4449,7 @@
             }
             case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000001;
-              name_ = input.readBytes();
+              name_ = bs;
               break;
             }
@@ -4499,4 +4507,12 @@
               break;
             }
+            case 66: {
+              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+                oneofDecl_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.OneofDescriptorProto>();
+                mutable_bitField0_ |= 0x00000040;
+              }
+              oneofDecl_.add(input.readMessage(com.google.protobuf.DescriptorProtos.OneofDescriptorProto.PARSER, extensionRegistry));
+              break;
+            }
           }
         }
@@ -4522,4 +4538,7 @@
           extension_ = java.util.Collections.unmodifiableList(extension_);
         }
+        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+          oneofDecl_ = java.util.Collections.unmodifiableList(oneofDecl_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -4553,8 +4572,8 @@
     }
 
-    public interface ExtensionRangeOrBuilder
-        extends com.google.protobuf.MessageOrBuilder {
-
-      // optional int32 start = 1;
+    public interface ExtensionRangeOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:google.protobuf.DescriptorProto.ExtensionRange)
+        com.google.protobuf.MessageOrBuilder {
+
       /**
        * <code>optional int32 start = 1;</code>
@@ -4566,5 +4585,4 @@
       int getStart();
 
-      // optional int32 end = 2;
       /**
        * <code>optional int32 end = 2;</code>
@@ -4580,6 +4598,7 @@
      */
     public static final class ExtensionRange extends
-        com.google.protobuf.GeneratedMessage
-        implements ExtensionRangeOrBuilder {
+        com.google.protobuf.GeneratedMessage implements
+        // @@protoc_insertion_point(message_implements:google.protobuf.DescriptorProto.ExtensionRange)
+        ExtensionRangeOrBuilder {
       // Use ExtensionRange.newBuilder() to construct.
       private ExtensionRange(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
@@ -4677,5 +4696,4 @@
 
       private int bitField0_;
-      // optional int32 start = 1;
       public static final int START_FIELD_NUMBER = 1;
       private int start_;
@@ -4693,5 +4711,4 @@
       }
 
-      // optional int32 end = 2;
       public static final int END_FIELD_NUMBER = 2;
       private int end_;
@@ -4716,5 +4733,6 @@
       public final boolean isInitialized() {
         byte isInitialized = memoizedIsInitialized;
-        if (isInitialized != -1) return isInitialized == 1;
+        if (isInitialized == 1) return true;
+        if (isInitialized == 0) return false;
 
         memoizedIsInitialized = 1;
@@ -4830,6 +4848,7 @@
        */
       public static final class Builder extends
-          com.google.protobuf.GeneratedMessage.Builder<Builder>
-         implements com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder {
+          com.google.protobuf.GeneratedMessage.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() {
@@ -4953,5 +4972,4 @@
         private int bitField0_;
 
-        // optional int32 start = 1;
         private int start_ ;
         /**
@@ -4986,5 +5004,4 @@
         }
 
-        // optional int32 end = 2;
         private int end_ ;
         /**
@@ -5031,5 +5048,4 @@
 
     private int bitField0_;
-    // optional string name = 1;
     public static final int NAME_FIELD_NUMBER = 1;
     private java.lang.Object name_;
@@ -5074,5 +5090,4 @@
     }
 
-    // repeated .google.protobuf.FieldDescriptorProto field = 2;
     public static final int FIELD_FIELD_NUMBER = 2;
     private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> field_;
@@ -5110,5 +5125,4 @@
     }
 
-    // repeated .google.protobuf.FieldDescriptorProto extension = 6;
     public static final int EXTENSION_FIELD_NUMBER = 6;
     private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> extension_;
@@ -5146,5 +5160,4 @@
     }
 
-    // repeated .google.protobuf.DescriptorProto nested_type = 3;
     public static final int NESTED_TYPE_FIELD_NUMBER = 3;
     private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> nestedType_;
@@ -5182,5 +5195,4 @@
     }
 
-    // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
     public static final int ENUM_TYPE_FIELD_NUMBER = 4;
     private java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> enumType_;
@@ -5218,5 +5230,4 @@
     }
 
-    // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
     public static final int EXTENSION_RANGE_FIELD_NUMBER = 5;
     private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> extensionRange_;
@@ -5254,5 +5265,39 @@
     }
 
-    // optional .google.protobuf.MessageOptions options = 7;
+    public static final int ONEOF_DECL_FIELD_NUMBER = 8;
+    private java.util.List<com.google.protobuf.DescriptorProtos.OneofDescriptorProto> oneofDecl_;
+    /**
+     * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+     */
+    public java.util.List<com.google.protobuf.DescriptorProtos.OneofDescriptorProto> getOneofDeclList() {
+      return oneofDecl_;
+    }
+    /**
+     * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+     */
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> 
+        getOneofDeclOrBuilderList() {
+      return oneofDecl_;
+    }
+    /**
+     * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+     */
+    public int getOneofDeclCount() {
+      return oneofDecl_.size();
+    }
+    /**
+     * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getOneofDecl(int index) {
+      return oneofDecl_.get(index);
+    }
+    /**
+     * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+     */
+    public com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder getOneofDeclOrBuilder(
+        int index) {
+      return oneofDecl_.get(index);
+    }
+
     public static final int OPTIONS_FIELD_NUMBER = 7;
     private com.google.protobuf.DescriptorProtos.MessageOptions options_;
@@ -5283,4 +5328,5 @@
       enumType_ = java.util.Collections.emptyList();
       extensionRange_ = java.util.Collections.emptyList();
+      oneofDecl_ = java.util.Collections.emptyList();
       options_ = com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance();
     }
@@ -5288,5 +5334,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getFieldCount(); i++) {
@@ -5348,4 +5395,7 @@
         output.writeMessage(7, options_);
       }
+      for (int i = 0; i < oneofDecl_.size(); i++) {
+        output.writeMessage(8, oneofDecl_.get(i));
+      }
       getUnknownFields().writeTo(output);
     }
@@ -5384,4 +5434,8 @@
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(7, options_);
+      }
+      for (int i = 0; i < oneofDecl_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, oneofDecl_.get(i));
       }
       size += getUnknownFields().getSerializedSize();
@@ -5471,6 +5525,7 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder {
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.DescriptorProto)
+        com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -5502,4 +5557,5 @@
           getEnumTypeFieldBuilder();
           getExtensionRangeFieldBuilder();
+          getOneofDeclFieldBuilder();
           getOptionsFieldBuilder();
         }
@@ -5543,4 +5599,10 @@
           extensionRangeBuilder_.clear();
         }
+        if (oneofDeclBuilder_ == null) {
+          oneofDecl_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000040);
+        } else {
+          oneofDeclBuilder_.clear();
+        }
         if (optionsBuilder_ == null) {
           options_ = com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance();
@@ -5548,5 +5610,5 @@
           optionsBuilder_.clear();
         }
-        bitField0_ = (bitField0_ & ~0x00000040);
+        bitField0_ = (bitField0_ & ~0x00000080);
         return this;
       }
@@ -5626,5 +5688,14 @@
           result.extensionRange_ = extensionRangeBuilder_.build();
         }
-        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+        if (oneofDeclBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040)) {
+            oneofDecl_ = java.util.Collections.unmodifiableList(oneofDecl_);
+            bitField0_ = (bitField0_ & ~0x00000040);
+          }
+          result.oneofDecl_ = oneofDecl_;
+        } else {
+          result.oneofDecl_ = oneofDeclBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
           to_bitField0_ |= 0x00000002;
         }
@@ -5782,4 +5853,30 @@
             } else {
               extensionRangeBuilder_.addAllMessages(other.extensionRange_);
+            }
+          }
+        }
+        if (oneofDeclBuilder_ == null) {
+          if (!other.oneofDecl_.isEmpty()) {
+            if (oneofDecl_.isEmpty()) {
+              oneofDecl_ = other.oneofDecl_;
+              bitField0_ = (bitField0_ & ~0x00000040);
+            } else {
+              ensureOneofDeclIsMutable();
+              oneofDecl_.addAll(other.oneofDecl_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.oneofDecl_.isEmpty()) {
+            if (oneofDeclBuilder_.isEmpty()) {
+              oneofDeclBuilder_.dispose();
+              oneofDeclBuilder_ = null;
+              oneofDecl_ = other.oneofDecl_;
+              bitField0_ = (bitField0_ & ~0x00000040);
+              oneofDeclBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getOneofDeclFieldBuilder() : null;
+            } else {
+              oneofDeclBuilder_.addAllMessages(other.oneofDecl_);
             }
           }
@@ -5845,5 +5942,4 @@
       private int bitField0_;
 
-      // optional string name = 1;
       private java.lang.Object name_ = "";
       /**
@@ -5859,7 +5955,10 @@
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          name_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
           return s;
         } else {
@@ -5919,5 +6018,4 @@
       }
 
-      // repeated .google.protobuf.FieldDescriptorProto field = 2;
       private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> field_ =
         java.util.Collections.emptyList();
@@ -6061,5 +6159,6 @@
         if (fieldBuilder_ == null) {
           ensureFieldIsMutable();
-          super.addAll(values, field_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, field_);
           onChanged();
         } else {
@@ -6159,5 +6258,4 @@
       }
 
-      // repeated .google.protobuf.FieldDescriptorProto extension = 6;
       private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> extension_ =
         java.util.Collections.emptyList();
@@ -6301,5 +6399,6 @@
         if (extensionBuilder_ == null) {
           ensureExtensionIsMutable();
-          super.addAll(values, extension_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, extension_);
           onChanged();
         } else {
@@ -6399,5 +6498,4 @@
       }
 
-      // repeated .google.protobuf.DescriptorProto nested_type = 3;
       private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> nestedType_ =
         java.util.Collections.emptyList();
@@ -6541,5 +6639,6 @@
         if (nestedTypeBuilder_ == null) {
           ensureNestedTypeIsMutable();
-          super.addAll(values, nestedType_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, nestedType_);
           onChanged();
         } else {
@@ -6639,5 +6738,4 @@
       }
 
-      // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
       private java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> enumType_ =
         java.util.Collections.emptyList();
@@ -6781,5 +6879,6 @@
         if (enumTypeBuilder_ == null) {
           ensureEnumTypeIsMutable();
-          super.addAll(values, enumType_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, enumType_);
           onChanged();
         } else {
@@ -6879,5 +6978,4 @@
       }
 
-      // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
       private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> extensionRange_ =
         java.util.Collections.emptyList();
@@ -7021,5 +7119,6 @@
         if (extensionRangeBuilder_ == null) {
           ensureExtensionRangeIsMutable();
-          super.addAll(values, extensionRange_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, extensionRange_);
           onChanged();
         } else {
@@ -7119,5 +7218,244 @@
       }
 
-      // optional .google.protobuf.MessageOptions options = 7;
+      private java.util.List<com.google.protobuf.DescriptorProtos.OneofDescriptorProto> oneofDecl_ =
+        java.util.Collections.emptyList();
+      private void ensureOneofDeclIsMutable() {
+        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
+          oneofDecl_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.OneofDescriptorProto>(oneofDecl_);
+          bitField0_ |= 0x00000040;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          com.google.protobuf.DescriptorProtos.OneofDescriptorProto, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> oneofDeclBuilder_;
+
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public java.util.List<com.google.protobuf.DescriptorProtos.OneofDescriptorProto> getOneofDeclList() {
+        if (oneofDeclBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(oneofDecl_);
+        } else {
+          return oneofDeclBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public int getOneofDeclCount() {
+        if (oneofDeclBuilder_ == null) {
+          return oneofDecl_.size();
+        } else {
+          return oneofDeclBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getOneofDecl(int index) {
+        if (oneofDeclBuilder_ == null) {
+          return oneofDecl_.get(index);
+        } else {
+          return oneofDeclBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public Builder setOneofDecl(
+          int index, com.google.protobuf.DescriptorProtos.OneofDescriptorProto value) {
+        if (oneofDeclBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureOneofDeclIsMutable();
+          oneofDecl_.set(index, value);
+          onChanged();
+        } else {
+          oneofDeclBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public Builder setOneofDecl(
+          int index, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder builderForValue) {
+        if (oneofDeclBuilder_ == null) {
+          ensureOneofDeclIsMutable();
+          oneofDecl_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          oneofDeclBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public Builder addOneofDecl(com.google.protobuf.DescriptorProtos.OneofDescriptorProto value) {
+        if (oneofDeclBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureOneofDeclIsMutable();
+          oneofDecl_.add(value);
+          onChanged();
+        } else {
+          oneofDeclBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public Builder addOneofDecl(
+          int index, com.google.protobuf.DescriptorProtos.OneofDescriptorProto value) {
+        if (oneofDeclBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureOneofDeclIsMutable();
+          oneofDecl_.add(index, value);
+          onChanged();
+        } else {
+          oneofDeclBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public Builder addOneofDecl(
+          com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder builderForValue) {
+        if (oneofDeclBuilder_ == null) {
+          ensureOneofDeclIsMutable();
+          oneofDecl_.add(builderForValue.build());
+          onChanged();
+        } else {
+          oneofDeclBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public Builder addOneofDecl(
+          int index, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder builderForValue) {
+        if (oneofDeclBuilder_ == null) {
+          ensureOneofDeclIsMutable();
+          oneofDecl_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          oneofDeclBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public Builder addAllOneofDecl(
+          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.OneofDescriptorProto> values) {
+        if (oneofDeclBuilder_ == null) {
+          ensureOneofDeclIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, oneofDecl_);
+          onChanged();
+        } else {
+          oneofDeclBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public Builder clearOneofDecl() {
+        if (oneofDeclBuilder_ == null) {
+          oneofDecl_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000040);
+          onChanged();
+        } else {
+          oneofDeclBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public Builder removeOneofDecl(int index) {
+        if (oneofDeclBuilder_ == null) {
+          ensureOneofDeclIsMutable();
+          oneofDecl_.remove(index);
+          onChanged();
+        } else {
+          oneofDeclBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder getOneofDeclBuilder(
+          int index) {
+        return getOneofDeclFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder getOneofDeclOrBuilder(
+          int index) {
+        if (oneofDeclBuilder_ == null) {
+          return oneofDecl_.get(index);  } else {
+          return oneofDeclBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> 
+           getOneofDeclOrBuilderList() {
+        if (oneofDeclBuilder_ != null) {
+          return oneofDeclBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(oneofDecl_);
+        }
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder addOneofDeclBuilder() {
+        return getOneofDeclFieldBuilder().addBuilder(
+            com.google.protobuf.DescriptorProtos.OneofDescriptorProto.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder addOneofDeclBuilder(
+          int index) {
+        return getOneofDeclFieldBuilder().addBuilder(
+            index, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;</code>
+       */
+      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> 
+          getOneofDeclFieldBuilder() {
+        if (oneofDeclBuilder_ == null) {
+          oneofDeclBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              com.google.protobuf.DescriptorProtos.OneofDescriptorProto, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder>(
+                  oneofDecl_,
+                  ((bitField0_ & 0x00000040) == 0x00000040),
+                  getParentForChildren(),
+                  isClean());
+          oneofDecl_ = null;
+        }
+        return oneofDeclBuilder_;
+      }
+
       private com.google.protobuf.DescriptorProtos.MessageOptions options_ = com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance();
       private com.google.protobuf.SingleFieldBuilder<
@@ -7127,5 +7465,5 @@
        */
       public boolean hasOptions() {
-        return ((bitField0_ & 0x00000040) == 0x00000040);
+        return ((bitField0_ & 0x00000080) == 0x00000080);
       }
       /**
@@ -7152,5 +7490,5 @@
           optionsBuilder_.setMessage(value);
         }
-        bitField0_ |= 0x00000040;
+        bitField0_ |= 0x00000080;
         return this;
       }
@@ -7166,5 +7504,5 @@
           optionsBuilder_.setMessage(builderForValue.build());
         }
-        bitField0_ |= 0x00000040;
+        bitField0_ |= 0x00000080;
         return this;
       }
@@ -7174,5 +7512,5 @@
       public Builder mergeOptions(com.google.protobuf.DescriptorProtos.MessageOptions value) {
         if (optionsBuilder_ == null) {
-          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
               options_ != com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance()) {
             options_ =
@@ -7185,5 +7523,5 @@
           optionsBuilder_.mergeFrom(value);
         }
-        bitField0_ |= 0x00000040;
+        bitField0_ |= 0x00000080;
         return this;
       }
@@ -7198,5 +7536,5 @@
           optionsBuilder_.clear();
         }
-        bitField0_ = (bitField0_ & ~0x00000040);
+        bitField0_ = (bitField0_ & ~0x00000080);
         return this;
       }
@@ -7205,5 +7543,5 @@
        */
       public com.google.protobuf.DescriptorProtos.MessageOptions.Builder getOptionsBuilder() {
-        bitField0_ |= 0x00000040;
+        bitField0_ |= 0x00000080;
         onChanged();
         return getOptionsFieldBuilder().getBuilder();
@@ -7228,5 +7566,5 @@
           optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
               com.google.protobuf.DescriptorProtos.MessageOptions, com.google.protobuf.DescriptorProtos.MessageOptions.Builder, com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder>(
-                  options_,
+                  getOptions(),
                   getParentForChildren(),
                   isClean());
@@ -7247,8 +7585,8 @@
   }
 
-  public interface FieldDescriptorProtoOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // optional string name = 1;
+  public interface FieldDescriptorProtoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.FieldDescriptorProto)
+      com.google.protobuf.MessageOrBuilder {
+
     /**
      * <code>optional string name = 1;</code>
@@ -7265,5 +7603,4 @@
         getNameBytes();
 
-    // optional int32 number = 3;
     /**
      * <code>optional int32 number = 3;</code>
@@ -7275,5 +7612,4 @@
     int getNumber();
 
-    // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
     /**
      * <code>optional .google.protobuf.FieldDescriptorProto.Label label = 4;</code>
@@ -7285,5 +7621,4 @@
     com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel();
 
-    // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
     /**
      * <code>optional .google.protobuf.FieldDescriptorProto.Type type = 5;</code>
@@ -7291,5 +7626,5 @@
      * <pre>
      * If type_name is set, this need not be set.  If both this and type_name
-     * are set, this must be either TYPE_ENUM or TYPE_MESSAGE.
+     * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
      * </pre>
      */
@@ -7300,10 +7635,9 @@
      * <pre>
      * If type_name is set, this need not be set.  If both this and type_name
-     * are set, this must be either TYPE_ENUM or TYPE_MESSAGE.
+     * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
      * </pre>
      */
     com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType();
 
-    // optional string type_name = 6;
     /**
      * <code>optional string type_name = 6;</code>
@@ -7344,5 +7678,4 @@
         getTypeNameBytes();
 
-    // optional string extendee = 2;
     /**
      * <code>optional string extendee = 2;</code>
@@ -7374,5 +7707,4 @@
         getExtendeeBytes();
 
-    // optional string default_value = 7;
     /**
      * <code>optional string default_value = 7;</code>
@@ -7413,5 +7745,27 @@
         getDefaultValueBytes();
 
-    // optional .google.protobuf.FieldOptions options = 8;
+    /**
+     * <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>
@@ -7435,6 +7789,7 @@
    */
   public static final class FieldDescriptorProto extends
-      com.google.protobuf.GeneratedMessage
-      implements FieldDescriptorProtoOrBuilder {
+      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) {
@@ -7483,11 +7838,13 @@
             }
             case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000001;
-              name_ = input.readBytes();
+              name_ = bs;
               break;
             }
             case 18: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000020;
-              extendee_ = input.readBytes();
+              extendee_ = bs;
               break;
             }
@@ -7520,16 +7877,18 @@
             }
             case 50: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000010;
-              typeName_ = input.readBytes();
+              typeName_ = bs;
               break;
             }
             case 58: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000040;
-              defaultValue_ = input.readBytes();
+              defaultValue_ = bs;
               break;
             }
             case 66: {
               com.google.protobuf.DescriptorProtos.FieldOptions.Builder subBuilder = null;
-              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
                 subBuilder = options_.toBuilder();
               }
@@ -7539,5 +7898,10 @@
                 options_ = subBuilder.buildPartial();
               }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 72: {
               bitField0_ |= 0x00000080;
+              oneofIndex_ = input.readInt32();
               break;
             }
@@ -7985,5 +8349,4 @@
 
     private int bitField0_;
-    // optional string name = 1;
     public static final int NAME_FIELD_NUMBER = 1;
     private java.lang.Object name_;
@@ -8028,5 +8391,4 @@
     }
 
-    // optional int32 number = 3;
     public static final int NUMBER_FIELD_NUMBER = 3;
     private int number_;
@@ -8044,5 +8406,4 @@
     }
 
-    // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
     public static final int LABEL_FIELD_NUMBER = 4;
     private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label label_;
@@ -8060,5 +8421,4 @@
     }
 
-    // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
     public static final int TYPE_FIELD_NUMBER = 5;
     private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type type_;
@@ -8068,5 +8428,5 @@
      * <pre>
      * If type_name is set, this need not be set.  If both this and type_name
-     * are set, this must be either TYPE_ENUM or TYPE_MESSAGE.
+     * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
      * </pre>
      */
@@ -8079,5 +8439,5 @@
      * <pre>
      * If type_name is set, this need not be set.  If both this and type_name
-     * are set, this must be either TYPE_ENUM or TYPE_MESSAGE.
+     * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
      * </pre>
      */
@@ -8086,5 +8446,4 @@
     }
 
-    // optional string type_name = 6;
     public static final int TYPE_NAME_FIELD_NUMBER = 6;
     private java.lang.Object typeName_;
@@ -8153,5 +8512,4 @@
     }
 
-    // optional string extendee = 2;
     public static final int EXTENDEE_FIELD_NUMBER = 2;
     private java.lang.Object extendee_;
@@ -8211,5 +8569,4 @@
     }
 
-    // optional string default_value = 7;
     public static final int DEFAULT_VALUE_FIELD_NUMBER = 7;
     private java.lang.Object defaultValue_;
@@ -8278,5 +8635,33 @@
     }
 
-    // optional .google.protobuf.FieldOptions options = 8;
+    public static final int ONEOF_INDEX_FIELD_NUMBER = 9;
+    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.
+     * </pre>
+     */
+    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.
+     * </pre>
+     */
+    public int getOneofIndex() {
+      return oneofIndex_;
+    }
+
     public static final int OPTIONS_FIELD_NUMBER = 8;
     private com.google.protobuf.DescriptorProtos.FieldOptions options_;
@@ -8285,5 +8670,5 @@
      */
     public boolean hasOptions() {
-      return ((bitField0_ & 0x00000080) == 0x00000080);
+      return ((bitField0_ & 0x00000100) == 0x00000100);
     }
     /**
@@ -8308,4 +8693,5 @@
       extendee_ = "";
       defaultValue_ = "";
+      oneofIndex_ = 0;
       options_ = com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance();
     }
@@ -8313,5 +8699,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       if (hasOptions()) {
@@ -8349,6 +8736,9 @@
         output.writeBytes(7, getDefaultValueBytes());
       }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(8, options_);
+      }
       if (((bitField0_ & 0x00000080) == 0x00000080)) {
-        output.writeMessage(8, options_);
+        output.writeInt32(9, oneofIndex_);
       }
       getUnknownFields().writeTo(output);
@@ -8389,7 +8779,11 @@
           .computeBytesSize(7, getDefaultValueBytes());
       }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, options_);
+      }
       if (((bitField0_ & 0x00000080) == 0x00000080)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, options_);
+          .computeInt32Size(9, oneofIndex_);
       }
       size += getUnknownFields().getSerializedSize();
@@ -8479,6 +8873,7 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder {
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.FieldDescriptorProto)
+        com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -8528,4 +8923,6 @@
         defaultValue_ = "";
         bitField0_ = (bitField0_ & ~0x00000040);
+        oneofIndex_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000080);
         if (optionsBuilder_ == null) {
           options_ = com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance();
@@ -8533,5 +8930,5 @@
           optionsBuilder_.clear();
         }
-        bitField0_ = (bitField0_ & ~0x00000080);
+        bitField0_ = (bitField0_ & ~0x00000100);
         return this;
       }
@@ -8593,4 +8990,8 @@
           to_bitField0_ |= 0x00000080;
         }
+        result.oneofIndex_ = oneofIndex_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
         if (optionsBuilder_ == null) {
           result.options_ = options_;
@@ -8642,4 +9043,7 @@
           defaultValue_ = other.defaultValue_;
           onChanged();
+        }
+        if (other.hasOneofIndex()) {
+          setOneofIndex(other.getOneofIndex());
         }
         if (other.hasOptions()) {
@@ -8679,5 +9083,4 @@
       private int bitField0_;
 
-      // optional string name = 1;
       private java.lang.Object name_ = "";
       /**
@@ -8693,7 +9096,10 @@
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          name_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
           return s;
         } else {
@@ -8753,5 +9159,4 @@
       }
 
-      // optional int32 number = 3;
       private int number_ ;
       /**
@@ -8786,5 +9191,4 @@
       }
 
-      // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
       private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label label_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL;
       /**
@@ -8822,5 +9226,4 @@
       }
 
-      // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
       private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type type_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE;
       /**
@@ -8829,5 +9232,5 @@
        * <pre>
        * If type_name is set, this need not be set.  If both this and type_name
-       * are set, this must be either TYPE_ENUM or TYPE_MESSAGE.
+       * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
        * </pre>
        */
@@ -8840,5 +9243,5 @@
        * <pre>
        * If type_name is set, this need not be set.  If both this and type_name
-       * are set, this must be either TYPE_ENUM or TYPE_MESSAGE.
+       * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
        * </pre>
        */
@@ -8851,5 +9254,5 @@
        * <pre>
        * If type_name is set, this need not be set.  If both this and type_name
-       * are set, this must be either TYPE_ENUM or TYPE_MESSAGE.
+       * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
        * </pre>
        */
@@ -8868,5 +9271,5 @@
        * <pre>
        * If type_name is set, this need not be set.  If both this and type_name
-       * are set, this must be either TYPE_ENUM or TYPE_MESSAGE.
+       * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
        * </pre>
        */
@@ -8878,5 +9281,4 @@
       }
 
-      // optional string type_name = 6;
       private java.lang.Object typeName_ = "";
       /**
@@ -8908,7 +9310,10 @@
         java.lang.Object ref = typeName_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          typeName_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            typeName_ = s;
+          }
           return s;
         } else {
@@ -9000,5 +9405,4 @@
       }
 
-      // optional string extendee = 2;
       private java.lang.Object extendee_ = "";
       /**
@@ -9024,7 +9428,10 @@
         java.lang.Object ref = extendee_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          extendee_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            extendee_ = s;
+          }
           return s;
         } else {
@@ -9104,5 +9511,4 @@
       }
 
-      // optional string default_value = 7;
       private java.lang.Object defaultValue_ = "";
       /**
@@ -9134,7 +9540,10 @@
         java.lang.Object ref = defaultValue_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          defaultValue_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            defaultValue_ = s;
+          }
           return s;
         } else {
@@ -9226,5 +9635,64 @@
       }
 
-      // optional .google.protobuf.FieldOptions options = 8;
+      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.
+       * </pre>
+       */
+      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.
+       * </pre>
+       */
+      public int getOneofIndex() {
+        return 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.
+       * </pre>
+       */
+      public Builder setOneofIndex(int value) {
+        bitField0_ |= 0x00000080;
+        oneofIndex_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <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() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        oneofIndex_ = 0;
+        onChanged();
+        return this;
+      }
+
       private com.google.protobuf.DescriptorProtos.FieldOptions options_ = com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance();
       private com.google.protobuf.SingleFieldBuilder<
@@ -9234,5 +9702,5 @@
        */
       public boolean hasOptions() {
-        return ((bitField0_ & 0x00000080) == 0x00000080);
+        return ((bitField0_ & 0x00000100) == 0x00000100);
       }
       /**
@@ -9259,5 +9727,5 @@
           optionsBuilder_.setMessage(value);
         }
-        bitField0_ |= 0x00000080;
+        bitField0_ |= 0x00000100;
         return this;
       }
@@ -9273,5 +9741,5 @@
           optionsBuilder_.setMessage(builderForValue.build());
         }
-        bitField0_ |= 0x00000080;
+        bitField0_ |= 0x00000100;
         return this;
       }
@@ -9281,5 +9749,5 @@
       public Builder mergeOptions(com.google.protobuf.DescriptorProtos.FieldOptions value) {
         if (optionsBuilder_ == null) {
-          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+          if (((bitField0_ & 0x00000100) == 0x00000100) &&
               options_ != com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance()) {
             options_ =
@@ -9292,5 +9760,5 @@
           optionsBuilder_.mergeFrom(value);
         }
-        bitField0_ |= 0x00000080;
+        bitField0_ |= 0x00000100;
         return this;
       }
@@ -9305,5 +9773,5 @@
           optionsBuilder_.clear();
         }
-        bitField0_ = (bitField0_ & ~0x00000080);
+        bitField0_ = (bitField0_ & ~0x00000100);
         return this;
       }
@@ -9312,5 +9780,5 @@
        */
       public com.google.protobuf.DescriptorProtos.FieldOptions.Builder getOptionsBuilder() {
-        bitField0_ |= 0x00000080;
+        bitField0_ |= 0x00000100;
         onChanged();
         return getOptionsFieldBuilder().getBuilder();
@@ -9335,5 +9803,5 @@
           optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
               com.google.protobuf.DescriptorProtos.FieldOptions, com.google.protobuf.DescriptorProtos.FieldOptions.Builder, com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder>(
-                  options_,
+                  getOptions(),
                   getParentForChildren(),
                   isClean());
@@ -9354,8 +9822,8 @@
   }
 
-  public interface EnumDescriptorProtoOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // optional string name = 1;
+  public interface OneofDescriptorProtoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.OneofDescriptorProto)
+      com.google.protobuf.MessageOrBuilder {
+
     /**
      * <code>optional string name = 1;</code>
@@ -9371,6 +9839,489 @@
     com.google.protobuf.ByteString
         getNameBytes();
-
-    // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
+  }
+  /**
+   * Protobuf type {@code google.protobuf.OneofDescriptorProto}
+   *
+   * <pre>
+   * Describes a oneof.
+   * </pre>
+   */
+  public static final class OneofDescriptorProto extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.OneofDescriptorProto)
+      OneofDescriptorProtoOrBuilder {
+    // Use OneofDescriptorProto.newBuilder() to construct.
+    private OneofDescriptorProto(com.google.protobuf.GeneratedMessage.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;
+    }
+
+    public OneofDescriptorProto getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private OneofDescriptorProto(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      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: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000001;
+              name_ = 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 {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofDescriptorProto_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofDescriptorProto_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.google.protobuf.DescriptorProtos.OneofDescriptorProto.class, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder.class);
+    }
+
+    public static 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);
+      }
+    };
+
+    @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_;
+    /**
+     * <code>optional string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <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) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <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.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      name_ = "";
+    }
+    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 (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto 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.OneofDescriptorProto parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto 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.OneofDescriptorProto parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto 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.OneofDescriptorProto parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto 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(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.OneofDescriptorProto prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code google.protobuf.OneofDescriptorProto}
+     *
+     * <pre>
+     * Describes a oneof.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.OneofDescriptorProto)
+        com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofDescriptorProto_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofDescriptorProto_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.google.protobuf.DescriptorProtos.OneofDescriptorProto.class, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder.class);
+      }
+
+      // Construct using com.google.protobuf.DescriptorProtos.OneofDescriptorProto.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofDescriptorProto_descriptor;
+      }
+
+      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getDefaultInstanceForType() {
+        return com.google.protobuf.DescriptorProtos.OneofDescriptorProto.getDefaultInstance();
+      }
+
+      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto build() {
+        com.google.protobuf.DescriptorProtos.OneofDescriptorProto result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto buildPartial() {
+        com.google.protobuf.DescriptorProtos.OneofDescriptorProto result = new com.google.protobuf.DescriptorProtos.OneofDescriptorProto(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof com.google.protobuf.DescriptorProtos.OneofDescriptorProto) {
+          return mergeFrom((com.google.protobuf.DescriptorProtos.OneofDescriptorProto)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.OneofDescriptorProto other) {
+        if (other == com.google.protobuf.DescriptorProtos.OneofDescriptorProto.getDefaultInstance()) return this;
+        if (other.hasName()) {
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        com.google.protobuf.DescriptorProtos.OneofDescriptorProto parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (com.google.protobuf.DescriptorProtos.OneofDescriptorProto) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.lang.Object name_ = "";
+      /**
+       * <code>optional string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        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()) {
+            name_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:google.protobuf.OneofDescriptorProto)
+    }
+
+    static {
+      defaultInstance = new OneofDescriptorProto(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:google.protobuf.OneofDescriptorProto)
+  }
+
+  public interface EnumDescriptorProtoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.EnumDescriptorProto)
+      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>repeated .google.protobuf.EnumValueDescriptorProto value = 2;</code>
@@ -9397,5 +10348,4 @@
         int index);
 
-    // optional .google.protobuf.EnumOptions options = 3;
     /**
      * <code>optional .google.protobuf.EnumOptions options = 3;</code>
@@ -9419,6 +10369,7 @@
    */
   public static final class EnumDescriptorProto extends
-      com.google.protobuf.GeneratedMessage
-      implements EnumDescriptorProtoOrBuilder {
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.EnumDescriptorProto)
+      EnumDescriptorProtoOrBuilder {
     // Use EnumDescriptorProto.newBuilder() to construct.
     private EnumDescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
@@ -9467,6 +10418,7 @@
             }
             case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000001;
-              name_ = input.readBytes();
+              name_ = bs;
               break;
             }
@@ -9535,5 +10487,4 @@
 
     private int bitField0_;
-    // optional string name = 1;
     public static final int NAME_FIELD_NUMBER = 1;
     private java.lang.Object name_;
@@ -9578,5 +10529,4 @@
     }
 
-    // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
     public static final int VALUE_FIELD_NUMBER = 2;
     private java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> value_;
@@ -9614,5 +10564,4 @@
     }
 
-    // optional .google.protobuf.EnumOptions options = 3;
     public static final int OPTIONS_FIELD_NUMBER = 3;
     private com.google.protobuf.DescriptorProtos.EnumOptions options_;
@@ -9644,5 +10593,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getValueCount(); i++) {
@@ -9781,6 +10731,7 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder {
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.EnumDescriptorProto)
+        com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -9969,5 +10920,4 @@
       private int bitField0_;
 
-      // optional string name = 1;
       private java.lang.Object name_ = "";
       /**
@@ -9983,7 +10933,10 @@
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          name_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
           return s;
         } else {
@@ -10043,5 +10996,4 @@
       }
 
-      // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
       private java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> value_ =
         java.util.Collections.emptyList();
@@ -10185,5 +11137,6 @@
         if (valueBuilder_ == null) {
           ensureValueIsMutable();
-          super.addAll(values, value_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, value_);
           onChanged();
         } else {
@@ -10283,5 +11236,4 @@
       }
 
-      // optional .google.protobuf.EnumOptions options = 3;
       private com.google.protobuf.DescriptorProtos.EnumOptions options_ = com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance();
       private com.google.protobuf.SingleFieldBuilder<
@@ -10392,5 +11344,5 @@
           optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
               com.google.protobuf.DescriptorProtos.EnumOptions, com.google.protobuf.DescriptorProtos.EnumOptions.Builder, com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder>(
-                  options_,
+                  getOptions(),
                   getParentForChildren(),
                   isClean());
@@ -10411,8 +11363,8 @@
   }
 
-  public interface EnumValueDescriptorProtoOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // optional string name = 1;
+  public interface EnumValueDescriptorProtoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.EnumValueDescriptorProto)
+      com.google.protobuf.MessageOrBuilder {
+
     /**
      * <code>optional string name = 1;</code>
@@ -10429,5 +11381,4 @@
         getNameBytes();
 
-    // optional int32 number = 2;
     /**
      * <code>optional int32 number = 2;</code>
@@ -10439,5 +11390,4 @@
     int getNumber();
 
-    // optional .google.protobuf.EnumValueOptions options = 3;
     /**
      * <code>optional .google.protobuf.EnumValueOptions options = 3;</code>
@@ -10461,6 +11411,7 @@
    */
   public static final class EnumValueDescriptorProto extends
-      com.google.protobuf.GeneratedMessage
-      implements EnumValueDescriptorProtoOrBuilder {
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.EnumValueDescriptorProto)
+      EnumValueDescriptorProtoOrBuilder {
     // Use EnumValueDescriptorProto.newBuilder() to construct.
     private EnumValueDescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
@@ -10509,6 +11460,7 @@
             }
             case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000001;
-              name_ = input.readBytes();
+              name_ = bs;
               break;
             }
@@ -10571,5 +11523,4 @@
 
     private int bitField0_;
-    // optional string name = 1;
     public static final int NAME_FIELD_NUMBER = 1;
     private java.lang.Object name_;
@@ -10614,5 +11565,4 @@
     }
 
-    // optional int32 number = 2;
     public static final int NUMBER_FIELD_NUMBER = 2;
     private int number_;
@@ -10630,5 +11580,4 @@
     }
 
-    // optional .google.protobuf.EnumValueOptions options = 3;
     public static final int OPTIONS_FIELD_NUMBER = 3;
     private com.google.protobuf.DescriptorProtos.EnumValueOptions options_;
@@ -10660,5 +11609,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       if (hasOptions()) {
@@ -10791,6 +11741,7 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder {
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.EnumValueDescriptorProto)
+        com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -10940,5 +11891,4 @@
       private int bitField0_;
 
-      // optional string name = 1;
       private java.lang.Object name_ = "";
       /**
@@ -10954,7 +11904,10 @@
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          name_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
           return s;
         } else {
@@ -11014,5 +11967,4 @@
       }
 
-      // optional int32 number = 2;
       private int number_ ;
       /**
@@ -11047,5 +11999,4 @@
       }
 
-      // optional .google.protobuf.EnumValueOptions options = 3;
       private com.google.protobuf.DescriptorProtos.EnumValueOptions options_ = com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance();
       private com.google.protobuf.SingleFieldBuilder<
@@ -11156,5 +12107,5 @@
           optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
               com.google.protobuf.DescriptorProtos.EnumValueOptions, com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder, com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder>(
-                  options_,
+                  getOptions(),
                   getParentForChildren(),
                   isClean());
@@ -11175,8 +12126,8 @@
   }
 
-  public interface ServiceDescriptorProtoOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // optional string name = 1;
+  public interface ServiceDescriptorProtoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.ServiceDescriptorProto)
+      com.google.protobuf.MessageOrBuilder {
+
     /**
      * <code>optional string name = 1;</code>
@@ -11193,5 +12144,4 @@
         getNameBytes();
 
-    // repeated .google.protobuf.MethodDescriptorProto method = 2;
     /**
      * <code>repeated .google.protobuf.MethodDescriptorProto method = 2;</code>
@@ -11218,5 +12168,4 @@
         int index);
 
-    // optional .google.protobuf.ServiceOptions options = 3;
     /**
      * <code>optional .google.protobuf.ServiceOptions options = 3;</code>
@@ -11240,6 +12189,7 @@
    */
   public static final class ServiceDescriptorProto extends
-      com.google.protobuf.GeneratedMessage
-      implements ServiceDescriptorProtoOrBuilder {
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.ServiceDescriptorProto)
+      ServiceDescriptorProtoOrBuilder {
     // Use ServiceDescriptorProto.newBuilder() to construct.
     private ServiceDescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
@@ -11288,6 +12238,7 @@
             }
             case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000001;
-              name_ = input.readBytes();
+              name_ = bs;
               break;
             }
@@ -11356,5 +12307,4 @@
 
     private int bitField0_;
-    // optional string name = 1;
     public static final int NAME_FIELD_NUMBER = 1;
     private java.lang.Object name_;
@@ -11399,5 +12349,4 @@
     }
 
-    // repeated .google.protobuf.MethodDescriptorProto method = 2;
     public static final int METHOD_FIELD_NUMBER = 2;
     private java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> method_;
@@ -11435,5 +12384,4 @@
     }
 
-    // optional .google.protobuf.ServiceOptions options = 3;
     public static final int OPTIONS_FIELD_NUMBER = 3;
     private com.google.protobuf.DescriptorProtos.ServiceOptions options_;
@@ -11465,5 +12413,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getMethodCount(); i++) {
@@ -11602,6 +12551,7 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder {
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.ServiceDescriptorProto)
+        com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -11790,5 +12740,4 @@
       private int bitField0_;
 
-      // optional string name = 1;
       private java.lang.Object name_ = "";
       /**
@@ -11804,7 +12753,10 @@
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          name_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
           return s;
         } else {
@@ -11864,5 +12816,4 @@
       }
 
-      // repeated .google.protobuf.MethodDescriptorProto method = 2;
       private java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> method_ =
         java.util.Collections.emptyList();
@@ -12006,5 +12957,6 @@
         if (methodBuilder_ == null) {
           ensureMethodIsMutable();
-          super.addAll(values, method_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, method_);
           onChanged();
         } else {
@@ -12104,5 +13056,4 @@
       }
 
-      // optional .google.protobuf.ServiceOptions options = 3;
       private com.google.protobuf.DescriptorProtos.ServiceOptions options_ = com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance();
       private com.google.protobuf.SingleFieldBuilder<
@@ -12213,5 +13164,5 @@
           optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
               com.google.protobuf.DescriptorProtos.ServiceOptions, com.google.protobuf.DescriptorProtos.ServiceOptions.Builder, com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder>(
-                  options_,
+                  getOptions(),
                   getParentForChildren(),
                   isClean());
@@ -12232,8 +13183,8 @@
   }
 
-  public interface MethodDescriptorProtoOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // optional string name = 1;
+  public interface MethodDescriptorProtoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.MethodDescriptorProto)
+      com.google.protobuf.MessageOrBuilder {
+
     /**
      * <code>optional string name = 1;</code>
@@ -12250,5 +13201,4 @@
         getNameBytes();
 
-    // optional string input_type = 2;
     /**
      * <code>optional string input_type = 2;</code>
@@ -12280,5 +13230,4 @@
         getInputTypeBytes();
 
-    // optional string output_type = 3;
     /**
      * <code>optional string output_type = 3;</code>
@@ -12295,5 +13244,4 @@
         getOutputTypeBytes();
 
-    // optional .google.protobuf.MethodOptions options = 4;
     /**
      * <code>optional .google.protobuf.MethodOptions options = 4;</code>
@@ -12317,6 +13265,7 @@
    */
   public static final class MethodDescriptorProto extends
-      com.google.protobuf.GeneratedMessage
-      implements MethodDescriptorProtoOrBuilder {
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.MethodDescriptorProto)
+      MethodDescriptorProtoOrBuilder {
     // Use MethodDescriptorProto.newBuilder() to construct.
     private MethodDescriptorProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
@@ -12365,16 +13314,19 @@
             }
             case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000001;
-              name_ = input.readBytes();
+              name_ = bs;
               break;
             }
             case 18: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000002;
-              inputType_ = input.readBytes();
+              inputType_ = bs;
               break;
             }
             case 26: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000004;
-              outputType_ = input.readBytes();
+              outputType_ = bs;
               break;
             }
@@ -12432,5 +13384,4 @@
 
     private int bitField0_;
-    // optional string name = 1;
     public static final int NAME_FIELD_NUMBER = 1;
     private java.lang.Object name_;
@@ -12475,5 +13426,4 @@
     }
 
-    // optional string input_type = 2;
     public static final int INPUT_TYPE_FIELD_NUMBER = 2;
     private java.lang.Object inputType_;
@@ -12533,5 +13483,4 @@
     }
 
-    // optional string output_type = 3;
     public static final int OUTPUT_TYPE_FIELD_NUMBER = 3;
     private java.lang.Object outputType_;
@@ -12576,5 +13525,4 @@
     }
 
-    // optional .google.protobuf.MethodOptions options = 4;
     public static final int OPTIONS_FIELD_NUMBER = 4;
     private com.google.protobuf.DescriptorProtos.MethodOptions options_;
@@ -12607,5 +13555,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       if (hasOptions()) {
@@ -12745,6 +13694,7 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder {
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.MethodDescriptorProto)
+        com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -12907,5 +13857,4 @@
       private int bitField0_;
 
-      // optional string name = 1;
       private java.lang.Object name_ = "";
       /**
@@ -12921,7 +13870,10 @@
         java.lang.Object ref = name_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          name_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
           return s;
         } else {
@@ -12981,5 +13933,4 @@
       }
 
-      // optional string input_type = 2;
       private java.lang.Object inputType_ = "";
       /**
@@ -13005,7 +13956,10 @@
         java.lang.Object ref = inputType_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          inputType_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            inputType_ = s;
+          }
           return s;
         } else {
@@ -13085,5 +14039,4 @@
       }
 
-      // optional string output_type = 3;
       private java.lang.Object outputType_ = "";
       /**
@@ -13099,7 +14052,10 @@
         java.lang.Object ref = outputType_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          outputType_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            outputType_ = s;
+          }
           return s;
         } else {
@@ -13159,5 +14115,4 @@
       }
 
-      // optional .google.protobuf.MethodOptions options = 4;
       private com.google.protobuf.DescriptorProtos.MethodOptions options_ = com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance();
       private com.google.protobuf.SingleFieldBuilder<
@@ -13268,5 +14223,5 @@
           optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
               com.google.protobuf.DescriptorProtos.MethodOptions, com.google.protobuf.DescriptorProtos.MethodOptions.Builder, com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder>(
-                  options_,
+                  getOptions(),
                   getParentForChildren(),
                   isClean());
@@ -13288,8 +14243,8 @@
 
   public interface FileOptionsOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.FileOptions)
       com.google.protobuf.GeneratedMessage.
           ExtendableMessageOrBuilder<FileOptions> {
 
-    // optional string java_package = 1;
     /**
      * <code>optional string java_package = 1;</code>
@@ -13327,5 +14282,4 @@
         getJavaPackageBytes();
 
-    // optional string java_outer_classname = 8;
     /**
      * <code>optional string java_outer_classname = 8;</code>
@@ -13366,5 +14320,4 @@
         getJavaOuterClassnameBytes();
 
-    // optional bool java_multiple_files = 10 [default = false];
     /**
      * <code>optional bool java_multiple_files = 10 [default = false];</code>
@@ -13394,5 +14347,4 @@
     boolean getJavaMultipleFiles();
 
-    // optional bool java_generate_equals_and_hash = 20 [default = false];
     /**
      * <code>optional bool java_generate_equals_and_hash = 20 [default = false];</code>
@@ -13400,7 +14352,13 @@
      * <pre>
      * If set true, then the Java code generator will generate equals() and
-     * hashCode() methods for all messages defined in the .proto file. This is
-     * purely a speed optimization, as the AbstractMessage base class includes
-     * reflection-based implementations of these methods.
+     * 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>
      */
@@ -13411,12 +14369,44 @@
      * <pre>
      * If set true, then the Java code generator will generate equals() and
-     * hashCode() methods for all messages defined in the .proto file. This is
-     * purely a speed optimization, as the AbstractMessage base class includes
-     * reflection-based implementations of these methods.
+     * 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();
 
-    // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
+    /**
+     * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
+     *
+     * <pre>
+     * If set true, then the Java2 code generator will generate code that
+     * throws an exception whenever an attempt is made to assign a non-UTF-8
+     * byte sequence to a string field.
+     * Message reflection will do the same.
+     * However, an extension field still accepts non-UTF-8 byte sequences.
+     * This option has no effect on when used with the lite runtime.
+     * </pre>
+     */
+    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
+     * throws an exception whenever an attempt is made to assign a non-UTF-8
+     * byte sequence to a string field.
+     * Message reflection will do the same.
+     * However, an extension field still accepts non-UTF-8 byte sequences.
+     * This option has no effect on when used with the lite runtime.
+     * </pre>
+     */
+    boolean getJavaStringCheckUtf8();
+
     /**
      * <code>optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];</code>
@@ -13428,5 +14418,4 @@
     com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor();
 
-    // optional string go_package = 11;
     /**
      * <code>optional string go_package = 11;</code>
@@ -13458,5 +14447,4 @@
         getGoPackageBytes();
 
-    // optional bool cc_generic_services = 16 [default = false];
     /**
      * <code>optional bool cc_generic_services = 16 [default = false];</code>
@@ -13468,5 +14456,4 @@
      * Generic services were the only kind of service generation supported by
      * early versions of proto2.
-     *
      * Generic services are now considered deprecated in favor of using plugins
      * that generate code specific to your particular RPC system.  Therefore,
@@ -13485,5 +14472,4 @@
      * Generic services were the only kind of service generation supported by
      * early versions of proto2.
-     *
      * Generic services are now considered deprecated in favor of using plugins
      * that generate code specific to your particular RPC system.  Therefore,
@@ -13494,5 +14480,4 @@
     boolean getCcGenericServices();
 
-    // optional bool java_generic_services = 17 [default = false];
     /**
      * <code>optional bool java_generic_services = 17 [default = false];</code>
@@ -13504,5 +14489,4 @@
     boolean getJavaGenericServices();
 
-    // optional bool py_generic_services = 18 [default = false];
     /**
      * <code>optional bool py_generic_services = 18 [default = false];</code>
@@ -13514,5 +14498,27 @@
     boolean getPyGenericServices();
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+    /**
+     * <code>optional bool deprecated = 23 [default = false];</code>
+     *
+     * <pre>
+     * Is this file deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for everything in the file, or it will be completely ignored; in the very
+     * least, this is a formalization for deprecating files.
+     * </pre>
+     */
+    boolean hasDeprecated();
+    /**
+     * <code>optional bool deprecated = 23 [default = false];</code>
+     *
+     * <pre>
+     * Is this file deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for everything in the file, or it will be completely ignored; in the very
+     * least, this is a formalization for deprecating files.
+     * </pre>
+     */
+    boolean getDeprecated();
+
     /**
      * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
@@ -13564,5 +14570,7 @@
   public static final class FileOptions extends
       com.google.protobuf.GeneratedMessage.ExtendableMessage<
-        FileOptions> implements FileOptionsOrBuilder {
+        FileOptions> implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.FileOptions)
+      FileOptionsOrBuilder {
     // Use FileOptions.newBuilder() to construct.
     private FileOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder<com.google.protobuf.DescriptorProtos.FileOptions, ?> builder) {
@@ -13611,11 +14619,13 @@
             }
             case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000001;
-              javaPackage_ = input.readBytes();
+              javaPackage_ = bs;
               break;
             }
             case 66: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000002;
-              javaOuterClassname_ = input.readBytes();
+              javaOuterClassname_ = bs;
               break;
             }
@@ -13626,5 +14636,5 @@
                 unknownFields.mergeVarintField(9, rawValue);
               } else {
-                bitField0_ |= 0x00000010;
+                bitField0_ |= 0x00000020;
                 optimizeFor_ = value;
               }
@@ -13637,20 +14647,21 @@
             }
             case 90: {
-              bitField0_ |= 0x00000020;
-              goPackage_ = input.readBytes();
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000040;
+              goPackage_ = bs;
               break;
             }
             case 128: {
-              bitField0_ |= 0x00000040;
+              bitField0_ |= 0x00000080;
               ccGenericServices_ = input.readBool();
               break;
             }
             case 136: {
-              bitField0_ |= 0x00000080;
+              bitField0_ |= 0x00000100;
               javaGenericServices_ = input.readBool();
               break;
             }
             case 144: {
-              bitField0_ |= 0x00000100;
+              bitField0_ |= 0x00000200;
               pyGenericServices_ = input.readBool();
               break;
@@ -13661,8 +14672,18 @@
               break;
             }
+            case 184: {
+              bitField0_ |= 0x00000400;
+              deprecated_ = input.readBool();
+              break;
+            }
+            case 216: {
+              bitField0_ |= 0x00000010;
+              javaStringCheckUtf8_ = input.readBool();
+              break;
+            }
             case 7994: {
-              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
+              if (!((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
                 uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
-                mutable_bitField0_ |= 0x00000200;
+                mutable_bitField0_ |= 0x00000800;
               }
               uninterpretedOption_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
@@ -13677,5 +14698,5 @@
             e.getMessage()).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
+        if (((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
           uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
         }
@@ -13831,5 +14852,4 @@
 
     private int bitField0_;
-    // optional string java_package = 1;
     public static final int JAVA_PACKAGE_FIELD_NUMBER = 1;
     private java.lang.Object javaPackage_;
@@ -13895,5 +14915,4 @@
     }
 
-    // optional string java_outer_classname = 8;
     public static final int JAVA_OUTER_CLASSNAME_FIELD_NUMBER = 8;
     private java.lang.Object javaOuterClassname_;
@@ -13962,5 +14981,4 @@
     }
 
-    // optional bool java_multiple_files = 10 [default = false];
     public static final int JAVA_MULTIPLE_FILES_FIELD_NUMBER = 10;
     private boolean javaMultipleFiles_;
@@ -13996,5 +15014,4 @@
     }
 
-    // optional bool java_generate_equals_and_hash = 20 [default = false];
     public static final int JAVA_GENERATE_EQUALS_AND_HASH_FIELD_NUMBER = 20;
     private boolean javaGenerateEqualsAndHash_;
@@ -14004,7 +15021,13 @@
      * <pre>
      * If set true, then the Java code generator will generate equals() and
-     * hashCode() methods for all messages defined in the .proto file. This is
-     * purely a speed optimization, as the AbstractMessage base class includes
-     * reflection-based implementations of these methods.
+     * 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>
      */
@@ -14017,7 +15040,13 @@
      * <pre>
      * If set true, then the Java code generator will generate equals() and
-     * hashCode() methods for all messages defined in the .proto file. This is
-     * purely a speed optimization, as the AbstractMessage base class includes
-     * reflection-based implementations of these methods.
+     * 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>
      */
@@ -14026,5 +15055,37 @@
     }
 
-    // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
+    public static final int JAVA_STRING_CHECK_UTF8_FIELD_NUMBER = 27;
+    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
+     * throws an exception whenever an attempt is made to assign a non-UTF-8
+     * byte sequence to a string field.
+     * Message reflection will do the same.
+     * However, an extension field still accepts non-UTF-8 byte sequences.
+     * This option has no effect on when used with the lite runtime.
+     * </pre>
+     */
+    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
+     * throws an exception whenever an attempt is made to assign a non-UTF-8
+     * byte sequence to a string field.
+     * Message reflection will do the same.
+     * However, an extension field still accepts non-UTF-8 byte sequences.
+     * This option has no effect on when used with the lite runtime.
+     * </pre>
+     */
+    public boolean getJavaStringCheckUtf8() {
+      return javaStringCheckUtf8_;
+    }
+
     public static final int OPTIMIZE_FOR_FIELD_NUMBER = 9;
     private com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode optimizeFor_;
@@ -14033,5 +15094,5 @@
      */
     public boolean hasOptimizeFor() {
-      return ((bitField0_ & 0x00000010) == 0x00000010);
+      return ((bitField0_ & 0x00000020) == 0x00000020);
     }
     /**
@@ -14042,5 +15103,4 @@
     }
 
-    // optional string go_package = 11;
     public static final int GO_PACKAGE_FIELD_NUMBER = 11;
     private java.lang.Object goPackage_;
@@ -14054,5 +15114,5 @@
      */
     public boolean hasGoPackage() {
-      return ((bitField0_ & 0x00000020) == 0x00000020);
+      return ((bitField0_ & 0x00000040) == 0x00000040);
     }
     /**
@@ -14100,5 +15160,4 @@
     }
 
-    // optional bool cc_generic_services = 16 [default = false];
     public static final int CC_GENERIC_SERVICES_FIELD_NUMBER = 16;
     private boolean ccGenericServices_;
@@ -14112,5 +15171,4 @@
      * Generic services were the only kind of service generation supported by
      * early versions of proto2.
-     *
      * Generic services are now considered deprecated in favor of using plugins
      * that generate code specific to your particular RPC system.  Therefore,
@@ -14120,5 +15178,5 @@
      */
     public boolean hasCcGenericServices() {
-      return ((bitField0_ & 0x00000040) == 0x00000040);
+      return ((bitField0_ & 0x00000080) == 0x00000080);
     }
     /**
@@ -14131,5 +15189,4 @@
      * Generic services were the only kind of service generation supported by
      * early versions of proto2.
-     *
      * Generic services are now considered deprecated in favor of using plugins
      * that generate code specific to your particular RPC system.  Therefore,
@@ -14142,5 +15199,4 @@
     }
 
-    // optional bool java_generic_services = 17 [default = false];
     public static final int JAVA_GENERIC_SERVICES_FIELD_NUMBER = 17;
     private boolean javaGenericServices_;
@@ -14149,5 +15205,5 @@
      */
     public boolean hasJavaGenericServices() {
-      return ((bitField0_ & 0x00000080) == 0x00000080);
+      return ((bitField0_ & 0x00000100) == 0x00000100);
     }
     /**
@@ -14158,5 +15214,4 @@
     }
 
-    // optional bool py_generic_services = 18 [default = false];
     public static final int PY_GENERIC_SERVICES_FIELD_NUMBER = 18;
     private boolean pyGenericServices_;
@@ -14165,5 +15220,5 @@
      */
     public boolean hasPyGenericServices() {
-      return ((bitField0_ & 0x00000100) == 0x00000100);
+      return ((bitField0_ & 0x00000200) == 0x00000200);
     }
     /**
@@ -14174,5 +15229,33 @@
     }
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+    public static final int DEPRECATED_FIELD_NUMBER = 23;
+    private boolean deprecated_;
+    /**
+     * <code>optional bool deprecated = 23 [default = false];</code>
+     *
+     * <pre>
+     * Is this file deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for everything in the file, or it will be completely ignored; in the very
+     * least, this is a formalization for deprecating files.
+     * </pre>
+     */
+    public boolean hasDeprecated() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional bool deprecated = 23 [default = false];</code>
+     *
+     * <pre>
+     * Is this file deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for everything in the file, or it will be completely ignored; in the very
+     * least, this is a formalization for deprecating files.
+     * </pre>
+     */
+    public boolean getDeprecated() {
+      return deprecated_;
+    }
+
     public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
@@ -14235,4 +15318,5 @@
       javaMultipleFiles_ = false;
       javaGenerateEqualsAndHash_ = false;
+      javaStringCheckUtf8_ = false;
       optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED;
       goPackage_ = "";
@@ -14240,4 +15324,5 @@
       javaGenericServices_ = false;
       pyGenericServices_ = false;
+      deprecated_ = false;
       uninterpretedOption_ = java.util.Collections.emptyList();
     }
@@ -14245,5 +15330,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getUninterpretedOptionCount(); i++) {
@@ -14273,5 +15359,5 @@
         output.writeBytes(8, getJavaOuterClassnameBytes());
       }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
         output.writeEnum(9, optimizeFor_.getNumber());
       }
@@ -14279,18 +15365,24 @@
         output.writeBool(10, javaMultipleFiles_);
       }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
         output.writeBytes(11, getGoPackageBytes());
       }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
         output.writeBool(16, ccGenericServices_);
       }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
         output.writeBool(17, javaGenericServices_);
       }
-      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
         output.writeBool(18, pyGenericServices_);
       }
       if (((bitField0_ & 0x00000008) == 0x00000008)) {
         output.writeBool(20, javaGenerateEqualsAndHash_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeBool(23, deprecated_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBool(27, javaStringCheckUtf8_);
       }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
@@ -14315,5 +15407,5 @@
           .computeBytesSize(8, getJavaOuterClassnameBytes());
       }
-      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
         size += com.google.protobuf.CodedOutputStream
           .computeEnumSize(9, optimizeFor_.getNumber());
@@ -14323,17 +15415,17 @@
           .computeBoolSize(10, javaMultipleFiles_);
       }
-      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
         size += com.google.protobuf.CodedOutputStream
           .computeBytesSize(11, getGoPackageBytes());
       }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
         size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(16, ccGenericServices_);
       }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
         size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(17, javaGenericServices_);
       }
-      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
         size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(18, pyGenericServices_);
@@ -14342,4 +15434,12 @@
         size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(20, javaGenerateEqualsAndHash_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(23, deprecated_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(27, javaStringCheckUtf8_);
       }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
@@ -14431,5 +15531,7 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.ExtendableBuilder<
-          com.google.protobuf.DescriptorProtos.FileOptions, Builder> implements com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder {
+          com.google.protobuf.DescriptorProtos.FileOptions, Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.FileOptions)
+        com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -14473,17 +15575,21 @@
         javaGenerateEqualsAndHash_ = false;
         bitField0_ = (bitField0_ & ~0x00000008);
+        javaStringCheckUtf8_ = false;
+        bitField0_ = (bitField0_ & ~0x00000010);
         optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED;
-        bitField0_ = (bitField0_ & ~0x00000010);
+        bitField0_ = (bitField0_ & ~0x00000020);
         goPackage_ = "";
-        bitField0_ = (bitField0_ & ~0x00000020);
+        bitField0_ = (bitField0_ & ~0x00000040);
         ccGenericServices_ = false;
-        bitField0_ = (bitField0_ & ~0x00000040);
+        bitField0_ = (bitField0_ & ~0x00000080);
         javaGenericServices_ = false;
-        bitField0_ = (bitField0_ & ~0x00000080);
+        bitField0_ = (bitField0_ & ~0x00000100);
         pyGenericServices_ = false;
-        bitField0_ = (bitField0_ & ~0x00000100);
+        bitField0_ = (bitField0_ & ~0x00000200);
+        deprecated_ = false;
+        bitField0_ = (bitField0_ & ~0x00000400);
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000200);
+          bitField0_ = (bitField0_ & ~0x00000800);
         } else {
           uninterpretedOptionBuilder_.clear();
@@ -14536,25 +15642,33 @@
           to_bitField0_ |= 0x00000010;
         }
-        result.optimizeFor_ = optimizeFor_;
+        result.javaStringCheckUtf8_ = javaStringCheckUtf8_;
         if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
           to_bitField0_ |= 0x00000020;
         }
-        result.goPackage_ = goPackage_;
+        result.optimizeFor_ = optimizeFor_;
         if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
           to_bitField0_ |= 0x00000040;
         }
-        result.ccGenericServices_ = ccGenericServices_;
+        result.goPackage_ = goPackage_;
         if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
           to_bitField0_ |= 0x00000080;
         }
-        result.javaGenericServices_ = javaGenericServices_;
+        result.ccGenericServices_ = ccGenericServices_;
         if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
           to_bitField0_ |= 0x00000100;
         }
+        result.javaGenericServices_ = javaGenericServices_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
         result.pyGenericServices_ = pyGenericServices_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.deprecated_ = deprecated_;
         if (uninterpretedOptionBuilder_ == null) {
-          if (((bitField0_ & 0x00000200) == 0x00000200)) {
+          if (((bitField0_ & 0x00000800) == 0x00000800)) {
             uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
-            bitField0_ = (bitField0_ & ~0x00000200);
+            bitField0_ = (bitField0_ & ~0x00000800);
           }
           result.uninterpretedOption_ = uninterpretedOption_;
@@ -14594,9 +15708,12 @@
           setJavaGenerateEqualsAndHash(other.getJavaGenerateEqualsAndHash());
         }
+        if (other.hasJavaStringCheckUtf8()) {
+          setJavaStringCheckUtf8(other.getJavaStringCheckUtf8());
+        }
         if (other.hasOptimizeFor()) {
           setOptimizeFor(other.getOptimizeFor());
         }
         if (other.hasGoPackage()) {
-          bitField0_ |= 0x00000020;
+          bitField0_ |= 0x00000040;
           goPackage_ = other.goPackage_;
           onChanged();
@@ -14610,4 +15727,7 @@
         if (other.hasPyGenericServices()) {
           setPyGenericServices(other.getPyGenericServices());
+        }
+        if (other.hasDeprecated()) {
+          setDeprecated(other.getDeprecated());
         }
         if (uninterpretedOptionBuilder_ == null) {
@@ -14615,5 +15735,5 @@
             if (uninterpretedOption_.isEmpty()) {
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000200);
+              bitField0_ = (bitField0_ & ~0x00000800);
             } else {
               ensureUninterpretedOptionIsMutable();
@@ -14628,5 +15748,5 @@
               uninterpretedOptionBuilder_ = null;
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000200);
+              bitField0_ = (bitField0_ & ~0x00000800);
               uninterpretedOptionBuilder_ = 
                 com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
@@ -14675,5 +15795,4 @@
       private int bitField0_;
 
-      // optional string java_package = 1;
       private java.lang.Object javaPackage_ = "";
       /**
@@ -14703,7 +15822,10 @@
         java.lang.Object ref = javaPackage_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          javaPackage_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            javaPackage_ = s;
+          }
           return s;
         } else {
@@ -14791,5 +15913,4 @@
       }
 
-      // optional string java_outer_classname = 8;
       private java.lang.Object javaOuterClassname_ = "";
       /**
@@ -14821,7 +15942,10 @@
         java.lang.Object ref = javaOuterClassname_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          javaOuterClassname_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            javaOuterClassname_ = s;
+          }
           return s;
         } else {
@@ -14913,5 +16037,4 @@
       }
 
-      // optional bool java_multiple_files = 10 [default = false];
       private boolean javaMultipleFiles_ ;
       /**
@@ -14982,5 +16105,4 @@
       }
 
-      // optional bool java_generate_equals_and_hash = 20 [default = false];
       private boolean javaGenerateEqualsAndHash_ ;
       /**
@@ -14989,7 +16111,13 @@
        * <pre>
        * If set true, then the Java code generator will generate equals() and
-       * hashCode() methods for all messages defined in the .proto file. This is
-       * purely a speed optimization, as the AbstractMessage base class includes
-       * reflection-based implementations of these methods.
+       * 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>
        */
@@ -15002,7 +16130,13 @@
        * <pre>
        * If set true, then the Java code generator will generate equals() and
-       * hashCode() methods for all messages defined in the .proto file. This is
-       * purely a speed optimization, as the AbstractMessage base class includes
-       * reflection-based implementations of these methods.
+       * 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>
        */
@@ -15015,7 +16149,13 @@
        * <pre>
        * If set true, then the Java code generator will generate equals() and
-       * hashCode() methods for all messages defined in the .proto file. This is
-       * purely a speed optimization, as the AbstractMessage base class includes
-       * reflection-based implementations of these methods.
+       * 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>
        */
@@ -15031,7 +16171,13 @@
        * <pre>
        * If set true, then the Java code generator will generate equals() and
-       * hashCode() methods for all messages defined in the .proto file. This is
-       * purely a speed optimization, as the AbstractMessage base class includes
-       * reflection-based implementations of these methods.
+       * 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>
        */
@@ -15043,5 +16189,72 @@
       }
 
-      // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
+      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
+       * throws an exception whenever an attempt is made to assign a non-UTF-8
+       * byte sequence to a string field.
+       * Message reflection will do the same.
+       * However, an extension field still accepts non-UTF-8 byte sequences.
+       * This option has no effect on when used with the lite runtime.
+       * </pre>
+       */
+      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
+       * throws an exception whenever an attempt is made to assign a non-UTF-8
+       * byte sequence to a string field.
+       * Message reflection will do the same.
+       * However, an extension field still accepts non-UTF-8 byte sequences.
+       * This option has no effect on when used with the lite runtime.
+       * </pre>
+       */
+      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
+       * throws an exception whenever an attempt is made to assign a non-UTF-8
+       * byte sequence to a string field.
+       * Message reflection will do the same.
+       * However, an extension field still accepts non-UTF-8 byte sequences.
+       * This option has no effect on when used with the lite runtime.
+       * </pre>
+       */
+      public Builder setJavaStringCheckUtf8(boolean value) {
+        bitField0_ |= 0x00000010;
+        javaStringCheckUtf8_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool java_string_check_utf8 = 27 [default = false];</code>
+       *
+       * <pre>
+       * If set true, then the Java2 code generator will generate code that
+       * throws an exception whenever an attempt is made to assign a non-UTF-8
+       * byte sequence to a string field.
+       * Message reflection will do the same.
+       * However, an extension field still accepts non-UTF-8 byte sequences.
+       * This option has no effect on when used with the lite runtime.
+       * </pre>
+       */
+      public Builder clearJavaStringCheckUtf8() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        javaStringCheckUtf8_ = false;
+        onChanged();
+        return this;
+      }
+
       private com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED;
       /**
@@ -15049,5 +16262,5 @@
        */
       public boolean hasOptimizeFor() {
-        return ((bitField0_ & 0x00000010) == 0x00000010);
+        return ((bitField0_ & 0x00000020) == 0x00000020);
       }
       /**
@@ -15064,5 +16277,5 @@
           throw new NullPointerException();
         }
-        bitField0_ |= 0x00000010;
+        bitField0_ |= 0x00000020;
         optimizeFor_ = value;
         onChanged();
@@ -15073,5 +16286,5 @@
        */
       public Builder clearOptimizeFor() {
-        bitField0_ = (bitField0_ & ~0x00000010);
+        bitField0_ = (bitField0_ & ~0x00000020);
         optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED;
         onChanged();
@@ -15079,5 +16292,4 @@
       }
 
-      // optional string go_package = 11;
       private java.lang.Object goPackage_ = "";
       /**
@@ -15090,5 +16302,5 @@
        */
       public boolean hasGoPackage() {
-        return ((bitField0_ & 0x00000020) == 0x00000020);
+        return ((bitField0_ & 0x00000040) == 0x00000040);
       }
       /**
@@ -15103,7 +16315,10 @@
         java.lang.Object ref = goPackage_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          goPackage_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            goPackage_ = s;
+          }
           return s;
         } else {
@@ -15145,5 +16360,5 @@
     throw new NullPointerException();
   }
-  bitField0_ |= 0x00000020;
+  bitField0_ |= 0x00000040;
         goPackage_ = value;
         onChanged();
@@ -15159,5 +16374,5 @@
        */
       public Builder clearGoPackage() {
-        bitField0_ = (bitField0_ & ~0x00000020);
+        bitField0_ = (bitField0_ & ~0x00000040);
         goPackage_ = getDefaultInstance().getGoPackage();
         onChanged();
@@ -15177,5 +16392,5 @@
     throw new NullPointerException();
   }
-  bitField0_ |= 0x00000020;
+  bitField0_ |= 0x00000040;
         goPackage_ = value;
         onChanged();
@@ -15183,5 +16398,4 @@
       }
 
-      // optional bool cc_generic_services = 16 [default = false];
       private boolean ccGenericServices_ ;
       /**
@@ -15194,5 +16408,4 @@
        * Generic services were the only kind of service generation supported by
        * early versions of proto2.
-       *
        * Generic services are now considered deprecated in favor of using plugins
        * that generate code specific to your particular RPC system.  Therefore,
@@ -15202,5 +16415,5 @@
        */
       public boolean hasCcGenericServices() {
-        return ((bitField0_ & 0x00000040) == 0x00000040);
+        return ((bitField0_ & 0x00000080) == 0x00000080);
       }
       /**
@@ -15213,5 +16426,4 @@
        * Generic services were the only kind of service generation supported by
        * early versions of proto2.
-       *
        * Generic services are now considered deprecated in favor of using plugins
        * that generate code specific to your particular RPC system.  Therefore,
@@ -15232,5 +16444,4 @@
        * Generic services were the only kind of service generation supported by
        * early versions of proto2.
-       *
        * Generic services are now considered deprecated in favor of using plugins
        * that generate code specific to your particular RPC system.  Therefore,
@@ -15240,5 +16451,5 @@
        */
       public Builder setCcGenericServices(boolean value) {
-        bitField0_ |= 0x00000040;
+        bitField0_ |= 0x00000080;
         ccGenericServices_ = value;
         onChanged();
@@ -15254,5 +16465,4 @@
        * Generic services were the only kind of service generation supported by
        * early versions of proto2.
-       *
        * Generic services are now considered deprecated in favor of using plugins
        * that generate code specific to your particular RPC system.  Therefore,
@@ -15262,5 +16472,5 @@
        */
       public Builder clearCcGenericServices() {
-        bitField0_ = (bitField0_ & ~0x00000040);
+        bitField0_ = (bitField0_ & ~0x00000080);
         ccGenericServices_ = false;
         onChanged();
@@ -15268,5 +16478,4 @@
       }
 
-      // optional bool java_generic_services = 17 [default = false];
       private boolean javaGenericServices_ ;
       /**
@@ -15274,5 +16483,5 @@
        */
       public boolean hasJavaGenericServices() {
-        return ((bitField0_ & 0x00000080) == 0x00000080);
+        return ((bitField0_ & 0x00000100) == 0x00000100);
       }
       /**
@@ -15286,5 +16495,5 @@
        */
       public Builder setJavaGenericServices(boolean value) {
-        bitField0_ |= 0x00000080;
+        bitField0_ |= 0x00000100;
         javaGenericServices_ = value;
         onChanged();
@@ -15295,5 +16504,5 @@
        */
       public Builder clearJavaGenericServices() {
-        bitField0_ = (bitField0_ & ~0x00000080);
+        bitField0_ = (bitField0_ & ~0x00000100);
         javaGenericServices_ = false;
         onChanged();
@@ -15301,5 +16510,4 @@
       }
 
-      // optional bool py_generic_services = 18 [default = false];
       private boolean pyGenericServices_ ;
       /**
@@ -15307,5 +16515,5 @@
        */
       public boolean hasPyGenericServices() {
-        return ((bitField0_ & 0x00000100) == 0x00000100);
+        return ((bitField0_ & 0x00000200) == 0x00000200);
       }
       /**
@@ -15319,5 +16527,5 @@
        */
       public Builder setPyGenericServices(boolean value) {
-        bitField0_ |= 0x00000100;
+        bitField0_ |= 0x00000200;
         pyGenericServices_ = value;
         onChanged();
@@ -15328,5 +16536,5 @@
        */
       public Builder clearPyGenericServices() {
-        bitField0_ = (bitField0_ & ~0x00000100);
+        bitField0_ = (bitField0_ & ~0x00000200);
         pyGenericServices_ = false;
         onChanged();
@@ -15334,11 +16542,70 @@
       }
 
-      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+      private boolean deprecated_ ;
+      /**
+       * <code>optional bool deprecated = 23 [default = false];</code>
+       *
+       * <pre>
+       * Is this file deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for everything in the file, or it will be completely ignored; in the very
+       * least, this is a formalization for deprecating files.
+       * </pre>
+       */
+      public boolean hasDeprecated() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional bool deprecated = 23 [default = false];</code>
+       *
+       * <pre>
+       * Is this file deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for everything in the file, or it will be completely ignored; in the very
+       * least, this is a formalization for deprecating files.
+       * </pre>
+       */
+      public boolean getDeprecated() {
+        return deprecated_;
+      }
+      /**
+       * <code>optional bool deprecated = 23 [default = false];</code>
+       *
+       * <pre>
+       * Is this file deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for everything in the file, or it will be completely ignored; in the very
+       * least, this is a formalization for deprecating files.
+       * </pre>
+       */
+      public Builder setDeprecated(boolean value) {
+        bitField0_ |= 0x00000400;
+        deprecated_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool deprecated = 23 [default = false];</code>
+       *
+       * <pre>
+       * Is this file deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for everything in the file, or it will be completely ignored; in the very
+       * least, this is a formalization for deprecating files.
+       * </pre>
+       */
+      public Builder clearDeprecated() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        deprecated_ = false;
+        onChanged();
+        return this;
+      }
+
       private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
         java.util.Collections.emptyList();
       private void ensureUninterpretedOptionIsMutable() {
-        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
+        if (!((bitField0_ & 0x00000800) == 0x00000800)) {
           uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
-          bitField0_ |= 0x00000200;
+          bitField0_ |= 0x00000800;
          }
       }
@@ -15516,5 +16783,6 @@
         if (uninterpretedOptionBuilder_ == null) {
           ensureUninterpretedOptionIsMutable();
-          super.addAll(values, uninterpretedOption_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, uninterpretedOption_);
           onChanged();
         } else {
@@ -15533,5 +16801,5 @@
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000200);
+          bitField0_ = (bitField0_ & ~0x00000800);
           onChanged();
         } else {
@@ -15638,5 +16906,5 @@
               com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
-                  ((bitField0_ & 0x00000200) == 0x00000200),
+                  ((bitField0_ & 0x00000800) == 0x00000800),
                   getParentForChildren(),
                   isClean());
@@ -15658,8 +16926,8 @@
 
   public interface MessageOptionsOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.MessageOptions)
       com.google.protobuf.GeneratedMessage.
           ExtendableMessageOrBuilder<MessageOptions> {
 
-    // optional bool message_set_wire_format = 1 [default = false];
     /**
      * <code>optional bool message_set_wire_format = 1 [default = false];</code>
@@ -15670,5 +16938,4 @@
      * format.  You should not use this for any other reason:  It's less
      * efficient, has fewer features, and is more complicated.
-     *
      * The message must be defined exactly as follows:
      *   message Foo {
@@ -15678,8 +16945,6 @@
      * Note that the message cannot have any defined fields; MessageSets only
      * have extensions.
-     *
      * All extensions of your type must be singular messages; e.g. they cannot
      * be int32s, enums, or repeated messages.
-     *
      * Because this is an option, the above two restrictions are not enforced by
      * the protocol compiler.
@@ -15695,5 +16960,4 @@
      * format.  You should not use this for any other reason:  It's less
      * efficient, has fewer features, and is more complicated.
-     *
      * The message must be defined exactly as follows:
      *   message Foo {
@@ -15703,8 +16967,6 @@
      * Note that the message cannot have any defined fields; MessageSets only
      * have extensions.
-     *
      * All extensions of your type must be singular messages; e.g. they cannot
      * be int32s, enums, or repeated messages.
-     *
      * Because this is an option, the above two restrictions are not enforced by
      * the protocol compiler.
@@ -15713,5 +16975,4 @@
     boolean getMessageSetWireFormat();
 
-    // optional bool no_standard_descriptor_accessor = 2 [default = false];
     /**
      * <code>optional bool no_standard_descriptor_accessor = 2 [default = false];</code>
@@ -15735,5 +16996,27 @@
     boolean getNoStandardDescriptorAccessor();
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+    /**
+     * <code>optional bool deprecated = 3 [default = false];</code>
+     *
+     * <pre>
+     * Is this message deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the message, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating messages.
+     * </pre>
+     */
+    boolean hasDeprecated();
+    /**
+     * <code>optional bool deprecated = 3 [default = false];</code>
+     *
+     * <pre>
+     * Is this message deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the message, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating messages.
+     * </pre>
+     */
+    boolean getDeprecated();
+
     /**
      * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
@@ -15785,5 +17068,7 @@
   public static final class MessageOptions extends
       com.google.protobuf.GeneratedMessage.ExtendableMessage<
-        MessageOptions> implements MessageOptionsOrBuilder {
+        MessageOptions> implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.MessageOptions)
+      MessageOptionsOrBuilder {
     // Use MessageOptions.newBuilder() to construct.
     private MessageOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder<com.google.protobuf.DescriptorProtos.MessageOptions, ?> builder) {
@@ -15841,8 +17126,13 @@
               break;
             }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              deprecated_ = input.readBool();
+              break;
+            }
             case 7994: {
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                 uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
-                mutable_bitField0_ |= 0x00000004;
+                mutable_bitField0_ |= 0x00000008;
               }
               uninterpretedOption_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
@@ -15857,5 +17147,5 @@
             e.getMessage()).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
           uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
         }
@@ -15892,5 +17182,4 @@
 
     private int bitField0_;
-    // optional bool message_set_wire_format = 1 [default = false];
     public static final int MESSAGE_SET_WIRE_FORMAT_FIELD_NUMBER = 1;
     private boolean messageSetWireFormat_;
@@ -15903,5 +17192,4 @@
      * format.  You should not use this for any other reason:  It's less
      * efficient, has fewer features, and is more complicated.
-     *
      * The message must be defined exactly as follows:
      *   message Foo {
@@ -15911,8 +17199,6 @@
      * Note that the message cannot have any defined fields; MessageSets only
      * have extensions.
-     *
      * All extensions of your type must be singular messages; e.g. they cannot
      * be int32s, enums, or repeated messages.
-     *
      * Because this is an option, the above two restrictions are not enforced by
      * the protocol compiler.
@@ -15930,5 +17216,4 @@
      * format.  You should not use this for any other reason:  It's less
      * efficient, has fewer features, and is more complicated.
-     *
      * The message must be defined exactly as follows:
      *   message Foo {
@@ -15938,8 +17223,6 @@
      * Note that the message cannot have any defined fields; MessageSets only
      * have extensions.
-     *
      * All extensions of your type must be singular messages; e.g. they cannot
      * be int32s, enums, or repeated messages.
-     *
      * Because this is an option, the above two restrictions are not enforced by
      * the protocol compiler.
@@ -15950,5 +17233,4 @@
     }
 
-    // optional bool no_standard_descriptor_accessor = 2 [default = false];
     public static final int NO_STANDARD_DESCRIPTOR_ACCESSOR_FIELD_NUMBER = 2;
     private boolean noStandardDescriptorAccessor_;
@@ -15978,5 +17260,33 @@
     }
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+    public static final int DEPRECATED_FIELD_NUMBER = 3;
+    private boolean deprecated_;
+    /**
+     * <code>optional bool deprecated = 3 [default = false];</code>
+     *
+     * <pre>
+     * Is this message deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the message, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating messages.
+     * </pre>
+     */
+    public boolean hasDeprecated() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional bool deprecated = 3 [default = false];</code>
+     *
+     * <pre>
+     * Is this message deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the message, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating messages.
+     * </pre>
+     */
+    public boolean getDeprecated() {
+      return deprecated_;
+    }
+
     public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
@@ -16037,4 +17347,5 @@
       messageSetWireFormat_ = false;
       noStandardDescriptorAccessor_ = false;
+      deprecated_ = false;
       uninterpretedOption_ = java.util.Collections.emptyList();
     }
@@ -16042,5 +17353,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getUninterpretedOptionCount(); i++) {
@@ -16070,4 +17382,7 @@
         output.writeBool(2, noStandardDescriptorAccessor_);
       }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBool(3, deprecated_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         output.writeMessage(999, uninterpretedOption_.get(i));
@@ -16090,4 +17405,8 @@
         size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(2, noStandardDescriptorAccessor_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(3, deprecated_);
       }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
@@ -16179,5 +17498,7 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.ExtendableBuilder<
-          com.google.protobuf.DescriptorProtos.MessageOptions, Builder> implements com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder {
+          com.google.protobuf.DescriptorProtos.MessageOptions, Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.MessageOptions)
+        com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -16217,7 +17538,9 @@
         noStandardDescriptorAccessor_ = false;
         bitField0_ = (bitField0_ & ~0x00000002);
+        deprecated_ = false;
+        bitField0_ = (bitField0_ & ~0x00000004);
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
+          bitField0_ = (bitField0_ & ~0x00000008);
         } else {
           uninterpretedOptionBuilder_.clear();
@@ -16259,8 +17582,12 @@
         }
         result.noStandardDescriptorAccessor_ = noStandardDescriptorAccessor_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.deprecated_ = deprecated_;
         if (uninterpretedOptionBuilder_ == null) {
-          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
             uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
-            bitField0_ = (bitField0_ & ~0x00000004);
+            bitField0_ = (bitField0_ & ~0x00000008);
           }
           result.uninterpretedOption_ = uninterpretedOption_;
@@ -16290,9 +17617,12 @@
           setNoStandardDescriptorAccessor(other.getNoStandardDescriptorAccessor());
         }
+        if (other.hasDeprecated()) {
+          setDeprecated(other.getDeprecated());
+        }
         if (uninterpretedOptionBuilder_ == null) {
           if (!other.uninterpretedOption_.isEmpty()) {
             if (uninterpretedOption_.isEmpty()) {
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000004);
+              bitField0_ = (bitField0_ & ~0x00000008);
             } else {
               ensureUninterpretedOptionIsMutable();
@@ -16307,5 +17637,5 @@
               uninterpretedOptionBuilder_ = null;
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000004);
+              bitField0_ = (bitField0_ & ~0x00000008);
               uninterpretedOptionBuilder_ = 
                 com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
@@ -16354,5 +17684,4 @@
       private int bitField0_;
 
-      // optional bool message_set_wire_format = 1 [default = false];
       private boolean messageSetWireFormat_ ;
       /**
@@ -16364,5 +17693,4 @@
        * format.  You should not use this for any other reason:  It's less
        * efficient, has fewer features, and is more complicated.
-       *
        * The message must be defined exactly as follows:
        *   message Foo {
@@ -16372,8 +17700,6 @@
        * Note that the message cannot have any defined fields; MessageSets only
        * have extensions.
-       *
        * All extensions of your type must be singular messages; e.g. they cannot
        * be int32s, enums, or repeated messages.
-       *
        * Because this is an option, the above two restrictions are not enforced by
        * the protocol compiler.
@@ -16391,5 +17717,4 @@
        * format.  You should not use this for any other reason:  It's less
        * efficient, has fewer features, and is more complicated.
-       *
        * The message must be defined exactly as follows:
        *   message Foo {
@@ -16399,8 +17724,6 @@
        * Note that the message cannot have any defined fields; MessageSets only
        * have extensions.
-       *
        * All extensions of your type must be singular messages; e.g. they cannot
        * be int32s, enums, or repeated messages.
-       *
        * Because this is an option, the above two restrictions are not enforced by
        * the protocol compiler.
@@ -16418,5 +17741,4 @@
        * format.  You should not use this for any other reason:  It's less
        * efficient, has fewer features, and is more complicated.
-       *
        * The message must be defined exactly as follows:
        *   message Foo {
@@ -16426,8 +17748,6 @@
        * Note that the message cannot have any defined fields; MessageSets only
        * have extensions.
-       *
        * All extensions of your type must be singular messages; e.g. they cannot
        * be int32s, enums, or repeated messages.
-       *
        * Because this is an option, the above two restrictions are not enforced by
        * the protocol compiler.
@@ -16448,5 +17768,4 @@
        * format.  You should not use this for any other reason:  It's less
        * efficient, has fewer features, and is more complicated.
-       *
        * The message must be defined exactly as follows:
        *   message Foo {
@@ -16456,8 +17775,6 @@
        * Note that the message cannot have any defined fields; MessageSets only
        * have extensions.
-       *
        * All extensions of your type must be singular messages; e.g. they cannot
        * be int32s, enums, or repeated messages.
-       *
        * Because this is an option, the above two restrictions are not enforced by
        * the protocol compiler.
@@ -16471,5 +17788,4 @@
       }
 
-      // optional bool no_standard_descriptor_accessor = 2 [default = false];
       private boolean noStandardDescriptorAccessor_ ;
       /**
@@ -16528,11 +17844,70 @@
       }
 
-      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+      private boolean deprecated_ ;
+      /**
+       * <code>optional bool deprecated = 3 [default = false];</code>
+       *
+       * <pre>
+       * Is this message deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the message, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating messages.
+       * </pre>
+       */
+      public boolean hasDeprecated() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional bool deprecated = 3 [default = false];</code>
+       *
+       * <pre>
+       * Is this message deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the message, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating messages.
+       * </pre>
+       */
+      public boolean getDeprecated() {
+        return deprecated_;
+      }
+      /**
+       * <code>optional bool deprecated = 3 [default = false];</code>
+       *
+       * <pre>
+       * Is this message deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the message, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating messages.
+       * </pre>
+       */
+      public Builder setDeprecated(boolean value) {
+        bitField0_ |= 0x00000004;
+        deprecated_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool deprecated = 3 [default = false];</code>
+       *
+       * <pre>
+       * Is this message deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the message, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating messages.
+       * </pre>
+       */
+      public Builder clearDeprecated() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        deprecated_ = false;
+        onChanged();
+        return this;
+      }
+
       private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
         java.util.Collections.emptyList();
       private void ensureUninterpretedOptionIsMutable() {
-        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
           uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
-          bitField0_ |= 0x00000004;
+          bitField0_ |= 0x00000008;
          }
       }
@@ -16710,5 +18085,6 @@
         if (uninterpretedOptionBuilder_ == null) {
           ensureUninterpretedOptionIsMutable();
-          super.addAll(values, uninterpretedOption_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, uninterpretedOption_);
           onChanged();
         } else {
@@ -16727,5 +18103,5 @@
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
+          bitField0_ = (bitField0_ & ~0x00000008);
           onChanged();
         } else {
@@ -16832,5 +18208,5 @@
               com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
-                  ((bitField0_ & 0x00000004) == 0x00000004),
+                  ((bitField0_ & 0x00000008) == 0x00000008),
                   getParentForChildren(),
                   isClean());
@@ -16852,8 +18228,8 @@
 
   public interface FieldOptionsOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.FieldOptions)
       com.google.protobuf.GeneratedMessage.
           ExtendableMessageOrBuilder<FieldOptions> {
 
-    // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
     /**
      * <code>optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];</code>
@@ -16879,5 +18255,4 @@
     com.google.protobuf.DescriptorProtos.FieldOptions.CType getCtype();
 
-    // optional bool packed = 2;
     /**
      * <code>optional bool packed = 2;</code>
@@ -16903,5 +18278,4 @@
     boolean getPacked();
 
-    // optional bool lazy = 5 [default = false];
     /**
      * <code>optional bool lazy = 5 [default = false];</code>
@@ -16912,5 +18286,4 @@
      * inner message's contents will not be parsed but instead stored in encoded
      * form.  The inner message will actually be parsed when it is first accessed.
-     *
      * This is only a hint.  Implementations are free to choose whether to use
      * eager or lazy parsing regardless of the value of this option.  However,
@@ -16918,5 +18291,4 @@
      * using lazy parsing on this field is worth the additional bookkeeping
      * overhead typically needed to implement it.
-     *
      * This option does not affect the public interface of any generated code;
      * all method signatures remain the same.  Furthermore, thread-safety of the
@@ -16924,6 +18296,4 @@
      * call from multiple threads concurrently, while non-const methods continue
      * 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
@@ -16947,5 +18317,4 @@
      * inner message's contents will not be parsed but instead stored in encoded
      * form.  The inner message will actually be parsed when it is first accessed.
-     *
      * This is only a hint.  Implementations are free to choose whether to use
      * eager or lazy parsing regardless of the value of this option.  However,
@@ -16953,5 +18322,4 @@
      * using lazy parsing on this field is worth the additional bookkeeping
      * overhead typically needed to implement it.
-     *
      * This option does not affect the public interface of any generated code;
      * all method signatures remain the same.  Furthermore, thread-safety of the
@@ -16959,6 +18327,4 @@
      * call from multiple threads concurrently, while non-const methods continue
      * 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
@@ -16975,5 +18341,4 @@
     boolean getLazy();
 
-    // optional bool deprecated = 3 [default = false];
     /**
      * <code>optional bool deprecated = 3 [default = false];</code>
@@ -16999,5 +18364,4 @@
     boolean getDeprecated();
 
-    // optional string experimental_map_key = 9;
     /**
      * <code>optional string experimental_map_key = 9;</code>
@@ -17059,5 +18423,4 @@
         getExperimentalMapKeyBytes();
 
-    // optional bool weak = 10 [default = false];
     /**
      * <code>optional bool weak = 10 [default = false];</code>
@@ -17077,5 +18440,4 @@
     boolean getWeak();
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
     /**
      * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
@@ -17127,5 +18489,7 @@
   public static final class FieldOptions extends
       com.google.protobuf.GeneratedMessage.ExtendableMessage<
-        FieldOptions> implements FieldOptionsOrBuilder {
+        FieldOptions> implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.FieldOptions)
+      FieldOptionsOrBuilder {
     // Use FieldOptions.newBuilder() to construct.
     private FieldOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder<com.google.protobuf.DescriptorProtos.FieldOptions, ?> builder) {
@@ -17200,6 +18564,7 @@
             }
             case 74: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000010;
-              experimentalMapKey_ = input.readBytes();
+              experimentalMapKey_ = bs;
               break;
             }
@@ -17359,5 +18724,4 @@
 
     private int bitField0_;
-    // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
     public static final int CTYPE_FIELD_NUMBER = 1;
     private com.google.protobuf.DescriptorProtos.FieldOptions.CType ctype_;
@@ -17389,5 +18753,4 @@
     }
 
-    // optional bool packed = 2;
     public static final int PACKED_FIELD_NUMBER = 2;
     private boolean packed_;
@@ -17419,5 +18782,4 @@
     }
 
-    // optional bool lazy = 5 [default = false];
     public static final int LAZY_FIELD_NUMBER = 5;
     private boolean lazy_;
@@ -17430,5 +18792,4 @@
      * inner message's contents will not be parsed but instead stored in encoded
      * form.  The inner message will actually be parsed when it is first accessed.
-     *
      * This is only a hint.  Implementations are free to choose whether to use
      * eager or lazy parsing regardless of the value of this option.  However,
@@ -17436,5 +18797,4 @@
      * using lazy parsing on this field is worth the additional bookkeeping
      * overhead typically needed to implement it.
-     *
      * This option does not affect the public interface of any generated code;
      * all method signatures remain the same.  Furthermore, thread-safety of the
@@ -17442,6 +18802,4 @@
      * call from multiple threads concurrently, while non-const methods continue
      * 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
@@ -17467,5 +18825,4 @@
      * inner message's contents will not be parsed but instead stored in encoded
      * form.  The inner message will actually be parsed when it is first accessed.
-     *
      * This is only a hint.  Implementations are free to choose whether to use
      * eager or lazy parsing regardless of the value of this option.  However,
@@ -17473,5 +18830,4 @@
      * using lazy parsing on this field is worth the additional bookkeeping
      * overhead typically needed to implement it.
-     *
      * This option does not affect the public interface of any generated code;
      * all method signatures remain the same.  Furthermore, thread-safety of the
@@ -17479,6 +18835,4 @@
      * call from multiple threads concurrently, while non-const methods continue
      * 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
@@ -17497,5 +18851,4 @@
     }
 
-    // optional bool deprecated = 3 [default = false];
     public static final int DEPRECATED_FIELD_NUMBER = 3;
     private boolean deprecated_;
@@ -17527,5 +18880,4 @@
     }
 
-    // optional string experimental_map_key = 9;
     public static final int EXPERIMENTAL_MAP_KEY_FIELD_NUMBER = 9;
     private java.lang.Object experimentalMapKey_;
@@ -17615,5 +18967,4 @@
     }
 
-    // optional bool weak = 10 [default = false];
     public static final int WEAK_FIELD_NUMBER = 10;
     private boolean weak_;
@@ -17639,5 +18990,4 @@
     }
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
     public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
@@ -17707,5 +19057,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getUninterpretedOptionCount(); i++) {
@@ -17872,5 +19223,7 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.ExtendableBuilder<
-          com.google.protobuf.DescriptorProtos.FieldOptions, Builder> implements com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder {
+          com.google.protobuf.DescriptorProtos.FieldOptions, Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.FieldOptions)
+        com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -18085,5 +19438,4 @@
       private int bitField0_;
 
-      // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
       private com.google.protobuf.DescriptorProtos.FieldOptions.CType ctype_ = com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING;
       /**
@@ -18149,5 +19501,4 @@
       }
 
-      // optional bool packed = 2;
       private boolean packed_ ;
       /**
@@ -18210,5 +19561,4 @@
       }
 
-      // optional bool lazy = 5 [default = false];
       private boolean lazy_ ;
       /**
@@ -18220,5 +19570,4 @@
        * inner message's contents will not be parsed but instead stored in encoded
        * form.  The inner message will actually be parsed when it is first accessed.
-       *
        * This is only a hint.  Implementations are free to choose whether to use
        * eager or lazy parsing regardless of the value of this option.  However,
@@ -18226,5 +19575,4 @@
        * using lazy parsing on this field is worth the additional bookkeeping
        * overhead typically needed to implement it.
-       *
        * This option does not affect the public interface of any generated code;
        * all method signatures remain the same.  Furthermore, thread-safety of the
@@ -18232,6 +19580,4 @@
        * call from multiple threads concurrently, while non-const methods continue
        * 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
@@ -18257,5 +19603,4 @@
        * inner message's contents will not be parsed but instead stored in encoded
        * form.  The inner message will actually be parsed when it is first accessed.
-       *
        * This is only a hint.  Implementations are free to choose whether to use
        * eager or lazy parsing regardless of the value of this option.  However,
@@ -18263,5 +19608,4 @@
        * using lazy parsing on this field is worth the additional bookkeeping
        * overhead typically needed to implement it.
-       *
        * This option does not affect the public interface of any generated code;
        * all method signatures remain the same.  Furthermore, thread-safety of the
@@ -18269,6 +19613,4 @@
        * call from multiple threads concurrently, while non-const methods continue
        * 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
@@ -18294,5 +19636,4 @@
        * inner message's contents will not be parsed but instead stored in encoded
        * form.  The inner message will actually be parsed when it is first accessed.
-       *
        * This is only a hint.  Implementations are free to choose whether to use
        * eager or lazy parsing regardless of the value of this option.  However,
@@ -18300,5 +19641,4 @@
        * using lazy parsing on this field is worth the additional bookkeeping
        * overhead typically needed to implement it.
-       *
        * This option does not affect the public interface of any generated code;
        * all method signatures remain the same.  Furthermore, thread-safety of the
@@ -18306,6 +19646,4 @@
        * call from multiple threads concurrently, while non-const methods continue
        * 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
@@ -18334,5 +19672,4 @@
        * inner message's contents will not be parsed but instead stored in encoded
        * form.  The inner message will actually be parsed when it is first accessed.
-       *
        * This is only a hint.  Implementations are free to choose whether to use
        * eager or lazy parsing regardless of the value of this option.  However,
@@ -18340,5 +19677,4 @@
        * using lazy parsing on this field is worth the additional bookkeeping
        * overhead typically needed to implement it.
-       *
        * This option does not affect the public interface of any generated code;
        * all method signatures remain the same.  Furthermore, thread-safety of the
@@ -18346,6 +19682,4 @@
        * call from multiple threads concurrently, while non-const methods continue
        * 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
@@ -18367,5 +19701,4 @@
       }
 
-      // optional bool deprecated = 3 [default = false];
       private boolean deprecated_ ;
       /**
@@ -18428,5 +19761,4 @@
       }
 
-      // optional string experimental_map_key = 9;
       private java.lang.Object experimentalMapKey_ = "";
       /**
@@ -18472,7 +19804,10 @@
         java.lang.Object ref = experimentalMapKey_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          experimentalMapKey_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            experimentalMapKey_ = s;
+          }
           return s;
         } else {
@@ -18592,5 +19927,4 @@
       }
 
-      // optional bool weak = 10 [default = false];
       private boolean weak_ ;
       /**
@@ -18641,5 +19975,4 @@
       }
 
-      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
       private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
         java.util.Collections.emptyList();
@@ -18823,5 +20156,6 @@
         if (uninterpretedOptionBuilder_ == null) {
           ensureUninterpretedOptionIsMutable();
-          super.addAll(values, uninterpretedOption_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, uninterpretedOption_);
           onChanged();
         } else {
@@ -18965,13 +20299,13 @@
 
   public interface EnumOptionsOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.EnumOptions)
       com.google.protobuf.GeneratedMessage.
           ExtendableMessageOrBuilder<EnumOptions> {
 
-    // optional bool allow_alias = 2 [default = true];
-    /**
-     * <code>optional bool allow_alias = 2 [default = true];</code>
+    /**
+     * <code>optional bool allow_alias = 2;</code>
      *
      * <pre>
-     * Set this option to false to disallow mapping different tag names to a same
+     * Set this option to true to allow mapping different tag names to the same
      * value.
      * </pre>
@@ -18979,8 +20313,8 @@
     boolean hasAllowAlias();
     /**
-     * <code>optional bool allow_alias = 2 [default = true];</code>
+     * <code>optional bool allow_alias = 2;</code>
      *
      * <pre>
-     * Set this option to false to disallow mapping different tag names to a same
+     * Set this option to true to allow mapping different tag names to the same
      * value.
      * </pre>
@@ -18988,5 +20322,27 @@
     boolean getAllowAlias();
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+    /**
+     * <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>
@@ -19038,5 +20394,7 @@
   public static final class EnumOptions extends
       com.google.protobuf.GeneratedMessage.ExtendableMessage<
-        EnumOptions> implements EnumOptionsOrBuilder {
+        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) {
@@ -19089,8 +20447,13 @@
               break;
             }
+            case 24: {
+              bitField0_ |= 0x00000002;
+              deprecated_ = input.readBool();
+              break;
+            }
             case 7994: {
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                 uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
-                mutable_bitField0_ |= 0x00000002;
+                mutable_bitField0_ |= 0x00000004;
               }
               uninterpretedOption_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
@@ -19105,5 +20468,5 @@
             e.getMessage()).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
           uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
         }
@@ -19140,12 +20503,11 @@
 
     private int bitField0_;
-    // optional bool allow_alias = 2 [default = true];
     public static final int ALLOW_ALIAS_FIELD_NUMBER = 2;
     private boolean allowAlias_;
     /**
-     * <code>optional bool allow_alias = 2 [default = true];</code>
+     * <code>optional bool allow_alias = 2;</code>
      *
      * <pre>
-     * Set this option to false to disallow mapping different tag names to a same
+     * Set this option to true to allow mapping different tag names to the same
      * value.
      * </pre>
@@ -19155,8 +20517,8 @@
     }
     /**
-     * <code>optional bool allow_alias = 2 [default = true];</code>
+     * <code>optional bool allow_alias = 2;</code>
      *
      * <pre>
-     * Set this option to false to disallow mapping different tag names to a same
+     * Set this option to true to allow mapping different tag names to the same
      * value.
      * </pre>
@@ -19166,5 +20528,33 @@
     }
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+    public static final int DEPRECATED_FIELD_NUMBER = 3;
+    private boolean deprecated_;
+    /**
+     * <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>
+     */
+    public boolean hasDeprecated() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <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>
+     */
+    public boolean getDeprecated() {
+      return deprecated_;
+    }
+
     public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
@@ -19223,5 +20613,6 @@
 
     private void initFields() {
-      allowAlias_ = true;
+      allowAlias_ = false;
+      deprecated_ = false;
       uninterpretedOption_ = java.util.Collections.emptyList();
     }
@@ -19229,5 +20620,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getUninterpretedOptionCount(); i++) {
@@ -19254,4 +20646,7 @@
         output.writeBool(2, allowAlias_);
       }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBool(3, deprecated_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         output.writeMessage(999, uninterpretedOption_.get(i));
@@ -19270,4 +20665,8 @@
         size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(2, allowAlias_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(3, deprecated_);
       }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
@@ -19359,5 +20758,7 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.ExtendableBuilder<
-          com.google.protobuf.DescriptorProtos.EnumOptions, Builder> implements com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder {
+          com.google.protobuf.DescriptorProtos.EnumOptions, Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.EnumOptions)
+        com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -19393,9 +20794,11 @@
       public Builder clear() {
         super.clear();
-        allowAlias_ = true;
+        allowAlias_ = false;
         bitField0_ = (bitField0_ & ~0x00000001);
+        deprecated_ = false;
+        bitField0_ = (bitField0_ & ~0x00000002);
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
+          bitField0_ = (bitField0_ & ~0x00000004);
         } else {
           uninterpretedOptionBuilder_.clear();
@@ -19433,8 +20836,12 @@
         }
         result.allowAlias_ = allowAlias_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.deprecated_ = deprecated_;
         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_;
@@ -19461,9 +20868,12 @@
           setAllowAlias(other.getAllowAlias());
         }
+        if (other.hasDeprecated()) {
+          setDeprecated(other.getDeprecated());
+        }
         if (uninterpretedOptionBuilder_ == null) {
           if (!other.uninterpretedOption_.isEmpty()) {
             if (uninterpretedOption_.isEmpty()) {
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000002);
+              bitField0_ = (bitField0_ & ~0x00000004);
             } else {
               ensureUninterpretedOptionIsMutable();
@@ -19478,5 +20888,5 @@
               uninterpretedOptionBuilder_ = null;
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000002);
+              bitField0_ = (bitField0_ & ~0x00000004);
               uninterpretedOptionBuilder_ = 
                 com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
@@ -19525,11 +20935,10 @@
       private int bitField0_;
 
-      // optional bool allow_alias = 2 [default = true];
-      private boolean allowAlias_ = true;
-      /**
-       * <code>optional bool allow_alias = 2 [default = true];</code>
-       *
-       * <pre>
-       * Set this option to false to disallow mapping different tag names to a same
+      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>
@@ -19539,8 +20948,8 @@
       }
       /**
-       * <code>optional bool allow_alias = 2 [default = true];</code>
-       *
-       * <pre>
-       * Set this option to false to disallow mapping different tag names to a same
+       * <code>optional bool allow_alias = 2;</code>
+       *
+       * <pre>
+       * Set this option to true to allow mapping different tag names to the same
        * value.
        * </pre>
@@ -19550,8 +20959,8 @@
       }
       /**
-       * <code>optional bool allow_alias = 2 [default = true];</code>
-       *
-       * <pre>
-       * Set this option to false to disallow mapping different tag names to a same
+       * <code>optional bool allow_alias = 2;</code>
+       *
+       * <pre>
+       * Set this option to true to allow mapping different tag names to the same
        * value.
        * </pre>
@@ -19564,8 +20973,8 @@
       }
       /**
-       * <code>optional bool allow_alias = 2 [default = true];</code>
-       *
-       * <pre>
-       * Set this option to false to disallow mapping different tag names to a same
+       * <code>optional bool allow_alias = 2;</code>
+       *
+       * <pre>
+       * Set this option to true to allow mapping different tag names to the same
        * value.
        * </pre>
@@ -19573,16 +20982,75 @@
       public Builder clearAllowAlias() {
         bitField0_ = (bitField0_ & ~0x00000001);
-        allowAlias_ = true;
+        allowAlias_ = false;
         onChanged();
         return this;
       }
 
-      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+      private boolean deprecated_ ;
+      /**
+       * <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>
+       */
+      public boolean hasDeprecated() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <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>
+       */
+      public boolean getDeprecated() {
+        return deprecated_;
+      }
+      /**
+       * <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>
+       */
+      public Builder setDeprecated(boolean value) {
+        bitField0_ |= 0x00000002;
+        deprecated_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <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>
+       */
+      public Builder clearDeprecated() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        deprecated_ = false;
+        onChanged();
+        return this;
+      }
+
       private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
         java.util.Collections.emptyList();
       private void ensureUninterpretedOptionIsMutable() {
-        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
           uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
-          bitField0_ |= 0x00000002;
+          bitField0_ |= 0x00000004;
          }
       }
@@ -19760,5 +21228,6 @@
         if (uninterpretedOptionBuilder_ == null) {
           ensureUninterpretedOptionIsMutable();
-          super.addAll(values, uninterpretedOption_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, uninterpretedOption_);
           onChanged();
         } else {
@@ -19777,5 +21246,5 @@
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
+          bitField0_ = (bitField0_ & ~0x00000004);
           onChanged();
         } else {
@@ -19882,5 +21351,5 @@
               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());
@@ -19902,8 +21371,31 @@
 
   public interface EnumValueOptionsOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.EnumValueOptions)
       com.google.protobuf.GeneratedMessage.
           ExtendableMessageOrBuilder<EnumValueOptions> {
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+    /**
+     * <code>optional bool deprecated = 1 [default = false];</code>
+     *
+     * <pre>
+     * Is this enum value deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the enum value, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating enum values.
+     * </pre>
+     */
+    boolean hasDeprecated();
+    /**
+     * <code>optional bool deprecated = 1 [default = false];</code>
+     *
+     * <pre>
+     * Is this enum value deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the enum value, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating enum values.
+     * </pre>
+     */
+    boolean getDeprecated();
+
     /**
      * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
@@ -19955,5 +21447,7 @@
   public static final class EnumValueOptions extends
       com.google.protobuf.GeneratedMessage.ExtendableMessage<
-        EnumValueOptions> implements EnumValueOptionsOrBuilder {
+        EnumValueOptions> implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.EnumValueOptions)
+      EnumValueOptionsOrBuilder {
     // Use EnumValueOptions.newBuilder() to construct.
     private EnumValueOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder<com.google.protobuf.DescriptorProtos.EnumValueOptions, ?> builder) {
@@ -20001,8 +21495,13 @@
               break;
             }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              deprecated_ = input.readBool();
+              break;
+            }
             case 7994: {
-              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                 uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
-                mutable_bitField0_ |= 0x00000001;
+                mutable_bitField0_ |= 0x00000002;
               }
               uninterpretedOption_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
@@ -20017,5 +21516,5 @@
             e.getMessage()).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
           uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
         }
@@ -20051,5 +21550,34 @@
     }
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+    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?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the enum value, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating enum values.
+     * </pre>
+     */
+    public boolean hasDeprecated() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional bool deprecated = 1 [default = false];</code>
+     *
+     * <pre>
+     * Is this enum value deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the enum value, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating enum values.
+     * </pre>
+     */
+    public boolean getDeprecated() {
+      return deprecated_;
+    }
+
     public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
@@ -20108,4 +21636,5 @@
 
     private void initFields() {
+      deprecated_ = false;
       uninterpretedOption_ = java.util.Collections.emptyList();
     }
@@ -20113,5 +21642,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getUninterpretedOptionCount(); i++) {
@@ -20135,4 +21665,7 @@
         .ExtendableMessage<com.google.protobuf.DescriptorProtos.EnumValueOptions>.ExtensionWriter extensionWriter =
           newExtensionWriter();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBool(1, deprecated_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         output.writeMessage(999, uninterpretedOption_.get(i));
@@ -20148,4 +21681,8 @@
 
       size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(1, deprecated_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
@@ -20236,5 +21773,7 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.ExtendableBuilder<
-          com.google.protobuf.DescriptorProtos.EnumValueOptions, Builder> implements com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder {
+          com.google.protobuf.DescriptorProtos.EnumValueOptions, Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.EnumValueOptions)
+        com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -20270,7 +21809,9 @@
       public Builder clear() {
         super.clear();
+        deprecated_ = false;
+        bitField0_ = (bitField0_ & ~0x00000001);
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+          bitField0_ = (bitField0_ & ~0x00000002);
         } else {
           uninterpretedOptionBuilder_.clear();
@@ -20303,8 +21844,13 @@
         com.google.protobuf.DescriptorProtos.EnumValueOptions result = new com.google.protobuf.DescriptorProtos.EnumValueOptions(this);
         int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.deprecated_ = deprecated_;
         if (uninterpretedOptionBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
             uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
-            bitField0_ = (bitField0_ & ~0x00000001);
+            bitField0_ = (bitField0_ & ~0x00000002);
           }
           result.uninterpretedOption_ = uninterpretedOption_;
@@ -20312,4 +21858,5 @@
           result.uninterpretedOption_ = uninterpretedOptionBuilder_.build();
         }
+        result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
@@ -20327,9 +21874,12 @@
       public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumValueOptions other) {
         if (other == com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance()) return this;
+        if (other.hasDeprecated()) {
+          setDeprecated(other.getDeprecated());
+        }
         if (uninterpretedOptionBuilder_ == null) {
           if (!other.uninterpretedOption_.isEmpty()) {
             if (uninterpretedOption_.isEmpty()) {
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000001);
+              bitField0_ = (bitField0_ & ~0x00000002);
             } else {
               ensureUninterpretedOptionIsMutable();
@@ -20344,5 +21894,5 @@
               uninterpretedOptionBuilder_ = null;
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000001);
+              bitField0_ = (bitField0_ & ~0x00000002);
               uninterpretedOptionBuilder_ = 
                 com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
@@ -20391,11 +21941,70 @@
       private int bitField0_;
 
-      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+      private boolean deprecated_ ;
+      /**
+       * <code>optional bool deprecated = 1 [default = false];</code>
+       *
+       * <pre>
+       * Is this enum value deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the enum value, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating enum values.
+       * </pre>
+       */
+      public boolean hasDeprecated() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional bool deprecated = 1 [default = false];</code>
+       *
+       * <pre>
+       * Is this enum value deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the enum value, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating enum values.
+       * </pre>
+       */
+      public boolean getDeprecated() {
+        return deprecated_;
+      }
+      /**
+       * <code>optional bool deprecated = 1 [default = false];</code>
+       *
+       * <pre>
+       * Is this enum value deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the enum value, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating enum values.
+       * </pre>
+       */
+      public Builder setDeprecated(boolean value) {
+        bitField0_ |= 0x00000001;
+        deprecated_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool deprecated = 1 [default = false];</code>
+       *
+       * <pre>
+       * Is this enum value deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the enum value, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating enum values.
+       * </pre>
+       */
+      public Builder clearDeprecated() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        deprecated_ = false;
+        onChanged();
+        return this;
+      }
+
       private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
         java.util.Collections.emptyList();
       private void ensureUninterpretedOptionIsMutable() {
-        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
           uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
-          bitField0_ |= 0x00000001;
+          bitField0_ |= 0x00000002;
          }
       }
@@ -20573,5 +22182,6 @@
         if (uninterpretedOptionBuilder_ == null) {
           ensureUninterpretedOptionIsMutable();
-          super.addAll(values, uninterpretedOption_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, uninterpretedOption_);
           onChanged();
         } else {
@@ -20590,5 +22200,5 @@
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+          bitField0_ = (bitField0_ & ~0x00000002);
           onChanged();
         } else {
@@ -20695,5 +22305,5 @@
               com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
-                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  ((bitField0_ & 0x00000002) == 0x00000002),
                   getParentForChildren(),
                   isClean());
@@ -20715,8 +22325,31 @@
 
   public interface ServiceOptionsOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.ServiceOptions)
       com.google.protobuf.GeneratedMessage.
           ExtendableMessageOrBuilder<ServiceOptions> {
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+    /**
+     * <code>optional bool deprecated = 33 [default = false];</code>
+     *
+     * <pre>
+     * Is this service deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the service, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating services.
+     * </pre>
+     */
+    boolean hasDeprecated();
+    /**
+     * <code>optional bool deprecated = 33 [default = false];</code>
+     *
+     * <pre>
+     * Is this service deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the service, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating services.
+     * </pre>
+     */
+    boolean getDeprecated();
+
     /**
      * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
@@ -20768,5 +22401,7 @@
   public static final class ServiceOptions extends
       com.google.protobuf.GeneratedMessage.ExtendableMessage<
-        ServiceOptions> implements ServiceOptionsOrBuilder {
+        ServiceOptions> implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.ServiceOptions)
+      ServiceOptionsOrBuilder {
     // Use ServiceOptions.newBuilder() to construct.
     private ServiceOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder<com.google.protobuf.DescriptorProtos.ServiceOptions, ?> builder) {
@@ -20814,8 +22449,13 @@
               break;
             }
+            case 264: {
+              bitField0_ |= 0x00000001;
+              deprecated_ = input.readBool();
+              break;
+            }
             case 7994: {
-              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                 uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
-                mutable_bitField0_ |= 0x00000001;
+                mutable_bitField0_ |= 0x00000002;
               }
               uninterpretedOption_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
@@ -20830,5 +22470,5 @@
             e.getMessage()).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
           uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
         }
@@ -20864,5 +22504,34 @@
     }
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+    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?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the service, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating services.
+     * </pre>
+     */
+    public boolean hasDeprecated() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional bool deprecated = 33 [default = false];</code>
+     *
+     * <pre>
+     * Is this service deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the service, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating services.
+     * </pre>
+     */
+    public boolean getDeprecated() {
+      return deprecated_;
+    }
+
     public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
@@ -20921,4 +22590,5 @@
 
     private void initFields() {
+      deprecated_ = false;
       uninterpretedOption_ = java.util.Collections.emptyList();
     }
@@ -20926,5 +22596,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getUninterpretedOptionCount(); i++) {
@@ -20948,4 +22619,7 @@
         .ExtendableMessage<com.google.protobuf.DescriptorProtos.ServiceOptions>.ExtensionWriter extensionWriter =
           newExtensionWriter();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBool(33, deprecated_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         output.writeMessage(999, uninterpretedOption_.get(i));
@@ -20961,4 +22635,8 @@
 
       size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(33, deprecated_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
@@ -21049,5 +22727,7 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.ExtendableBuilder<
-          com.google.protobuf.DescriptorProtos.ServiceOptions, Builder> implements com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder {
+          com.google.protobuf.DescriptorProtos.ServiceOptions, Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.ServiceOptions)
+        com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -21083,7 +22763,9 @@
       public Builder clear() {
         super.clear();
+        deprecated_ = false;
+        bitField0_ = (bitField0_ & ~0x00000001);
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+          bitField0_ = (bitField0_ & ~0x00000002);
         } else {
           uninterpretedOptionBuilder_.clear();
@@ -21116,8 +22798,13 @@
         com.google.protobuf.DescriptorProtos.ServiceOptions result = new com.google.protobuf.DescriptorProtos.ServiceOptions(this);
         int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.deprecated_ = deprecated_;
         if (uninterpretedOptionBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
             uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
-            bitField0_ = (bitField0_ & ~0x00000001);
+            bitField0_ = (bitField0_ & ~0x00000002);
           }
           result.uninterpretedOption_ = uninterpretedOption_;
@@ -21125,4 +22812,5 @@
           result.uninterpretedOption_ = uninterpretedOptionBuilder_.build();
         }
+        result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
@@ -21140,9 +22828,12 @@
       public Builder mergeFrom(com.google.protobuf.DescriptorProtos.ServiceOptions other) {
         if (other == com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance()) return this;
+        if (other.hasDeprecated()) {
+          setDeprecated(other.getDeprecated());
+        }
         if (uninterpretedOptionBuilder_ == null) {
           if (!other.uninterpretedOption_.isEmpty()) {
             if (uninterpretedOption_.isEmpty()) {
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000001);
+              bitField0_ = (bitField0_ & ~0x00000002);
             } else {
               ensureUninterpretedOptionIsMutable();
@@ -21157,5 +22848,5 @@
               uninterpretedOptionBuilder_ = null;
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000001);
+              bitField0_ = (bitField0_ & ~0x00000002);
               uninterpretedOptionBuilder_ = 
                 com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
@@ -21204,11 +22895,70 @@
       private int bitField0_;
 
-      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+      private boolean deprecated_ ;
+      /**
+       * <code>optional bool deprecated = 33 [default = false];</code>
+       *
+       * <pre>
+       * Is this service deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the service, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating services.
+       * </pre>
+       */
+      public boolean hasDeprecated() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional bool deprecated = 33 [default = false];</code>
+       *
+       * <pre>
+       * Is this service deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the service, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating services.
+       * </pre>
+       */
+      public boolean getDeprecated() {
+        return deprecated_;
+      }
+      /**
+       * <code>optional bool deprecated = 33 [default = false];</code>
+       *
+       * <pre>
+       * Is this service deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the service, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating services.
+       * </pre>
+       */
+      public Builder setDeprecated(boolean value) {
+        bitField0_ |= 0x00000001;
+        deprecated_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool deprecated = 33 [default = false];</code>
+       *
+       * <pre>
+       * Is this service deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the service, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating services.
+       * </pre>
+       */
+      public Builder clearDeprecated() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        deprecated_ = false;
+        onChanged();
+        return this;
+      }
+
       private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
         java.util.Collections.emptyList();
       private void ensureUninterpretedOptionIsMutable() {
-        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
           uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
-          bitField0_ |= 0x00000001;
+          bitField0_ |= 0x00000002;
          }
       }
@@ -21386,5 +23136,6 @@
         if (uninterpretedOptionBuilder_ == null) {
           ensureUninterpretedOptionIsMutable();
-          super.addAll(values, uninterpretedOption_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, uninterpretedOption_);
           onChanged();
         } else {
@@ -21403,5 +23154,5 @@
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+          bitField0_ = (bitField0_ & ~0x00000002);
           onChanged();
         } else {
@@ -21508,5 +23259,5 @@
               com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
-                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  ((bitField0_ & 0x00000002) == 0x00000002),
                   getParentForChildren(),
                   isClean());
@@ -21528,8 +23279,31 @@
 
   public interface MethodOptionsOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.MethodOptions)
       com.google.protobuf.GeneratedMessage.
           ExtendableMessageOrBuilder<MethodOptions> {
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+    /**
+     * <code>optional bool deprecated = 33 [default = false];</code>
+     *
+     * <pre>
+     * Is this method deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the method, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating methods.
+     * </pre>
+     */
+    boolean hasDeprecated();
+    /**
+     * <code>optional bool deprecated = 33 [default = false];</code>
+     *
+     * <pre>
+     * Is this method deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the method, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating methods.
+     * </pre>
+     */
+    boolean getDeprecated();
+
     /**
      * <code>repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;</code>
@@ -21581,5 +23355,7 @@
   public static final class MethodOptions extends
       com.google.protobuf.GeneratedMessage.ExtendableMessage<
-        MethodOptions> implements MethodOptionsOrBuilder {
+        MethodOptions> implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.MethodOptions)
+      MethodOptionsOrBuilder {
     // Use MethodOptions.newBuilder() to construct.
     private MethodOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder<com.google.protobuf.DescriptorProtos.MethodOptions, ?> builder) {
@@ -21627,8 +23403,13 @@
               break;
             }
+            case 264: {
+              bitField0_ |= 0x00000001;
+              deprecated_ = input.readBool();
+              break;
+            }
             case 7994: {
-              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                 uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
-                mutable_bitField0_ |= 0x00000001;
+                mutable_bitField0_ |= 0x00000002;
               }
               uninterpretedOption_.add(input.readMessage(com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER, extensionRegistry));
@@ -21643,5 +23424,5 @@
             e.getMessage()).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
           uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
         }
@@ -21677,5 +23458,34 @@
     }
 
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+    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 method deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the method, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating methods.
+     * </pre>
+     */
+    public boolean hasDeprecated() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional bool deprecated = 33 [default = false];</code>
+     *
+     * <pre>
+     * Is this method deprecated?
+     * Depending on the target platform, this can emit Deprecated annotations
+     * for the method, or it will be completely ignored; in the very least,
+     * this is a formalization for deprecating methods.
+     * </pre>
+     */
+    public boolean getDeprecated() {
+      return deprecated_;
+    }
+
     public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_;
@@ -21734,4 +23544,5 @@
 
     private void initFields() {
+      deprecated_ = false;
       uninterpretedOption_ = java.util.Collections.emptyList();
     }
@@ -21739,5 +23550,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getUninterpretedOptionCount(); i++) {
@@ -21761,4 +23573,7 @@
         .ExtendableMessage<com.google.protobuf.DescriptorProtos.MethodOptions>.ExtensionWriter extensionWriter =
           newExtensionWriter();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBool(33, deprecated_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         output.writeMessage(999, uninterpretedOption_.get(i));
@@ -21774,4 +23589,8 @@
 
       size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(33, deprecated_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
@@ -21862,5 +23681,7 @@
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.ExtendableBuilder<
-          com.google.protobuf.DescriptorProtos.MethodOptions, Builder> implements com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder {
+          com.google.protobuf.DescriptorProtos.MethodOptions, Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.MethodOptions)
+        com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -21896,7 +23717,9 @@
       public Builder clear() {
         super.clear();
+        deprecated_ = false;
+        bitField0_ = (bitField0_ & ~0x00000001);
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+          bitField0_ = (bitField0_ & ~0x00000002);
         } else {
           uninterpretedOptionBuilder_.clear();
@@ -21929,8 +23752,13 @@
         com.google.protobuf.DescriptorProtos.MethodOptions result = new com.google.protobuf.DescriptorProtos.MethodOptions(this);
         int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.deprecated_ = deprecated_;
         if (uninterpretedOptionBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
             uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
-            bitField0_ = (bitField0_ & ~0x00000001);
+            bitField0_ = (bitField0_ & ~0x00000002);
           }
           result.uninterpretedOption_ = uninterpretedOption_;
@@ -21938,4 +23766,5 @@
           result.uninterpretedOption_ = uninterpretedOptionBuilder_.build();
         }
+        result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
@@ -21953,9 +23782,12 @@
       public Builder mergeFrom(com.google.protobuf.DescriptorProtos.MethodOptions other) {
         if (other == com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance()) return this;
+        if (other.hasDeprecated()) {
+          setDeprecated(other.getDeprecated());
+        }
         if (uninterpretedOptionBuilder_ == null) {
           if (!other.uninterpretedOption_.isEmpty()) {
             if (uninterpretedOption_.isEmpty()) {
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000001);
+              bitField0_ = (bitField0_ & ~0x00000002);
             } else {
               ensureUninterpretedOptionIsMutable();
@@ -21970,5 +23802,5 @@
               uninterpretedOptionBuilder_ = null;
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000001);
+              bitField0_ = (bitField0_ & ~0x00000002);
               uninterpretedOptionBuilder_ = 
                 com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
@@ -22017,11 +23849,70 @@
       private int bitField0_;
 
-      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+      private boolean deprecated_ ;
+      /**
+       * <code>optional bool deprecated = 33 [default = false];</code>
+       *
+       * <pre>
+       * Is this method deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the method, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating methods.
+       * </pre>
+       */
+      public boolean hasDeprecated() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional bool deprecated = 33 [default = false];</code>
+       *
+       * <pre>
+       * Is this method deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the method, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating methods.
+       * </pre>
+       */
+      public boolean getDeprecated() {
+        return deprecated_;
+      }
+      /**
+       * <code>optional bool deprecated = 33 [default = false];</code>
+       *
+       * <pre>
+       * Is this method deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the method, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating methods.
+       * </pre>
+       */
+      public Builder setDeprecated(boolean value) {
+        bitField0_ |= 0x00000001;
+        deprecated_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool deprecated = 33 [default = false];</code>
+       *
+       * <pre>
+       * Is this method deprecated?
+       * Depending on the target platform, this can emit Deprecated annotations
+       * for the method, or it will be completely ignored; in the very least,
+       * this is a formalization for deprecating methods.
+       * </pre>
+       */
+      public Builder clearDeprecated() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        deprecated_ = false;
+        onChanged();
+        return this;
+      }
+
       private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
         java.util.Collections.emptyList();
       private void ensureUninterpretedOptionIsMutable() {
-        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
           uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
-          bitField0_ |= 0x00000001;
+          bitField0_ |= 0x00000002;
          }
       }
@@ -22199,5 +24090,6 @@
         if (uninterpretedOptionBuilder_ == null) {
           ensureUninterpretedOptionIsMutable();
-          super.addAll(values, uninterpretedOption_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, uninterpretedOption_);
           onChanged();
         } else {
@@ -22216,5 +24108,5 @@
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+          bitField0_ = (bitField0_ & ~0x00000002);
           onChanged();
         } else {
@@ -22321,5 +24213,5 @@
               com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
-                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  ((bitField0_ & 0x00000002) == 0x00000002),
                   getParentForChildren(),
                   isClean());
@@ -22340,8 +24232,8 @@
   }
 
-  public interface UninterpretedOptionOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
+  public interface UninterpretedOptionOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.UninterpretedOption)
+      com.google.protobuf.MessageOrBuilder {
+
     /**
      * <code>repeated .google.protobuf.UninterpretedOption.NamePart name = 2;</code>
@@ -22368,5 +24260,4 @@
         int index);
 
-    // optional string identifier_value = 3;
     /**
      * <code>optional string identifier_value = 3;</code>
@@ -22398,5 +24289,4 @@
         getIdentifierValueBytes();
 
-    // optional uint64 positive_int_value = 4;
     /**
      * <code>optional uint64 positive_int_value = 4;</code>
@@ -22408,5 +24298,4 @@
     long getPositiveIntValue();
 
-    // optional int64 negative_int_value = 5;
     /**
      * <code>optional int64 negative_int_value = 5;</code>
@@ -22418,5 +24307,4 @@
     long getNegativeIntValue();
 
-    // optional double double_value = 6;
     /**
      * <code>optional double double_value = 6;</code>
@@ -22428,5 +24316,4 @@
     double getDoubleValue();
 
-    // optional bytes string_value = 7;
     /**
      * <code>optional bytes string_value = 7;</code>
@@ -22438,5 +24325,4 @@
     com.google.protobuf.ByteString getStringValue();
 
-    // optional string aggregate_value = 8;
     /**
      * <code>optional string aggregate_value = 8;</code>
@@ -22466,6 +24352,7 @@
    */
   public static final class UninterpretedOption extends
-      com.google.protobuf.GeneratedMessage
-      implements UninterpretedOptionOrBuilder {
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.UninterpretedOption)
+      UninterpretedOptionOrBuilder {
     // Use UninterpretedOption.newBuilder() to construct.
     private UninterpretedOption(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
@@ -22522,6 +24409,7 @@
             }
             case 26: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000001;
-              identifierValue_ = input.readBytes();
+              identifierValue_ = bs;
               break;
             }
@@ -22547,6 +24435,7 @@
             }
             case 66: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000020;
-              aggregateValue_ = input.readBytes();
+              aggregateValue_ = bs;
               break;
             }
@@ -22593,8 +24482,8 @@
     }
 
-    public interface NamePartOrBuilder
-        extends com.google.protobuf.MessageOrBuilder {
-
-      // required string name_part = 1;
+    public interface NamePartOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:google.protobuf.UninterpretedOption.NamePart)
+        com.google.protobuf.MessageOrBuilder {
+
       /**
        * <code>required string name_part = 1;</code>
@@ -22611,5 +24500,4 @@
           getNamePartBytes();
 
-      // required bool is_extension = 2;
       /**
        * <code>required bool is_extension = 2;</code>
@@ -22633,6 +24521,7 @@
      */
     public static final class NamePart extends
-        com.google.protobuf.GeneratedMessage
-        implements NamePartOrBuilder {
+        com.google.protobuf.GeneratedMessage implements
+        // @@protoc_insertion_point(message_implements:google.protobuf.UninterpretedOption.NamePart)
+        NamePartOrBuilder {
       // Use NamePart.newBuilder() to construct.
       private NamePart(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
@@ -22681,6 +24570,7 @@
               }
               case 10: {
+                com.google.protobuf.ByteString bs = input.readBytes();
                 bitField0_ |= 0x00000001;
-                namePart_ = input.readBytes();
+                namePart_ = bs;
                 break;
               }
@@ -22730,5 +24620,4 @@
 
       private int bitField0_;
-      // required string name_part = 1;
       public static final int NAME_PART_FIELD_NUMBER = 1;
       private java.lang.Object namePart_;
@@ -22773,5 +24662,4 @@
       }
 
-      // required bool is_extension = 2;
       public static final int IS_EXTENSION_FIELD_NUMBER = 2;
       private boolean isExtension_;
@@ -22796,5 +24684,6 @@
       public final boolean isInitialized() {
         byte isInitialized = memoizedIsInitialized;
-        if (isInitialized != -1) return isInitialized == 1;
+        if (isInitialized == 1) return true;
+        if (isInitialized == 0) return false;
 
         if (!hasNamePart()) {
@@ -22926,6 +24815,7 @@
        */
       public static final class Builder extends
-          com.google.protobuf.GeneratedMessage.Builder<Builder>
-         implements com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder {
+          com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+          // @@protoc_insertion_point(builder_implements:google.protobuf.UninterpretedOption.NamePart)
+          com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder {
         public static final com.google.protobuf.Descriptors.Descriptor
             getDescriptor() {
@@ -23059,5 +24949,4 @@
         private int bitField0_;
 
-        // required string name_part = 1;
         private java.lang.Object namePart_ = "";
         /**
@@ -23073,7 +24962,10 @@
           java.lang.Object ref = namePart_;
           if (!(ref instanceof java.lang.String)) {
-            java.lang.String s = ((com.google.protobuf.ByteString) ref)
-                .toStringUtf8();
-            namePart_ = s;
+            com.google.protobuf.ByteString bs =
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              namePart_ = s;
+            }
             return s;
           } else {
@@ -23133,5 +25025,4 @@
         }
 
-        // required bool is_extension = 2;
         private boolean isExtension_ ;
         /**
@@ -23178,5 +25069,4 @@
 
     private int bitField0_;
-    // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
     public static final int NAME_FIELD_NUMBER = 2;
     private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> name_;
@@ -23214,5 +25104,4 @@
     }
 
-    // optional string identifier_value = 3;
     public static final int IDENTIFIER_VALUE_FIELD_NUMBER = 3;
     private java.lang.Object identifierValue_;
@@ -23272,5 +25161,4 @@
     }
 
-    // optional uint64 positive_int_value = 4;
     public static final int POSITIVE_INT_VALUE_FIELD_NUMBER = 4;
     private long positiveIntValue_;
@@ -23288,5 +25176,4 @@
     }
 
-    // optional int64 negative_int_value = 5;
     public static final int NEGATIVE_INT_VALUE_FIELD_NUMBER = 5;
     private long negativeIntValue_;
@@ -23304,5 +25191,4 @@
     }
 
-    // optional double double_value = 6;
     public static final int DOUBLE_VALUE_FIELD_NUMBER = 6;
     private double doubleValue_;
@@ -23320,5 +25206,4 @@
     }
 
-    // optional bytes string_value = 7;
     public static final int STRING_VALUE_FIELD_NUMBER = 7;
     private com.google.protobuf.ByteString stringValue_;
@@ -23336,5 +25221,4 @@
     }
 
-    // optional string aggregate_value = 8;
     public static final int AGGREGATE_VALUE_FIELD_NUMBER = 8;
     private java.lang.Object aggregateValue_;
@@ -23391,5 +25275,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getNameCount(); i++) {
@@ -23555,6 +25440,7 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder {
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.UninterpretedOption)
+        com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -23766,5 +25652,4 @@
       private int bitField0_;
 
-      // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
       private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> name_ =
         java.util.Collections.emptyList();
@@ -23908,5 +25793,6 @@
         if (nameBuilder_ == null) {
           ensureNameIsMutable();
-          super.addAll(values, name_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, name_);
           onChanged();
         } else {
@@ -24006,5 +25892,4 @@
       }
 
-      // optional string identifier_value = 3;
       private java.lang.Object identifierValue_ = "";
       /**
@@ -24030,7 +25915,10 @@
         java.lang.Object ref = identifierValue_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          identifierValue_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            identifierValue_ = s;
+          }
           return s;
         } else {
@@ -24110,5 +25998,4 @@
       }
 
-      // optional uint64 positive_int_value = 4;
       private long positiveIntValue_ ;
       /**
@@ -24143,5 +26030,4 @@
       }
 
-      // optional int64 negative_int_value = 5;
       private long negativeIntValue_ ;
       /**
@@ -24176,5 +26062,4 @@
       }
 
-      // optional double double_value = 6;
       private double doubleValue_ ;
       /**
@@ -24209,5 +26094,4 @@
       }
 
-      // optional bytes string_value = 7;
       private com.google.protobuf.ByteString stringValue_ = com.google.protobuf.ByteString.EMPTY;
       /**
@@ -24245,5 +26129,4 @@
       }
 
-      // optional string aggregate_value = 8;
       private java.lang.Object aggregateValue_ = "";
       /**
@@ -24259,7 +26142,10 @@
         java.lang.Object ref = aggregateValue_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          aggregateValue_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            aggregateValue_ = s;
+          }
           return s;
         } else {
@@ -24330,8 +26216,8 @@
   }
 
-  public interface SourceCodeInfoOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // repeated .google.protobuf.SourceCodeInfo.Location location = 1;
+  public interface SourceCodeInfoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:google.protobuf.SourceCodeInfo)
+      com.google.protobuf.MessageOrBuilder {
+
     /**
      * <code>repeated .google.protobuf.SourceCodeInfo.Location location = 1;</code>
@@ -24342,5 +26228,4 @@
      * to be useful to IDEs, code indexers, documentation generators, and similar
      * tools.
-     *
      * For example, say we have a file like:
      *   message Foo {
@@ -24358,5 +26243,4 @@
      *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
      *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-     *
      * Notes:
      * - A location may refer to a repeated field itself (i.e. not to any
@@ -24393,5 +26277,4 @@
      * to be useful to IDEs, code indexers, documentation generators, and similar
      * tools.
-     *
      * For example, say we have a file like:
      *   message Foo {
@@ -24409,5 +26292,4 @@
      *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
      *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-     *
      * Notes:
      * - A location may refer to a repeated field itself (i.e. not to any
@@ -24443,5 +26325,4 @@
      * to be useful to IDEs, code indexers, documentation generators, and similar
      * tools.
-     *
      * For example, say we have a file like:
      *   message Foo {
@@ -24459,5 +26340,4 @@
      *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
      *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-     *
      * Notes:
      * - A location may refer to a repeated field itself (i.e. not to any
@@ -24493,5 +26373,4 @@
      * to be useful to IDEs, code indexers, documentation generators, and similar
      * tools.
-     *
      * For example, say we have a file like:
      *   message Foo {
@@ -24509,5 +26388,4 @@
      *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
      *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-     *
      * Notes:
      * - A location may refer to a repeated field itself (i.e. not to any
@@ -24544,5 +26422,4 @@
      * to be useful to IDEs, code indexers, documentation generators, and similar
      * tools.
-     *
      * For example, say we have a file like:
      *   message Foo {
@@ -24560,5 +26437,4 @@
      *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
      *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-     *
      * Notes:
      * - A location may refer to a repeated field itself (i.e. not to any
@@ -24597,6 +26473,7 @@
    */
   public static final class SourceCodeInfo extends
-      com.google.protobuf.GeneratedMessage
-      implements SourceCodeInfoOrBuilder {
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:google.protobuf.SourceCodeInfo)
+      SourceCodeInfoOrBuilder {
     // Use SourceCodeInfo.newBuilder() to construct.
     private SourceCodeInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
@@ -24694,8 +26571,8 @@
     }
 
-    public interface LocationOrBuilder
-        extends com.google.protobuf.MessageOrBuilder {
-
-      // repeated int32 path = 1 [packed = true];
+    public interface LocationOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:google.protobuf.SourceCodeInfo.Location)
+        com.google.protobuf.MessageOrBuilder {
+
       /**
        * <code>repeated int32 path = 1 [packed = true];</code>
@@ -24704,5 +26581,4 @@
        * Identifies which part of the FileDescriptorProto was defined at this
        * location.
-       *
        * Each element is a field number or an index.  They form a path from
        * the root FileDescriptorProto to the place where the definition.  For
@@ -24719,5 +26595,4 @@
        * and FieldDescriptorProto.name has field number 1:
        *   optional string name = 1;
-       *
        * Thus, the above path gives the location of a field name.  If we removed
        * the last element:
@@ -24734,5 +26609,4 @@
        * Identifies which part of the FileDescriptorProto was defined at this
        * location.
-       *
        * Each element is a field number or an index.  They form a path from
        * the root FileDescriptorProto to the place where the definition.  For
@@ -24749,5 +26623,4 @@
        * and FieldDescriptorProto.name has field number 1:
        *   optional string name = 1;
-       *
        * Thus, the above path gives the location of a field name.  If we removed
        * the last element:
@@ -24764,5 +26637,4 @@
        * Identifies which part of the FileDescriptorProto was defined at this
        * location.
-       *
        * Each element is a field number or an index.  They form a path from
        * the root FileDescriptorProto to the place where the definition.  For
@@ -24779,5 +26651,4 @@
        * and FieldDescriptorProto.name has field number 1:
        *   optional string name = 1;
-       *
        * Thus, the above path gives the location of a field name.  If we removed
        * the last element:
@@ -24789,5 +26660,4 @@
       int getPath(int index);
 
-      // repeated int32 span = 2 [packed = true];
       /**
        * <code>repeated int32 span = 2 [packed = true];</code>
@@ -24827,5 +26697,4 @@
       int getSpan(int index);
 
-      // optional string leading_comments = 3;
       /**
        * <code>optional string leading_comments = 3;</code>
@@ -24835,28 +26704,21 @@
        * comments appearing before and after the declaration which appear to be
        * attached to the declaration.
-       *
        * A series of line comments appearing on consecutive lines, with no other
        * tokens appearing on those lines, will be treated as a single comment.
-       *
        * Only the comment content is provided; comment markers (e.g. //) are
        * stripped out.  For block comments, leading whitespace and an asterisk
        * will be stripped from the beginning of each line other than the first.
        * Newlines are included in the output.
-       *
        * Examples:
-       *
        *   optional int32 foo = 1;  // Comment attached to foo.
        *   // Comment attached to bar.
        *   optional int32 bar = 2;
-       *
        *   optional string baz = 3;
        *   // Comment attached to baz.
        *   // Another line attached to baz.
-       *
        *   // Comment attached to qux.
        *   //
        *   // Another line attached to qux.
        *   optional double qux = 4;
-       *
        *   optional string corge = 5;
        *   /&#42; Block comment attached
@@ -24876,28 +26738,21 @@
        * comments appearing before and after the declaration which appear to be
        * attached to the declaration.
-       *
        * A series of line comments appearing on consecutive lines, with no other
        * tokens appearing on those lines, will be treated as a single comment.
-       *
        * Only the comment content is provided; comment markers (e.g. //) are
        * stripped out.  For block comments, leading whitespace and an asterisk
        * will be stripped from the beginning of each line other than the first.
        * Newlines are included in the output.
-       *
        * Examples:
-       *
        *   optional int32 foo = 1;  // Comment attached to foo.
        *   // Comment attached to bar.
        *   optional int32 bar = 2;
-       *
        *   optional string baz = 3;
        *   // Comment attached to baz.
        *   // Another line attached to baz.
-       *
        *   // Comment attached to qux.
        *   //
        *   // Another line attached to qux.
        *   optional double qux = 4;
-       *
        *   optional string corge = 5;
        *   /&#42; Block comment attached
@@ -24917,28 +26772,21 @@
        * comments appearing before and after the declaration which appear to be
        * attached to the declaration.
-       *
        * A series of line comments appearing on consecutive lines, with no other
        * tokens appearing on those lines, will be treated as a single comment.
-       *
        * Only the comment content is provided; comment markers (e.g. //) are
        * stripped out.  For block comments, leading whitespace and an asterisk
        * will be stripped from the beginning of each line other than the first.
        * Newlines are included in the output.
-       *
        * Examples:
-       *
        *   optional int32 foo = 1;  // Comment attached to foo.
        *   // Comment attached to bar.
        *   optional int32 bar = 2;
-       *
        *   optional string baz = 3;
        *   // Comment attached to baz.
        *   // Another line attached to baz.
-       *
        *   // Comment attached to qux.
        *   //
        *   // Another line attached to qux.
        *   optional double qux = 4;
-       *
        *   optional string corge = 5;
        *   /&#42; Block comment attached
@@ -24953,5 +26801,4 @@
           getLeadingCommentsBytes();
 
-      // optional string trailing_comments = 4;
       /**
        * <code>optional string trailing_comments = 4;</code>
@@ -24972,6 +26819,7 @@
      */
     public static final class Location extends
-        com.google.protobuf.GeneratedMessage
-        implements LocationOrBuilder {
+        com.google.protobuf.GeneratedMessage implements
+        // @@protoc_insertion_point(message_implements:google.protobuf.SourceCodeInfo.Location)
+        LocationOrBuilder {
       // Use Location.newBuilder() to construct.
       private Location(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
@@ -25062,11 +26910,13 @@
               }
               case 26: {
+                com.google.protobuf.ByteString bs = input.readBytes();
                 bitField0_ |= 0x00000001;
-                leadingComments_ = input.readBytes();
+                leadingComments_ = bs;
                 break;
               }
               case 34: {
+                com.google.protobuf.ByteString bs = input.readBytes();
                 bitField0_ |= 0x00000002;
-                trailingComments_ = input.readBytes();
+                trailingComments_ = bs;
                 break;
               }
@@ -25117,5 +26967,4 @@
 
       private int bitField0_;
-      // repeated int32 path = 1 [packed = true];
       public static final int PATH_FIELD_NUMBER = 1;
       private java.util.List<java.lang.Integer> path_;
@@ -25126,5 +26975,4 @@
        * Identifies which part of the FileDescriptorProto was defined at this
        * location.
-       *
        * Each element is a field number or an index.  They form a path from
        * the root FileDescriptorProto to the place where the definition.  For
@@ -25141,5 +26989,4 @@
        * and FieldDescriptorProto.name has field number 1:
        *   optional string name = 1;
-       *
        * Thus, the above path gives the location of a field name.  If we removed
        * the last element:
@@ -25159,5 +27006,4 @@
        * Identifies which part of the FileDescriptorProto was defined at this
        * location.
-       *
        * Each element is a field number or an index.  They form a path from
        * the root FileDescriptorProto to the place where the definition.  For
@@ -25174,5 +27020,4 @@
        * and FieldDescriptorProto.name has field number 1:
        *   optional string name = 1;
-       *
        * Thus, the above path gives the location of a field name.  If we removed
        * the last element:
@@ -25191,5 +27036,4 @@
        * Identifies which part of the FileDescriptorProto was defined at this
        * location.
-       *
        * Each element is a field number or an index.  They form a path from
        * the root FileDescriptorProto to the place where the definition.  For
@@ -25206,5 +27050,4 @@
        * and FieldDescriptorProto.name has field number 1:
        *   optional string name = 1;
-       *
        * Thus, the above path gives the location of a field name.  If we removed
        * the last element:
@@ -25219,5 +27062,4 @@
       private int pathMemoizedSerializedSize = -1;
 
-      // repeated int32 span = 2 [packed = true];
       public static final int SPAN_FIELD_NUMBER = 2;
       private java.util.List<java.lang.Integer> span_;
@@ -25267,5 +27109,4 @@
       private int spanMemoizedSerializedSize = -1;
 
-      // optional string leading_comments = 3;
       public static final int LEADING_COMMENTS_FIELD_NUMBER = 3;
       private java.lang.Object leadingComments_;
@@ -25277,28 +27118,21 @@
        * comments appearing before and after the declaration which appear to be
        * attached to the declaration.
-       *
        * A series of line comments appearing on consecutive lines, with no other
        * tokens appearing on those lines, will be treated as a single comment.
-       *
        * Only the comment content is provided; comment markers (e.g. //) are
        * stripped out.  For block comments, leading whitespace and an asterisk
        * will be stripped from the beginning of each line other than the first.
        * Newlines are included in the output.
-       *
        * Examples:
-       *
        *   optional int32 foo = 1;  // Comment attached to foo.
        *   // Comment attached to bar.
        *   optional int32 bar = 2;
-       *
        *   optional string baz = 3;
        *   // Comment attached to baz.
        *   // Another line attached to baz.
-       *
        *   // Comment attached to qux.
        *   //
        *   // Another line attached to qux.
        *   optional double qux = 4;
-       *
        *   optional string corge = 5;
        *   /&#42; Block comment attached
@@ -25320,28 +27154,21 @@
        * comments appearing before and after the declaration which appear to be
        * attached to the declaration.
-       *
        * A series of line comments appearing on consecutive lines, with no other
        * tokens appearing on those lines, will be treated as a single comment.
-       *
        * Only the comment content is provided; comment markers (e.g. //) are
        * stripped out.  For block comments, leading whitespace and an asterisk
        * will be stripped from the beginning of each line other than the first.
        * Newlines are included in the output.
-       *
        * Examples:
-       *
        *   optional int32 foo = 1;  // Comment attached to foo.
        *   // Comment attached to bar.
        *   optional int32 bar = 2;
-       *
        *   optional string baz = 3;
        *   // Comment attached to baz.
        *   // Another line attached to baz.
-       *
        *   // Comment attached to qux.
        *   //
        *   // Another line attached to qux.
        *   optional double qux = 4;
-       *
        *   optional string corge = 5;
        *   /&#42; Block comment attached
@@ -25374,28 +27201,21 @@
        * comments appearing before and after the declaration which appear to be
        * attached to the declaration.
-       *
        * A series of line comments appearing on consecutive lines, with no other
        * tokens appearing on those lines, will be treated as a single comment.
-       *
        * Only the comment content is provided; comment markers (e.g. //) are
        * stripped out.  For block comments, leading whitespace and an asterisk
        * will be stripped from the beginning of each line other than the first.
        * Newlines are included in the output.
-       *
        * Examples:
-       *
        *   optional int32 foo = 1;  // Comment attached to foo.
        *   // Comment attached to bar.
        *   optional int32 bar = 2;
-       *
        *   optional string baz = 3;
        *   // Comment attached to baz.
        *   // Another line attached to baz.
-       *
        *   // Comment attached to qux.
        *   //
        *   // Another line attached to qux.
        *   optional double qux = 4;
-       *
        *   optional string corge = 5;
        *   /&#42; Block comment attached
@@ -25421,5 +27241,4 @@
       }
 
-      // optional string trailing_comments = 4;
       public static final int TRAILING_COMMENTS_FIELD_NUMBER = 4;
       private java.lang.Object trailingComments_;
@@ -25473,5 +27292,6 @@
       public final boolean isInitialized() {
         byte isInitialized = memoizedIsInitialized;
-        if (isInitialized != -1) return isInitialized == 1;
+        if (isInitialized == 1) return true;
+        if (isInitialized == 0) return false;
 
         memoizedIsInitialized = 1;
@@ -25629,6 +27449,7 @@
        */
       public static final class Builder extends
-          com.google.protobuf.GeneratedMessage.Builder<Builder>
-         implements com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder {
+          com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+          // @@protoc_insertion_point(builder_implements:google.protobuf.SourceCodeInfo.Location)
+          com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder {
         public static final com.google.protobuf.Descriptors.Descriptor
             getDescriptor() {
@@ -25790,5 +27611,4 @@
         private int bitField0_;
 
-        // repeated int32 path = 1 [packed = true];
         private java.util.List<java.lang.Integer> path_ = java.util.Collections.emptyList();
         private void ensurePathIsMutable() {
@@ -25804,5 +27624,4 @@
          * Identifies which part of the FileDescriptorProto was defined at this
          * location.
-         *
          * Each element is a field number or an index.  They form a path from
          * the root FileDescriptorProto to the place where the definition.  For
@@ -25819,5 +27638,4 @@
          * and FieldDescriptorProto.name has field number 1:
          *   optional string name = 1;
-         *
          * Thus, the above path gives the location of a field name.  If we removed
          * the last element:
@@ -25837,5 +27655,4 @@
          * Identifies which part of the FileDescriptorProto was defined at this
          * location.
-         *
          * Each element is a field number or an index.  They form a path from
          * the root FileDescriptorProto to the place where the definition.  For
@@ -25852,5 +27669,4 @@
          * and FieldDescriptorProto.name has field number 1:
          *   optional string name = 1;
-         *
          * Thus, the above path gives the location of a field name.  If we removed
          * the last element:
@@ -25869,5 +27685,4 @@
          * Identifies which part of the FileDescriptorProto was defined at this
          * location.
-         *
          * Each element is a field number or an index.  They form a path from
          * the root FileDescriptorProto to the place where the definition.  For
@@ -25884,5 +27699,4 @@
          * and FieldDescriptorProto.name has field number 1:
          *   optional string name = 1;
-         *
          * Thus, the above path gives the location of a field name.  If we removed
          * the last element:
@@ -25901,5 +27715,4 @@
          * Identifies which part of the FileDescriptorProto was defined at this
          * location.
-         *
          * Each element is a field number or an index.  They form a path from
          * the root FileDescriptorProto to the place where the definition.  For
@@ -25916,5 +27729,4 @@
          * and FieldDescriptorProto.name has field number 1:
          *   optional string name = 1;
-         *
          * Thus, the above path gives the location of a field name.  If we removed
          * the last element:
@@ -25937,5 +27749,4 @@
          * Identifies which part of the FileDescriptorProto was defined at this
          * location.
-         *
          * Each element is a field number or an index.  They form a path from
          * the root FileDescriptorProto to the place where the definition.  For
@@ -25952,5 +27763,4 @@
          * and FieldDescriptorProto.name has field number 1:
          *   optional string name = 1;
-         *
          * Thus, the above path gives the location of a field name.  If we removed
          * the last element:
@@ -25972,5 +27782,4 @@
          * Identifies which part of the FileDescriptorProto was defined at this
          * location.
-         *
          * Each element is a field number or an index.  They form a path from
          * the root FileDescriptorProto to the place where the definition.  For
@@ -25987,5 +27796,4 @@
          * and FieldDescriptorProto.name has field number 1:
          *   optional string name = 1;
-         *
          * Thus, the above path gives the location of a field name.  If we removed
          * the last element:
@@ -25998,5 +27806,6 @@
             java.lang.Iterable<? extends java.lang.Integer> values) {
           ensurePathIsMutable();
-          super.addAll(values, path_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, path_);
           onChanged();
           return this;
@@ -26008,5 +27817,4 @@
          * Identifies which part of the FileDescriptorProto was defined at this
          * location.
-         *
          * Each element is a field number or an index.  They form a path from
          * the root FileDescriptorProto to the place where the definition.  For
@@ -26023,5 +27831,4 @@
          * and FieldDescriptorProto.name has field number 1:
          *   optional string name = 1;
-         *
          * Thus, the above path gives the location of a field name.  If we removed
          * the last element:
@@ -26038,5 +27845,4 @@
         }
 
-        // repeated int32 span = 2 [packed = true];
         private java.util.List<java.lang.Integer> span_ = java.util.Collections.emptyList();
         private void ensureSpanIsMutable() {
@@ -26138,5 +27944,6 @@
             java.lang.Iterable<? extends java.lang.Integer> values) {
           ensureSpanIsMutable();
-          super.addAll(values, span_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, span_);
           onChanged();
           return this;
@@ -26160,5 +27967,4 @@
         }
 
-        // optional string leading_comments = 3;
         private java.lang.Object leadingComments_ = "";
         /**
@@ -26169,28 +27975,21 @@
          * comments appearing before and after the declaration which appear to be
          * attached to the declaration.
-         *
          * A series of line comments appearing on consecutive lines, with no other
          * tokens appearing on those lines, will be treated as a single comment.
-         *
          * Only the comment content is provided; comment markers (e.g. //) are
          * stripped out.  For block comments, leading whitespace and an asterisk
          * will be stripped from the beginning of each line other than the first.
          * Newlines are included in the output.
-         *
          * Examples:
-         *
          *   optional int32 foo = 1;  // Comment attached to foo.
          *   // Comment attached to bar.
          *   optional int32 bar = 2;
-         *
          *   optional string baz = 3;
          *   // Comment attached to baz.
          *   // Another line attached to baz.
-         *
          *   // Comment attached to qux.
          *   //
          *   // Another line attached to qux.
          *   optional double qux = 4;
-         *
          *   optional string corge = 5;
          *   /&#42; Block comment attached
@@ -26212,28 +28011,21 @@
          * comments appearing before and after the declaration which appear to be
          * attached to the declaration.
-         *
          * A series of line comments appearing on consecutive lines, with no other
          * tokens appearing on those lines, will be treated as a single comment.
-         *
          * Only the comment content is provided; comment markers (e.g. //) are
          * stripped out.  For block comments, leading whitespace and an asterisk
          * will be stripped from the beginning of each line other than the first.
          * Newlines are included in the output.
-         *
          * Examples:
-         *
          *   optional int32 foo = 1;  // Comment attached to foo.
          *   // Comment attached to bar.
          *   optional int32 bar = 2;
-         *
          *   optional string baz = 3;
          *   // Comment attached to baz.
          *   // Another line attached to baz.
-         *
          *   // Comment attached to qux.
          *   //
          *   // Another line attached to qux.
          *   optional double qux = 4;
-         *
          *   optional string corge = 5;
          *   /&#42; Block comment attached
@@ -26248,7 +28040,10 @@
           java.lang.Object ref = leadingComments_;
           if (!(ref instanceof java.lang.String)) {
-            java.lang.String s = ((com.google.protobuf.ByteString) ref)
-                .toStringUtf8();
-            leadingComments_ = s;
+            com.google.protobuf.ByteString bs =
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              leadingComments_ = s;
+            }
             return s;
           } else {
@@ -26263,28 +28058,21 @@
          * comments appearing before and after the declaration which appear to be
          * attached to the declaration.
-         *
          * A series of line comments appearing on consecutive lines, with no other
          * tokens appearing on those lines, will be treated as a single comment.
-         *
          * Only the comment content is provided; comment markers (e.g. //) are
          * stripped out.  For block comments, leading whitespace and an asterisk
          * will be stripped from the beginning of each line other than the first.
          * Newlines are included in the output.
-         *
          * Examples:
-         *
          *   optional int32 foo = 1;  // Comment attached to foo.
          *   // Comment attached to bar.
          *   optional int32 bar = 2;
-         *
          *   optional string baz = 3;
          *   // Comment attached to baz.
          *   // Another line attached to baz.
-         *
          *   // Comment attached to qux.
          *   //
          *   // Another line attached to qux.
          *   optional double qux = 4;
-         *
          *   optional string corge = 5;
          *   /&#42; Block comment attached
@@ -26316,28 +28104,21 @@
          * comments appearing before and after the declaration which appear to be
          * attached to the declaration.
-         *
          * A series of line comments appearing on consecutive lines, with no other
          * tokens appearing on those lines, will be treated as a single comment.
-         *
          * Only the comment content is provided; comment markers (e.g. //) are
          * stripped out.  For block comments, leading whitespace and an asterisk
          * will be stripped from the beginning of each line other than the first.
          * Newlines are included in the output.
-         *
          * Examples:
-         *
          *   optional int32 foo = 1;  // Comment attached to foo.
          *   // Comment attached to bar.
          *   optional int32 bar = 2;
-         *
          *   optional string baz = 3;
          *   // Comment attached to baz.
          *   // Another line attached to baz.
-         *
          *   // Comment attached to qux.
          *   //
          *   // Another line attached to qux.
          *   optional double qux = 4;
-         *
          *   optional string corge = 5;
          *   /&#42; Block comment attached
@@ -26366,28 +28147,21 @@
          * comments appearing before and after the declaration which appear to be
          * attached to the declaration.
-         *
          * A series of line comments appearing on consecutive lines, with no other
          * tokens appearing on those lines, will be treated as a single comment.
-         *
          * Only the comment content is provided; comment markers (e.g. //) are
          * stripped out.  For block comments, leading whitespace and an asterisk
          * will be stripped from the beginning of each line other than the first.
          * Newlines are included in the output.
-         *
          * Examples:
-         *
          *   optional int32 foo = 1;  // Comment attached to foo.
          *   // Comment attached to bar.
          *   optional int32 bar = 2;
-         *
          *   optional string baz = 3;
          *   // Comment attached to baz.
          *   // Another line attached to baz.
-         *
          *   // Comment attached to qux.
          *   //
          *   // Another line attached to qux.
          *   optional double qux = 4;
-         *
          *   optional string corge = 5;
          *   /&#42; Block comment attached
@@ -26412,28 +28186,21 @@
          * comments appearing before and after the declaration which appear to be
          * attached to the declaration.
-         *
          * A series of line comments appearing on consecutive lines, with no other
          * tokens appearing on those lines, will be treated as a single comment.
-         *
          * Only the comment content is provided; comment markers (e.g. //) are
          * stripped out.  For block comments, leading whitespace and an asterisk
          * will be stripped from the beginning of each line other than the first.
          * Newlines are included in the output.
-         *
          * Examples:
-         *
          *   optional int32 foo = 1;  // Comment attached to foo.
          *   // Comment attached to bar.
          *   optional int32 bar = 2;
-         *
          *   optional string baz = 3;
          *   // Comment attached to baz.
          *   // Another line attached to baz.
-         *
          *   // Comment attached to qux.
          *   //
          *   // Another line attached to qux.
          *   optional double qux = 4;
-         *
          *   optional string corge = 5;
          *   /&#42; Block comment attached
@@ -26456,5 +28223,4 @@
         }
 
-        // optional string trailing_comments = 4;
         private java.lang.Object trailingComments_ = "";
         /**
@@ -26470,7 +28236,10 @@
           java.lang.Object ref = trailingComments_;
           if (!(ref instanceof java.lang.String)) {
-            java.lang.String s = ((com.google.protobuf.ByteString) ref)
-                .toStringUtf8();
-            trailingComments_ = s;
+            com.google.protobuf.ByteString bs =
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              trailingComments_ = s;
+            }
             return s;
           } else {
@@ -26541,5 +28310,4 @@
     }
 
-    // repeated .google.protobuf.SourceCodeInfo.Location location = 1;
     public static final int LOCATION_FIELD_NUMBER = 1;
     private java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> location_;
@@ -26552,5 +28320,4 @@
      * to be useful to IDEs, code indexers, documentation generators, and similar
      * tools.
-     *
      * For example, say we have a file like:
      *   message Foo {
@@ -26568,5 +28335,4 @@
      *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
      *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-     *
      * Notes:
      * - A location may refer to a repeated field itself (i.e. not to any
@@ -26604,5 +28370,4 @@
      * to be useful to IDEs, code indexers, documentation generators, and similar
      * tools.
-     *
      * For example, say we have a file like:
      *   message Foo {
@@ -26620,5 +28385,4 @@
      *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
      *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-     *
      * Notes:
      * - A location may refer to a repeated field itself (i.e. not to any
@@ -26657,5 +28421,4 @@
      * to be useful to IDEs, code indexers, documentation generators, and similar
      * tools.
-     *
      * For example, say we have a file like:
      *   message Foo {
@@ -26673,5 +28436,4 @@
      *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
      *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-     *
      * Notes:
      * - A location may refer to a repeated field itself (i.e. not to any
@@ -26709,5 +28471,4 @@
      * to be useful to IDEs, code indexers, documentation generators, and similar
      * tools.
-     *
      * For example, say we have a file like:
      *   message Foo {
@@ -26725,5 +28486,4 @@
      *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
      *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-     *
      * Notes:
      * - A location may refer to a repeated field itself (i.e. not to any
@@ -26761,5 +28521,4 @@
      * to be useful to IDEs, code indexers, documentation generators, and similar
      * tools.
-     *
      * For example, say we have a file like:
      *   message Foo {
@@ -26777,5 +28536,4 @@
      *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
      *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-     *
      * Notes:
      * - A location may refer to a repeated field itself (i.e. not to any
@@ -26813,5 +28571,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       memoizedIsInitialized = 1;
@@ -26925,6 +28684,7 @@
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder {
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:google.protobuf.SourceCodeInfo)
+        com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
@@ -27070,5 +28830,4 @@
       private int bitField0_;
 
-      // repeated .google.protobuf.SourceCodeInfo.Location location = 1;
       private java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> location_ =
         java.util.Collections.emptyList();
@@ -27091,5 +28850,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27107,5 +28865,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27147,5 +28904,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27163,5 +28919,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27203,5 +28958,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27219,5 +28973,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27259,5 +29012,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27275,5 +29027,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27322,5 +29073,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27338,5 +29088,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27382,5 +29131,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27398,5 +29146,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27444,5 +29191,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27460,5 +29206,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27507,5 +29252,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27523,5 +29267,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27567,5 +29310,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27583,5 +29325,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27627,5 +29368,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27643,5 +29383,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27672,5 +29411,6 @@
         if (locationBuilder_ == null) {
           ensureLocationIsMutable();
-          super.addAll(values, location_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, location_);
           onChanged();
         } else {
@@ -27687,5 +29427,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27703,5 +29442,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27746,5 +29484,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27762,5 +29499,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27805,5 +29541,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27821,5 +29556,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27858,5 +29592,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27874,5 +29607,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27914,5 +29646,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27930,5 +29661,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -27971,5 +29701,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -27987,5 +29716,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -28024,5 +29752,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -28040,5 +29767,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -28078,5 +29804,4 @@
        * to be useful to IDEs, code indexers, documentation generators, and similar
        * tools.
-       *
        * For example, say we have a file like:
        *   message Foo {
@@ -28094,5 +29819,4 @@
        *   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
        *   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-       *
        * Notes:
        * - A location may refer to a repeated field itself (i.e. not to any
@@ -28149,100 +29873,105 @@
   }
 
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_FileDescriptorSet_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_FileDescriptorProto_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_DescriptorProto_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_DescriptorProto_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_FieldDescriptorProto_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_google_protobuf_OneofDescriptorProto_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.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
       internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_EnumValueDescriptorProto_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_ServiceDescriptorProto_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_MethodDescriptorProto_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_FileOptions_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_FileOptions_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_MessageOptions_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_MessageOptions_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_FieldOptions_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_FieldOptions_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_EnumOptions_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_EnumOptions_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_EnumValueOptions_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_ServiceOptions_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_ServiceOptions_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_MethodOptions_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_MethodOptions_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_UninterpretedOption_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_SourceCodeInfo_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_google_protobuf_SourceCodeInfo_fieldAccessorTable;
-  private static com.google.protobuf.Descriptors.Descriptor
+  private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_google_protobuf_SourceCodeInfo_Location_descriptor;
   private static
@@ -28258,241 +29987,254 @@
   static {
     java.lang.String[] descriptorData = {
-      "\n\031protobuf/descriptor.proto\022\017google.prot" +
-      "obuf\"G\n\021FileDescriptorSet\0222\n\004file\030\001 \003(\0132" +
-      "$.google.protobuf.FileDescriptorProto\"\313\003" +
-      "\n\023FileDescriptorProto\022\014\n\004name\030\001 \001(\t\022\017\n\007p" +
-      "ackage\030\002 \001(\t\022\022\n\ndependency\030\003 \003(\t\022\031\n\021publ" +
-      "ic_dependency\030\n \003(\005\022\027\n\017weak_dependency\030\013" +
-      " \003(\005\0226\n\014message_type\030\004 \003(\0132 .google.prot" +
-      "obuf.DescriptorProto\0227\n\tenum_type\030\005 \003(\0132" +
-      "$.google.protobuf.EnumDescriptorProto\0228\n" +
-      "\007service\030\006 \003(\0132\'.google.protobuf.Service",
-      "DescriptorProto\0228\n\textension\030\007 \003(\0132%.goo" +
-      "gle.protobuf.FieldDescriptorProto\022-\n\007opt" +
-      "ions\030\010 \001(\0132\034.google.protobuf.FileOptions" +
-      "\0229\n\020source_code_info\030\t \001(\0132\037.google.prot" +
-      "obuf.SourceCodeInfo\"\251\003\n\017DescriptorProto\022" +
-      "\014\n\004name\030\001 \001(\t\0224\n\005field\030\002 \003(\0132%.google.pr" +
-      "otobuf.FieldDescriptorProto\0228\n\textension" +
-      "\030\006 \003(\0132%.google.protobuf.FieldDescriptor" +
-      "Proto\0225\n\013nested_type\030\003 \003(\0132 .google.prot" +
-      "obuf.DescriptorProto\0227\n\tenum_type\030\004 \003(\0132",
-      "$.google.protobuf.EnumDescriptorProto\022H\n" +
-      "\017extension_range\030\005 \003(\0132/.google.protobuf" +
-      ".DescriptorProto.ExtensionRange\0220\n\007optio" +
-      "ns\030\007 \001(\0132\037.google.protobuf.MessageOption" +
-      "s\032,\n\016ExtensionRange\022\r\n\005start\030\001 \001(\005\022\013\n\003en" +
-      "d\030\002 \001(\005\"\224\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.FieldDescriptorProto.Lab" +
-      "el\0228\n\004type\030\005 \001(\0162*.google.protobuf.Field" +
-      "DescriptorProto.Type\022\021\n\ttype_name\030\006 \001(\t\022",
-      "\020\n\010extendee\030\002 \001(\t\022\025\n\rdefault_value\030\007 \001(\t" +
-      "\022.\n\007options\030\010 \001(\0132\035.google.protobuf.Fiel" +
-      "dOptions\"\266\002\n\004Type\022\017\n\013TYPE_DOUBLE\020\001\022\016\n\nTY" +
-      "PE_FLOAT\020\002\022\016\n\nTYPE_INT64\020\003\022\017\n\013TYPE_UINT6" +
-      "4\020\004\022\016\n\nTYPE_INT32\020\005\022\020\n\014TYPE_FIXED64\020\006\022\020\n" +
-      "\014TYPE_FIXED32\020\007\022\r\n\tTYPE_BOOL\020\010\022\017\n\013TYPE_S" +
-      "TRING\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\tTY" +
-      "PE_ENUM\020\016\022\021\n\rTYPE_SFIXED32\020\017\022\021\n\rTYPE_SFI" +
-      "XED64\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\"\214\001\n\023EnumD" +
-      "escriptorProto\022\014\n\004name\030\001 \001(\t\0228\n\005value\030\002 " +
-      "\003(\0132).google.protobuf.EnumValueDescripto" +
-      "rProto\022-\n\007options\030\003 \001(\0132\034.google.protobu" +
-      "f.EnumOptions\"l\n\030EnumValueDescriptorProt" +
-      "o\022\014\n\004name\030\001 \001(\t\022\016\n\006number\030\002 \001(\005\0222\n\007optio" +
-      "ns\030\003 \001(\0132!.google.protobuf.EnumValueOpti" +
-      "ons\"\220\001\n\026ServiceDescriptorProto\022\014\n\004name\030\001" +
-      " \001(\t\0226\n\006method\030\002 \003(\0132&.google.protobuf.M",
-      "ethodDescriptorProto\0220\n\007options\030\003 \001(\0132\037." +
-      "google.protobuf.ServiceOptions\"\177\n\025Method" +
-      "DescriptorProto\022\014\n\004name\030\001 \001(\t\022\022\n\ninput_t" +
-      "ype\030\002 \001(\t\022\023\n\013output_type\030\003 \001(\t\022/\n\007option" +
-      "s\030\004 \001(\0132\036.google.protobuf.MethodOptions\"" +
-      "\351\003\n\013FileOptions\022\024\n\014java_package\030\001 \001(\t\022\034\n" +
-      "\024java_outer_classname\030\010 \001(\t\022\"\n\023java_mult" +
-      "iple_files\030\n \001(\010:\005false\022,\n\035java_generate" +
-      "_equals_and_hash\030\024 \001(\010:\005false\022F\n\014optimiz" +
-      "e_for\030\t \001(\0162).google.protobuf.FileOption",
-      "s.OptimizeMode:\005SPEED\022\022\n\ngo_package\030\013 \001(" +
-      "\t\022\"\n\023cc_generic_services\030\020 \001(\010:\005false\022$\n" +
-      "\025java_generic_services\030\021 \001(\010:\005false\022\"\n\023p" +
-      "y_generic_services\030\022 \001(\010:\005false\022C\n\024unint" +
-      "erpreted_option\030\347\007 \003(\0132$.google.protobuf" +
-      ".UninterpretedOption\":\n\014OptimizeMode\022\t\n\005" +
-      "SPEED\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\"\270\001\n\016MessageOptions\022&\n\027messag" +
-      "e_set_wire_format\030\001 \001(\010:\005false\022.\n\037no_sta" +
-      "ndard_descriptor_accessor\030\002 \001(\010:\005false\022C",
-      "\n\024uninterpreted_option\030\347\007 \003(\0132$.google.p" +
-      "rotobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"\276" +
-      "\002\n\014FieldOptions\022:\n\005ctype\030\001 \001(\0162#.google." +
-      "protobuf.FieldOptions.CType:\006STRING\022\016\n\006p" +
-      "acked\030\002 \001(\010\022\023\n\004lazy\030\005 \001(\010:\005false\022\031\n\ndepr" +
-      "ecated\030\003 \001(\010:\005false\022\034\n\024experimental_map_" +
-      "key\030\t \001(\t\022\023\n\004weak\030\n \001(\010:\005false\022C\n\024uninte" +
-      "rpreted_option\030\347\007 \003(\0132$.google.protobuf." +
-      "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\"",
-      "x\n\013EnumOptions\022\031\n\013allow_alias\030\002 \001(\010:\004tru" +
+      "\n\020descriptor.proto\022\017google.protobuf\"G\n\021F" +
+      "ileDescriptorSet\0222\n\004file\030\001 \003(\0132$.google." +
+      "protobuf.FileDescriptorProto\"\313\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" +
+      "ency\030\n \003(\005\022\027\n\017weak_dependency\030\013 \003(\005\0226\n\014m" +
+      "essage_type\030\004 \003(\0132 .google.protobuf.Desc" +
+      "riptorProto\0227\n\tenum_type\030\005 \003(\0132$.google." +
+      "protobuf.EnumDescriptorProto\0228\n\007service\030" +
+      "\006 \003(\0132\'.google.protobuf.ServiceDescripto",
+      "rProto\0228\n\textension\030\007 \003(\0132%.google.proto" +
+      "buf.FieldDescriptorProto\022-\n\007options\030\010 \001(" +
+      "\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" +
+      "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\"b\n\020EnumValueOptions\022C\n\024uninterpreted_o" +
-      "ption\030\347\007 \003(\0132$.google.protobuf.Uninterpr" +
-      "etedOption*\t\010\350\007\020\200\200\200\200\002\"`\n\016ServiceOptions\022" +
-      "C\n\024uninterpreted_option\030\347\007 \003(\0132$.google." +
-      "protobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"" +
-      "_\n\rMethodOptions\022C\n\024uninterpreted_option" +
-      "\030\347\007 \003(\0132$.google.protobuf.UninterpretedO",
-      "ption*\t\010\350\007\020\200\200\200\200\002\"\236\002\n\023UninterpretedOption" +
-      "\022;\n\004name\030\002 \003(\0132-.google.protobuf.Uninter" +
-      "pretedOption.NamePart\022\030\n\020identifier_valu" +
-      "e\030\003 \001(\t\022\032\n\022positive_int_value\030\004 \001(\004\022\032\n\022n" +
-      "egative_int_value\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_extension\030\002 \002(\010\"\261\001\n\016SourceCode" +
-      "Info\022:\n\010location\030\001 \003(\0132(.google.protobuf" +
-      ".SourceCodeInfo.Location\032c\n\010Location\022\020\n\004",
-      "path\030\001 \003(\005B\002\020\001\022\020\n\004span\030\002 \003(\005B\002\020\001\022\030\n\020lead" +
-      "ing_comments\030\003 \001(\t\022\031\n\021trailing_comments\030" +
-      "\004 \001(\tB)\n\023com.google.protobufB\020Descriptor" +
-      "ProtosH\001"
+      "\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"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
-      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
-        public com.google.protobuf.ExtensionRegistry assignDescriptors(
-            com.google.protobuf.Descriptors.FileDescriptor root) {
-          descriptor = root;
-          internal_static_google_protobuf_FileDescriptorSet_descriptor =
-            getDescriptor().getMessageTypes().get(0);
-          internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_FileDescriptorSet_descriptor,
-              new java.lang.String[] { "File", });
-          internal_static_google_protobuf_FileDescriptorProto_descriptor =
-            getDescriptor().getMessageTypes().get(1);
-          internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_FileDescriptorProto_descriptor,
-              new java.lang.String[] { "Name", "Package", "Dependency", "PublicDependency", "WeakDependency", "MessageType", "EnumType", "Service", "Extension", "Options", "SourceCodeInfo", });
-          internal_static_google_protobuf_DescriptorProto_descriptor =
-            getDescriptor().getMessageTypes().get(2);
-          internal_static_google_protobuf_DescriptorProto_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_DescriptorProto_descriptor,
-              new java.lang.String[] { "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "Options", });
-          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(
-              internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor,
-              new java.lang.String[] { "Start", "End", });
-          internal_static_google_protobuf_FieldDescriptorProto_descriptor =
-            getDescriptor().getMessageTypes().get(3);
-          internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_FieldDescriptorProto_descriptor,
-              new java.lang.String[] { "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "Options", });
-          internal_static_google_protobuf_EnumDescriptorProto_descriptor =
-            getDescriptor().getMessageTypes().get(4);
-          internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_EnumDescriptorProto_descriptor,
-              new java.lang.String[] { "Name", "Value", "Options", });
-          internal_static_google_protobuf_EnumValueDescriptorProto_descriptor =
-            getDescriptor().getMessageTypes().get(5);
-          internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_EnumValueDescriptorProto_descriptor,
-              new java.lang.String[] { "Name", "Number", "Options", });
-          internal_static_google_protobuf_ServiceDescriptorProto_descriptor =
-            getDescriptor().getMessageTypes().get(6);
-          internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_ServiceDescriptorProto_descriptor,
-              new java.lang.String[] { "Name", "Method", "Options", });
-          internal_static_google_protobuf_MethodDescriptorProto_descriptor =
-            getDescriptor().getMessageTypes().get(7);
-          internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_MethodDescriptorProto_descriptor,
-              new java.lang.String[] { "Name", "InputType", "OutputType", "Options", });
-          internal_static_google_protobuf_FileOptions_descriptor =
-            getDescriptor().getMessageTypes().get(8);
-          internal_static_google_protobuf_FileOptions_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_FileOptions_descriptor,
-              new java.lang.String[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "JavaGenerateEqualsAndHash", "OptimizeFor", "GoPackage", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "UninterpretedOption", });
-          internal_static_google_protobuf_MessageOptions_descriptor =
-            getDescriptor().getMessageTypes().get(9);
-          internal_static_google_protobuf_MessageOptions_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_MessageOptions_descriptor,
-              new java.lang.String[] { "MessageSetWireFormat", "NoStandardDescriptorAccessor", "UninterpretedOption", });
-          internal_static_google_protobuf_FieldOptions_descriptor =
-            getDescriptor().getMessageTypes().get(10);
-          internal_static_google_protobuf_FieldOptions_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_FieldOptions_descriptor,
-              new java.lang.String[] { "Ctype", "Packed", "Lazy", "Deprecated", "ExperimentalMapKey", "Weak", "UninterpretedOption", });
-          internal_static_google_protobuf_EnumOptions_descriptor =
-            getDescriptor().getMessageTypes().get(11);
-          internal_static_google_protobuf_EnumOptions_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_EnumOptions_descriptor,
-              new java.lang.String[] { "AllowAlias", "UninterpretedOption", });
-          internal_static_google_protobuf_EnumValueOptions_descriptor =
-            getDescriptor().getMessageTypes().get(12);
-          internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_EnumValueOptions_descriptor,
-              new java.lang.String[] { "UninterpretedOption", });
-          internal_static_google_protobuf_ServiceOptions_descriptor =
-            getDescriptor().getMessageTypes().get(13);
-          internal_static_google_protobuf_ServiceOptions_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_ServiceOptions_descriptor,
-              new java.lang.String[] { "UninterpretedOption", });
-          internal_static_google_protobuf_MethodOptions_descriptor =
-            getDescriptor().getMessageTypes().get(14);
-          internal_static_google_protobuf_MethodOptions_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_MethodOptions_descriptor,
-              new java.lang.String[] { "UninterpretedOption", });
-          internal_static_google_protobuf_UninterpretedOption_descriptor =
-            getDescriptor().getMessageTypes().get(15);
-          internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_UninterpretedOption_descriptor,
-              new java.lang.String[] { "Name", "IdentifierValue", "PositiveIntValue", "NegativeIntValue", "DoubleValue", "StringValue", "AggregateValue", });
-          internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor =
-            internal_static_google_protobuf_UninterpretedOption_descriptor.getNestedTypes().get(0);
-          internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor,
-              new java.lang.String[] { "NamePart", "IsExtension", });
-          internal_static_google_protobuf_SourceCodeInfo_descriptor =
-            getDescriptor().getMessageTypes().get(16);
-          internal_static_google_protobuf_SourceCodeInfo_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_SourceCodeInfo_descriptor,
-              new java.lang.String[] { "Location", });
-          internal_static_google_protobuf_SourceCodeInfo_Location_descriptor =
-            internal_static_google_protobuf_SourceCodeInfo_descriptor.getNestedTypes().get(0);
-          internal_static_google_protobuf_SourceCodeInfo_Location_fieldAccessorTable = new
-            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_google_protobuf_SourceCodeInfo_Location_descriptor,
-              new java.lang.String[] { "Path", "Span", "LeadingComments", "TrailingComments", });
-          return null;
-        }
-      };
+        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
+          public com.google.protobuf.ExtensionRegistry assignDescriptors(
+              com.google.protobuf.Descriptors.FileDescriptor root) {
+            descriptor = root;
+            return null;
+          }
+        };
     com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
         new com.google.protobuf.Descriptors.FileDescriptor[] {
         }, assigner);
+    internal_static_google_protobuf_FileDescriptorSet_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_FileDescriptorSet_descriptor,
+        new java.lang.String[] { "File", });
+    internal_static_google_protobuf_FileDescriptorProto_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_FileDescriptorProto_descriptor,
+        new java.lang.String[] { "Name", "Package", "Dependency", "PublicDependency", "WeakDependency", "MessageType", "EnumType", "Service", "Extension", "Options", "SourceCodeInfo", });
+    internal_static_google_protobuf_DescriptorProto_descriptor =
+      getDescriptor().getMessageTypes().get(2);
+    internal_static_google_protobuf_DescriptorProto_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_DescriptorProto_descriptor,
+        new java.lang.String[] { "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "OneofDecl", "Options", });
+    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(
+        internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor,
+        new java.lang.String[] { "Start", "End", });
+    internal_static_google_protobuf_FieldDescriptorProto_descriptor =
+      getDescriptor().getMessageTypes().get(3);
+    internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_FieldDescriptorProto_descriptor,
+        new java.lang.String[] { "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "OneofIndex", "Options", });
+    internal_static_google_protobuf_OneofDescriptorProto_descriptor =
+      getDescriptor().getMessageTypes().get(4);
+    internal_static_google_protobuf_OneofDescriptorProto_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_OneofDescriptorProto_descriptor,
+        new java.lang.String[] { "Name", });
+    internal_static_google_protobuf_EnumDescriptorProto_descriptor =
+      getDescriptor().getMessageTypes().get(5);
+    internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_EnumDescriptorProto_descriptor,
+        new java.lang.String[] { "Name", "Value", "Options", });
+    internal_static_google_protobuf_EnumValueDescriptorProto_descriptor =
+      getDescriptor().getMessageTypes().get(6);
+    internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_EnumValueDescriptorProto_descriptor,
+        new java.lang.String[] { "Name", "Number", "Options", });
+    internal_static_google_protobuf_ServiceDescriptorProto_descriptor =
+      getDescriptor().getMessageTypes().get(7);
+    internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_ServiceDescriptorProto_descriptor,
+        new java.lang.String[] { "Name", "Method", "Options", });
+    internal_static_google_protobuf_MethodDescriptorProto_descriptor =
+      getDescriptor().getMessageTypes().get(8);
+    internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_MethodDescriptorProto_descriptor,
+        new java.lang.String[] { "Name", "InputType", "OutputType", "Options", });
+    internal_static_google_protobuf_FileOptions_descriptor =
+      getDescriptor().getMessageTypes().get(9);
+    internal_static_google_protobuf_FileOptions_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_FileOptions_descriptor,
+        new java.lang.String[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "JavaGenerateEqualsAndHash", "JavaStringCheckUtf8", "OptimizeFor", "GoPackage", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "Deprecated", "UninterpretedOption", });
+    internal_static_google_protobuf_MessageOptions_descriptor =
+      getDescriptor().getMessageTypes().get(10);
+    internal_static_google_protobuf_MessageOptions_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_MessageOptions_descriptor,
+        new java.lang.String[] { "MessageSetWireFormat", "NoStandardDescriptorAccessor", "Deprecated", "UninterpretedOption", });
+    internal_static_google_protobuf_FieldOptions_descriptor =
+      getDescriptor().getMessageTypes().get(11);
+    internal_static_google_protobuf_FieldOptions_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_FieldOptions_descriptor,
+        new java.lang.String[] { "Ctype", "Packed", "Lazy", "Deprecated", "ExperimentalMapKey", "Weak", "UninterpretedOption", });
+    internal_static_google_protobuf_EnumOptions_descriptor =
+      getDescriptor().getMessageTypes().get(12);
+    internal_static_google_protobuf_EnumOptions_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_EnumOptions_descriptor,
+        new java.lang.String[] { "AllowAlias", "Deprecated", "UninterpretedOption", });
+    internal_static_google_protobuf_EnumValueOptions_descriptor =
+      getDescriptor().getMessageTypes().get(13);
+    internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_EnumValueOptions_descriptor,
+        new java.lang.String[] { "Deprecated", "UninterpretedOption", });
+    internal_static_google_protobuf_ServiceOptions_descriptor =
+      getDescriptor().getMessageTypes().get(14);
+    internal_static_google_protobuf_ServiceOptions_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_ServiceOptions_descriptor,
+        new java.lang.String[] { "Deprecated", "UninterpretedOption", });
+    internal_static_google_protobuf_MethodOptions_descriptor =
+      getDescriptor().getMessageTypes().get(15);
+    internal_static_google_protobuf_MethodOptions_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_MethodOptions_descriptor,
+        new java.lang.String[] { "Deprecated", "UninterpretedOption", });
+    internal_static_google_protobuf_UninterpretedOption_descriptor =
+      getDescriptor().getMessageTypes().get(16);
+    internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_UninterpretedOption_descriptor,
+        new java.lang.String[] { "Name", "IdentifierValue", "PositiveIntValue", "NegativeIntValue", "DoubleValue", "StringValue", "AggregateValue", });
+    internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor =
+      internal_static_google_protobuf_UninterpretedOption_descriptor.getNestedTypes().get(0);
+    internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor,
+        new java.lang.String[] { "NamePart", "IsExtension", });
+    internal_static_google_protobuf_SourceCodeInfo_descriptor =
+      getDescriptor().getMessageTypes().get(17);
+    internal_static_google_protobuf_SourceCodeInfo_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_SourceCodeInfo_descriptor,
+        new java.lang.String[] { "Location", });
+    internal_static_google_protobuf_SourceCodeInfo_Location_descriptor =
+      internal_static_google_protobuf_SourceCodeInfo_descriptor.getNestedTypes().get(0);
+    internal_static_google_protobuf_SourceCodeInfo_Location_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+        internal_static_google_protobuf_SourceCodeInfo_Location_descriptor,
+        new java.lang.String[] { "Path", "Span", "LeadingComments", "TrailingComments", });
   }
 
Index: /applications/editors/josm/plugins/pbf/gen/crosby/binary/Fileformat.java
===================================================================
--- /applications/editors/josm/plugins/pbf/gen/crosby/binary/Fileformat.java	(revision 30657)
+++ /applications/editors/josm/plugins/pbf/gen/crosby/binary/Fileformat.java	(revision 30658)
@@ -1,4 +1,4 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: src/crosby/binary/fileformat.proto
+// source: fileformat.proto
 
 package crosby.binary;
@@ -9,8 +9,8 @@
       com.google.protobuf.ExtensionRegistryLite registry) {
   }
-  public interface BlobOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // optional bytes raw = 1;
+  public interface BlobOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.Blob)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>optional bytes raw = 1;</code>
@@ -30,5 +30,4 @@
     com.google.protobuf.ByteString getRaw();
 
-    // optional int32 raw_size = 2;
     /**
      * <code>optional int32 raw_size = 2;</code>
@@ -48,5 +47,4 @@
     int getRawSize();
 
-    // optional bytes zlib_data = 3;
     /**
      * <code>optional bytes zlib_data = 3;</code>
@@ -66,5 +64,4 @@
     com.google.protobuf.ByteString getZlibData();
 
-    // optional bytes lzma_data = 4;
     /**
      * <code>optional bytes lzma_data = 4;</code>
@@ -84,5 +81,4 @@
     com.google.protobuf.ByteString getLzmaData();
 
-    // optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];
     /**
      * <code>optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];</code>
@@ -106,12 +102,13 @@
    */
   public static final class Blob extends
-      com.google.protobuf.GeneratedMessageLite
-      implements BlobOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.Blob)
+      BlobOrBuilder {
     // Use Blob.newBuilder() to construct.
     private Blob(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private Blob(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Blob(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final Blob defaultInstance;
@@ -124,4 +121,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private Blob(
         com.google.protobuf.CodedInputStream input,
@@ -130,4 +128,9 @@
       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;
@@ -139,5 +142,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -178,4 +181,11 @@
             e.getMessage()).setUnfinishedMessage(this);
       } finally {
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
+        }
         makeExtensionsImmutable();
       }
@@ -197,5 +207,4 @@
 
     private int bitField0_;
-    // optional bytes raw = 1;
     public static final int RAW_FIELD_NUMBER = 1;
     private com.google.protobuf.ByteString raw_;
@@ -221,5 +230,4 @@
     }
 
-    // optional int32 raw_size = 2;
     public static final int RAW_SIZE_FIELD_NUMBER = 2;
     private int rawSize_;
@@ -245,5 +253,4 @@
     }
 
-    // optional bytes zlib_data = 3;
     public static final int ZLIB_DATA_FIELD_NUMBER = 3;
     private com.google.protobuf.ByteString zlibData_;
@@ -269,5 +276,4 @@
     }
 
-    // optional bytes lzma_data = 4;
     public static final int LZMA_DATA_FIELD_NUMBER = 4;
     private com.google.protobuf.ByteString lzmaData_;
@@ -293,5 +299,4 @@
     }
 
-    // optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];
     public static final int OBSOLETE_BZIP2_DATA_FIELD_NUMBER = 5;
     private com.google.protobuf.ByteString oBSOLETEBzip2Data_;
@@ -327,5 +332,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       memoizedIsInitialized = 1;
@@ -351,4 +357,5 @@
         output.writeBytes(5, oBSOLETEBzip2Data_);
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -379,4 +386,5 @@
           .computeBytesSize(5, oBSOLETEBzip2Data_);
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -456,5 +464,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Fileformat.Blob, Builder>
-        implements crosby.binary.Fileformat.BlobOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.Blob)
+        crosby.binary.Fileformat.BlobOrBuilder {
       // Construct using crosby.binary.Fileformat.Blob.newBuilder()
       private Builder() {
@@ -544,4 +554,6 @@
           setOBSOLETEBzip2Data(other.getOBSOLETEBzip2Data());
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -570,5 +582,4 @@
       private int bitField0_;
 
-      // optional bytes raw = 1;
       private com.google.protobuf.ByteString raw_ = com.google.protobuf.ByteString.EMPTY;
       /**
@@ -622,5 +633,4 @@
       }
 
-      // optional int32 raw_size = 2;
       private int rawSize_ ;
       /**
@@ -671,5 +681,4 @@
       }
 
-      // optional bytes zlib_data = 3;
       private com.google.protobuf.ByteString zlibData_ = com.google.protobuf.ByteString.EMPTY;
       /**
@@ -723,5 +732,4 @@
       }
 
-      // optional bytes lzma_data = 4;
       private com.google.protobuf.ByteString lzmaData_ = com.google.protobuf.ByteString.EMPTY;
       /**
@@ -775,5 +783,4 @@
       }
 
-      // optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true];
       private com.google.protobuf.ByteString oBSOLETEBzip2Data_ = com.google.protobuf.ByteString.EMPTY;
       /**
@@ -838,8 +845,8 @@
   }
 
-  public interface BlobHeaderOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // required string type = 1;
+  public interface BlobHeaderOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.BlobHeader)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>required string type = 1;</code>
@@ -856,5 +863,4 @@
         getTypeBytes();
 
-    // optional bytes indexdata = 2;
     /**
      * <code>optional bytes indexdata = 2;</code>
@@ -866,5 +872,4 @@
     com.google.protobuf.ByteString getIndexdata();
 
-    // required int32 datasize = 3;
     /**
      * <code>required int32 datasize = 3;</code>
@@ -880,12 +885,13 @@
    */
   public static final class BlobHeader extends
-      com.google.protobuf.GeneratedMessageLite
-      implements BlobHeaderOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.BlobHeader)
+      BlobHeaderOrBuilder {
     // Use BlobHeader.newBuilder() to construct.
     private BlobHeader(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private BlobHeader(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private BlobHeader(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final BlobHeader defaultInstance;
@@ -898,4 +904,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private BlobHeader(
         com.google.protobuf.CodedInputStream input,
@@ -904,4 +911,9 @@
       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;
@@ -913,5 +925,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -920,6 +932,7 @@
             }
             case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000001;
-              type_ = input.readBytes();
+              type_ = bs;
               break;
             }
@@ -942,4 +955,11 @@
             e.getMessage()).setUnfinishedMessage(this);
       } finally {
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
+        }
         makeExtensionsImmutable();
       }
@@ -961,5 +981,4 @@
 
     private int bitField0_;
-    // required string type = 1;
     public static final int TYPE_FIELD_NUMBER = 1;
     private java.lang.Object type_;
@@ -1004,5 +1023,4 @@
     }
 
-    // optional bytes indexdata = 2;
     public static final int INDEXDATA_FIELD_NUMBER = 2;
     private com.google.protobuf.ByteString indexdata_;
@@ -1020,5 +1038,4 @@
     }
 
-    // required int32 datasize = 3;
     public static final int DATASIZE_FIELD_NUMBER = 3;
     private int datasize_;
@@ -1044,5 +1061,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       if (!hasType()) {
@@ -1070,4 +1088,5 @@
         output.writeInt32(3, datasize_);
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -1090,4 +1109,5 @@
           .computeInt32Size(3, datasize_);
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -1167,5 +1187,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Fileformat.BlobHeader, Builder>
-        implements crosby.binary.Fileformat.BlobHeaderOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.BlobHeader)
+        crosby.binary.Fileformat.BlobHeaderOrBuilder {
       // Construct using crosby.binary.Fileformat.BlobHeader.newBuilder()
       private Builder() {
@@ -1239,4 +1261,6 @@
           setDatasize(other.getDatasize());
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -1273,5 +1297,4 @@
       private int bitField0_;
 
-      // required string type = 1;
       private java.lang.Object type_ = "";
       /**
@@ -1287,7 +1310,10 @@
         java.lang.Object ref = type_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          type_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            type_ = s;
+          }
           return s;
         } else {
@@ -1347,5 +1373,4 @@
       }
 
-      // optional bytes indexdata = 2;
       private com.google.protobuf.ByteString indexdata_ = com.google.protobuf.ByteString.EMPTY;
       /**
@@ -1383,5 +1408,4 @@
       }
 
-      // required int32 datasize = 3;
       private int datasize_ ;
       /**
Index: /applications/editors/josm/plugins/pbf/gen/crosby/binary/Osmformat.java
===================================================================
--- /applications/editors/josm/plugins/pbf/gen/crosby/binary/Osmformat.java	(revision 30657)
+++ /applications/editors/josm/plugins/pbf/gen/crosby/binary/Osmformat.java	(revision 30658)
@@ -1,4 +1,4 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: src/crosby/binary/osmformat.proto
+// source: osmformat.proto
 
 package crosby.binary;
@@ -9,8 +9,8 @@
       com.google.protobuf.ExtensionRegistryLite registry) {
   }
-  public interface HeaderBlockOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // optional .OSMPBF.HeaderBBox bbox = 1;
+  public interface HeaderBlockOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.HeaderBlock)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>optional .OSMPBF.HeaderBBox bbox = 1;</code>
@@ -22,5 +22,4 @@
     crosby.binary.Osmformat.HeaderBBox getBbox();
 
-    // repeated string required_features = 4;
     /**
      * <code>repeated string required_features = 4;</code>
@@ -30,6 +29,6 @@
      * </pre>
      */
-    java.util.List<java.lang.String>
-    getRequiredFeaturesList();
+    com.google.protobuf.ProtocolStringList
+        getRequiredFeaturesList();
     /**
      * <code>repeated string required_features = 4;</code>
@@ -58,10 +57,9 @@
         getRequiredFeaturesBytes(int index);
 
-    // repeated string optional_features = 5;
     /**
      * <code>repeated string optional_features = 5;</code>
      */
-    java.util.List<java.lang.String>
-    getOptionalFeaturesList();
+    com.google.protobuf.ProtocolStringList
+        getOptionalFeaturesList();
     /**
      * <code>repeated string optional_features = 5;</code>
@@ -78,5 +76,4 @@
         getOptionalFeaturesBytes(int index);
 
-    // optional string writingprogram = 16;
     /**
      * <code>optional string writingprogram = 16;</code>
@@ -93,5 +90,4 @@
         getWritingprogramBytes();
 
-    // optional string source = 17;
     /**
      * <code>optional string source = 17;</code>
@@ -120,5 +116,4 @@
         getSourceBytes();
 
-    // optional int64 osmosis_replication_timestamp = 32;
     /**
      * <code>optional int64 osmosis_replication_timestamp = 32;</code>
@@ -142,5 +137,4 @@
     long getOsmosisReplicationTimestamp();
 
-    // optional int64 osmosis_replication_sequence_number = 33;
     /**
      * <code>optional int64 osmosis_replication_sequence_number = 33;</code>
@@ -160,5 +154,4 @@
     long getOsmosisReplicationSequenceNumber();
 
-    // optional string osmosis_replication_base_url = 34;
     /**
      * <code>optional string osmosis_replication_base_url = 34;</code>
@@ -191,12 +184,13 @@
    */
   public static final class HeaderBlock extends
-      com.google.protobuf.GeneratedMessageLite
-      implements HeaderBlockOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.HeaderBlock)
+      HeaderBlockOrBuilder {
     // Use HeaderBlock.newBuilder() to construct.
     private HeaderBlock(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private HeaderBlock(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private HeaderBlock(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final HeaderBlock defaultInstance;
@@ -209,4 +203,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private HeaderBlock(
         com.google.protobuf.CodedInputStream input,
@@ -215,4 +210,9 @@
       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;
@@ -224,5 +224,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -244,27 +244,31 @@
             }
             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(input.readBytes());
+              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(input.readBytes());
+              optionalFeatures_.add(bs);
               break;
             }
             case 130: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000002;
-              writingprogram_ = input.readBytes();
+              writingprogram_ = bs;
               break;
             }
             case 138: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000004;
-              source_ = input.readBytes();
+              source_ = bs;
               break;
             }
@@ -280,6 +284,7 @@
             }
             case 274: {
+              com.google.protobuf.ByteString bs = input.readBytes();
               bitField0_ |= 0x00000020;
-              osmosisReplicationBaseUrl_ = input.readBytes();
+              osmosisReplicationBaseUrl_ = bs;
               break;
             }
@@ -293,8 +298,15 @@
       } finally {
         if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-          requiredFeatures_ = new com.google.protobuf.UnmodifiableLazyStringList(requiredFeatures_);
+          requiredFeatures_ = requiredFeatures_.getUnmodifiableView();
         }
         if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-          optionalFeatures_ = new com.google.protobuf.UnmodifiableLazyStringList(optionalFeatures_);
+          optionalFeatures_ = optionalFeatures_.getUnmodifiableView();
+        }
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
         }
         makeExtensionsImmutable();
@@ -317,5 +329,4 @@
 
     private int bitField0_;
-    // optional .OSMPBF.HeaderBBox bbox = 1;
     public static final int BBOX_FIELD_NUMBER = 1;
     private crosby.binary.Osmformat.HeaderBBox bbox_;
@@ -333,5 +344,4 @@
     }
 
-    // repeated string required_features = 4;
     public static final int REQUIRED_FEATURES_FIELD_NUMBER = 4;
     private com.google.protobuf.LazyStringList requiredFeatures_;
@@ -343,5 +353,5 @@
      * </pre>
      */
-    public java.util.List<java.lang.String>
+    public com.google.protobuf.ProtocolStringList
         getRequiredFeaturesList() {
       return requiredFeatures_;
@@ -379,5 +389,4 @@
     }
 
-    // repeated string optional_features = 5;
     public static final int OPTIONAL_FEATURES_FIELD_NUMBER = 5;
     private com.google.protobuf.LazyStringList optionalFeatures_;
@@ -385,5 +394,5 @@
      * <code>repeated string optional_features = 5;</code>
      */
-    public java.util.List<java.lang.String>
+    public com.google.protobuf.ProtocolStringList
         getOptionalFeaturesList() {
       return optionalFeatures_;
@@ -409,5 +418,4 @@
     }
 
-    // optional string writingprogram = 16;
     public static final int WRITINGPROGRAM_FIELD_NUMBER = 16;
     private java.lang.Object writingprogram_;
@@ -452,5 +460,4 @@
     }
 
-    // optional string source = 17;
     public static final int SOURCE_FIELD_NUMBER = 17;
     private java.lang.Object source_;
@@ -507,5 +514,4 @@
     }
 
-    // optional int64 osmosis_replication_timestamp = 32;
     public static final int OSMOSIS_REPLICATION_TIMESTAMP_FIELD_NUMBER = 32;
     private long osmosisReplicationTimestamp_;
@@ -535,5 +541,4 @@
     }
 
-    // optional int64 osmosis_replication_sequence_number = 33;
     public static final int OSMOSIS_REPLICATION_SEQUENCE_NUMBER_FIELD_NUMBER = 33;
     private long osmosisReplicationSequenceNumber_;
@@ -559,5 +564,4 @@
     }
 
-    // optional string osmosis_replication_base_url = 34;
     public static final int OSMOSIS_REPLICATION_BASE_URL_FIELD_NUMBER = 34;
     private java.lang.Object osmosisReplicationBaseUrl_;
@@ -627,5 +631,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       if (hasBbox()) {
@@ -666,4 +671,5 @@
         output.writeBytes(34, getOsmosisReplicationBaseUrlBytes());
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -716,4 +722,5 @@
           .computeBytesSize(34, getOsmosisReplicationBaseUrlBytes());
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -793,5 +800,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Osmformat.HeaderBlock, Builder>
-        implements crosby.binary.Osmformat.HeaderBlockOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.HeaderBlock)
+        crosby.binary.Osmformat.HeaderBlockOrBuilder {
       // Construct using crosby.binary.Osmformat.HeaderBlock.newBuilder()
       private Builder() {
@@ -851,12 +860,10 @@
         result.bbox_ = bbox_;
         if (((bitField0_ & 0x00000002) == 0x00000002)) {
-          requiredFeatures_ = new com.google.protobuf.UnmodifiableLazyStringList(
-              requiredFeatures_);
+          requiredFeatures_ = requiredFeatures_.getUnmodifiableView();
           bitField0_ = (bitField0_ & ~0x00000002);
         }
         result.requiredFeatures_ = requiredFeatures_;
         if (((bitField0_ & 0x00000004) == 0x00000004)) {
-          optionalFeatures_ = new com.google.protobuf.UnmodifiableLazyStringList(
-              optionalFeatures_);
+          optionalFeatures_ = optionalFeatures_.getUnmodifiableView();
           bitField0_ = (bitField0_ & ~0x00000004);
         }
@@ -932,4 +939,6 @@
           
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -964,5 +973,4 @@
       private int bitField0_;
 
-      // optional .OSMPBF.HeaderBBox bbox = 1;
       private crosby.binary.Osmformat.HeaderBBox bbox_ = crosby.binary.Osmformat.HeaderBBox.getDefaultInstance();
       /**
@@ -1025,5 +1033,4 @@
       }
 
-      // repeated string required_features = 4;
       private com.google.protobuf.LazyStringList requiredFeatures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
       private void ensureRequiredFeaturesIsMutable() {
@@ -1040,7 +1047,7 @@
        * </pre>
        */
-      public java.util.List<java.lang.String>
+      public com.google.protobuf.ProtocolStringList
           getRequiredFeaturesList() {
-        return java.util.Collections.unmodifiableList(requiredFeatures_);
+        return requiredFeatures_.getUnmodifiableView();
       }
       /**
@@ -1119,5 +1126,6 @@
           java.lang.Iterable<java.lang.String> values) {
         ensureRequiredFeaturesIsMutable();
-        super.addAll(values, requiredFeatures_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, requiredFeatures_);
         
         return this;
@@ -1154,5 +1162,4 @@
       }
 
-      // repeated string optional_features = 5;
       private com.google.protobuf.LazyStringList optionalFeatures_ = com.google.protobuf.LazyStringArrayList.EMPTY;
       private void ensureOptionalFeaturesIsMutable() {
@@ -1165,7 +1172,7 @@
        * <code>repeated string optional_features = 5;</code>
        */
-      public java.util.List<java.lang.String>
+      public com.google.protobuf.ProtocolStringList
           getOptionalFeaturesList() {
-        return java.util.Collections.unmodifiableList(optionalFeatures_);
+        return optionalFeatures_.getUnmodifiableView();
       }
       /**
@@ -1220,5 +1227,6 @@
           java.lang.Iterable<java.lang.String> values) {
         ensureOptionalFeaturesIsMutable();
-        super.addAll(values, optionalFeatures_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, optionalFeatures_);
         
         return this;
@@ -1247,5 +1255,4 @@
       }
 
-      // optional string writingprogram = 16;
       private java.lang.Object writingprogram_ = "";
       /**
@@ -1261,7 +1268,10 @@
         java.lang.Object ref = writingprogram_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          writingprogram_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            writingprogram_ = s;
+          }
           return s;
         } else {
@@ -1321,5 +1331,4 @@
       }
 
-      // optional string source = 17;
       private java.lang.Object source_ = "";
       /**
@@ -1343,7 +1352,10 @@
         java.lang.Object ref = source_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          source_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            source_ = s;
+          }
           return s;
         } else {
@@ -1419,5 +1431,4 @@
       }
 
-      // optional int64 osmosis_replication_timestamp = 32;
       private long osmosisReplicationTimestamp_ ;
       /**
@@ -1476,5 +1487,4 @@
       }
 
-      // optional int64 osmosis_replication_sequence_number = 33;
       private long osmosisReplicationSequenceNumber_ ;
       /**
@@ -1525,5 +1535,4 @@
       }
 
-      // optional string osmosis_replication_base_url = 34;
       private java.lang.Object osmosisReplicationBaseUrl_ = "";
       /**
@@ -1547,7 +1556,10 @@
         java.lang.Object ref = osmosisReplicationBaseUrl_;
         if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          osmosisReplicationBaseUrl_ = s;
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            osmosisReplicationBaseUrl_ = s;
+          }
           return s;
         } else {
@@ -1634,8 +1646,8 @@
   }
 
-  public interface HeaderBBoxOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // required sint64 left = 1;
+  public interface HeaderBBoxOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.HeaderBBox)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>required sint64 left = 1;</code>
@@ -1647,5 +1659,4 @@
     long getLeft();
 
-    // required sint64 right = 2;
     /**
      * <code>required sint64 right = 2;</code>
@@ -1657,5 +1668,4 @@
     long getRight();
 
-    // required sint64 top = 3;
     /**
      * <code>required sint64 top = 3;</code>
@@ -1667,5 +1677,4 @@
     long getTop();
 
-    // required sint64 bottom = 4;
     /**
      * <code>required sint64 bottom = 4;</code>
@@ -1681,12 +1690,13 @@
    */
   public static final class HeaderBBox extends
-      com.google.protobuf.GeneratedMessageLite
-      implements HeaderBBoxOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.HeaderBBox)
+      HeaderBBoxOrBuilder {
     // Use HeaderBBox.newBuilder() to construct.
     private HeaderBBox(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private HeaderBBox(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private HeaderBBox(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final HeaderBBox defaultInstance;
@@ -1699,4 +1709,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private HeaderBBox(
         com.google.protobuf.CodedInputStream input,
@@ -1705,4 +1716,9 @@
       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;
@@ -1714,5 +1730,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -1748,4 +1764,11 @@
             e.getMessage()).setUnfinishedMessage(this);
       } finally {
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
+        }
         makeExtensionsImmutable();
       }
@@ -1767,5 +1790,4 @@
 
     private int bitField0_;
-    // required sint64 left = 1;
     public static final int LEFT_FIELD_NUMBER = 1;
     private long left_;
@@ -1783,5 +1805,4 @@
     }
 
-    // required sint64 right = 2;
     public static final int RIGHT_FIELD_NUMBER = 2;
     private long right_;
@@ -1799,5 +1820,4 @@
     }
 
-    // required sint64 top = 3;
     public static final int TOP_FIELD_NUMBER = 3;
     private long top_;
@@ -1815,5 +1835,4 @@
     }
 
-    // required sint64 bottom = 4;
     public static final int BOTTOM_FIELD_NUMBER = 4;
     private long bottom_;
@@ -1840,5 +1859,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       if (!hasLeft()) {
@@ -1877,4 +1897,5 @@
         output.writeSInt64(4, bottom_);
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -1901,4 +1922,5 @@
           .computeSInt64Size(4, bottom_);
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -1978,5 +2000,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Osmformat.HeaderBBox, Builder>
-        implements crosby.binary.Osmformat.HeaderBBoxOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.HeaderBBox)
+        crosby.binary.Osmformat.HeaderBBoxOrBuilder {
       // Construct using crosby.binary.Osmformat.HeaderBBox.newBuilder()
       private Builder() {
@@ -2057,4 +2081,6 @@
           setBottom(other.getBottom());
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -2099,5 +2125,4 @@
       private int bitField0_;
 
-      // required sint64 left = 1;
       private long left_ ;
       /**
@@ -2132,5 +2157,4 @@
       }
 
-      // required sint64 right = 2;
       private long right_ ;
       /**
@@ -2165,5 +2189,4 @@
       }
 
-      // required sint64 top = 3;
       private long top_ ;
       /**
@@ -2198,5 +2221,4 @@
       }
 
-      // required sint64 bottom = 4;
       private long bottom_ ;
       /**
@@ -2242,8 +2264,8 @@
   }
 
-  public interface PrimitiveBlockOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // required .OSMPBF.StringTable stringtable = 1;
+  public interface PrimitiveBlockOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.PrimitiveBlock)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>required .OSMPBF.StringTable stringtable = 1;</code>
@@ -2255,5 +2277,4 @@
     crosby.binary.Osmformat.StringTable getStringtable();
 
-    // repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;
     /**
      * <code>repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;</code>
@@ -2270,5 +2291,4 @@
     int getPrimitivegroupCount();
 
-    // optional int32 granularity = 17 [default = 100];
     /**
      * <code>optional int32 granularity = 17 [default = 100];</code>
@@ -2288,5 +2308,4 @@
     int getGranularity();
 
-    // optional int64 lat_offset = 19 [default = 0];
     /**
      * <code>optional int64 lat_offset = 19 [default = 0];</code>
@@ -2306,5 +2325,4 @@
     long getLatOffset();
 
-    // optional int64 lon_offset = 20 [default = 0];
     /**
      * <code>optional int64 lon_offset = 20 [default = 0];</code>
@@ -2316,5 +2334,4 @@
     long getLonOffset();
 
-    // optional int32 date_granularity = 18 [default = 1000];
     /**
      * <code>optional int32 date_granularity = 18 [default = 1000];</code>
@@ -2338,12 +2355,13 @@
    */
   public static final class PrimitiveBlock extends
-      com.google.protobuf.GeneratedMessageLite
-      implements PrimitiveBlockOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.PrimitiveBlock)
+      PrimitiveBlockOrBuilder {
     // Use PrimitiveBlock.newBuilder() to construct.
     private PrimitiveBlock(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private PrimitiveBlock(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private PrimitiveBlock(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final PrimitiveBlock defaultInstance;
@@ -2356,4 +2374,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private PrimitiveBlock(
         com.google.protobuf.CodedInputStream input,
@@ -2362,4 +2381,9 @@
       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;
@@ -2371,5 +2395,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -2429,4 +2453,11 @@
           primitivegroup_ = java.util.Collections.unmodifiableList(primitivegroup_);
         }
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
+        }
         makeExtensionsImmutable();
       }
@@ -2448,5 +2479,4 @@
 
     private int bitField0_;
-    // required .OSMPBF.StringTable stringtable = 1;
     public static final int STRINGTABLE_FIELD_NUMBER = 1;
     private crosby.binary.Osmformat.StringTable stringtable_;
@@ -2464,5 +2494,4 @@
     }
 
-    // repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;
     public static final int PRIMITIVEGROUP_FIELD_NUMBER = 2;
     private java.util.List<crosby.binary.Osmformat.PrimitiveGroup> primitivegroup_;
@@ -2500,5 +2529,4 @@
     }
 
-    // optional int32 granularity = 17 [default = 100];
     public static final int GRANULARITY_FIELD_NUMBER = 17;
     private int granularity_;
@@ -2524,5 +2552,4 @@
     }
 
-    // optional int64 lat_offset = 19 [default = 0];
     public static final int LAT_OFFSET_FIELD_NUMBER = 19;
     private long latOffset_;
@@ -2548,5 +2575,4 @@
     }
 
-    // optional int64 lon_offset = 20 [default = 0];
     public static final int LON_OFFSET_FIELD_NUMBER = 20;
     private long lonOffset_;
@@ -2564,5 +2590,4 @@
     }
 
-    // optional int32 date_granularity = 18 [default = 1000];
     public static final int DATE_GRANULARITY_FIELD_NUMBER = 18;
     private int dateGranularity_;
@@ -2599,5 +2624,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       if (!hasStringtable()) {
@@ -2636,4 +2662,5 @@
         output.writeInt64(20, lonOffset_);
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -2668,4 +2695,5 @@
           .computeInt64Size(20, lonOffset_);
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -2745,5 +2773,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Osmformat.PrimitiveBlock, Builder>
-        implements crosby.binary.Osmformat.PrimitiveBlockOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.PrimitiveBlock)
+        crosby.binary.Osmformat.PrimitiveBlockOrBuilder {
       // Construct using crosby.binary.Osmformat.PrimitiveBlock.newBuilder()
       private Builder() {
@@ -2850,4 +2880,6 @@
           setDateGranularity(other.getDateGranularity());
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -2886,5 +2918,4 @@
       private int bitField0_;
 
-      // required .OSMPBF.StringTable stringtable = 1;
       private crosby.binary.Osmformat.StringTable stringtable_ = crosby.binary.Osmformat.StringTable.getDefaultInstance();
       /**
@@ -2947,5 +2978,4 @@
       }
 
-      // repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;
       private java.util.List<crosby.binary.Osmformat.PrimitiveGroup> primitivegroup_ =
         java.util.Collections.emptyList();
@@ -3049,5 +3079,6 @@
           java.lang.Iterable<? extends crosby.binary.Osmformat.PrimitiveGroup> values) {
         ensurePrimitivegroupIsMutable();
-        super.addAll(values, primitivegroup_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, primitivegroup_);
 
         return this;
@@ -3072,5 +3103,4 @@
       }
 
-      // optional int32 granularity = 17 [default = 100];
       private int granularity_ = 100;
       /**
@@ -3121,5 +3151,4 @@
       }
 
-      // optional int64 lat_offset = 19 [default = 0];
       private long latOffset_ ;
       /**
@@ -3170,5 +3199,4 @@
       }
 
-      // optional int64 lon_offset = 20 [default = 0];
       private long lonOffset_ ;
       /**
@@ -3203,5 +3231,4 @@
       }
 
-      // optional int32 date_granularity = 18 [default = 1000];
       private int dateGranularity_ = 1000;
       /**
@@ -3263,8 +3290,8 @@
   }
 
-  public interface PrimitiveGroupOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // repeated .OSMPBF.Node nodes = 1;
+  public interface PrimitiveGroupOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.PrimitiveGroup)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>repeated .OSMPBF.Node nodes = 1;</code>
@@ -3281,5 +3308,4 @@
     int getNodesCount();
 
-    // optional .OSMPBF.DenseNodes dense = 2;
     /**
      * <code>optional .OSMPBF.DenseNodes dense = 2;</code>
@@ -3291,5 +3317,4 @@
     crosby.binary.Osmformat.DenseNodes getDense();
 
-    // repeated .OSMPBF.Way ways = 3;
     /**
      * <code>repeated .OSMPBF.Way ways = 3;</code>
@@ -3306,5 +3331,4 @@
     int getWaysCount();
 
-    // repeated .OSMPBF.Relation relations = 4;
     /**
      * <code>repeated .OSMPBF.Relation relations = 4;</code>
@@ -3321,5 +3345,4 @@
     int getRelationsCount();
 
-    // repeated .OSMPBF.ChangeSet changesets = 5;
     /**
      * <code>repeated .OSMPBF.ChangeSet changesets = 5;</code>
@@ -3344,12 +3367,13 @@
    */
   public static final class PrimitiveGroup extends
-      com.google.protobuf.GeneratedMessageLite
-      implements PrimitiveGroupOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.PrimitiveGroup)
+      PrimitiveGroupOrBuilder {
     // Use PrimitiveGroup.newBuilder() to construct.
     private PrimitiveGroup(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private PrimitiveGroup(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private PrimitiveGroup(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final PrimitiveGroup defaultInstance;
@@ -3362,4 +3386,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private PrimitiveGroup(
         com.google.protobuf.CodedInputStream input,
@@ -3368,4 +3393,9 @@
       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;
@@ -3377,5 +3407,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -3448,4 +3478,11 @@
           changesets_ = java.util.Collections.unmodifiableList(changesets_);
         }
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
+        }
         makeExtensionsImmutable();
       }
@@ -3467,5 +3504,4 @@
 
     private int bitField0_;
-    // repeated .OSMPBF.Node nodes = 1;
     public static final int NODES_FIELD_NUMBER = 1;
     private java.util.List<crosby.binary.Osmformat.Node> nodes_;
@@ -3503,5 +3539,4 @@
     }
 
-    // optional .OSMPBF.DenseNodes dense = 2;
     public static final int DENSE_FIELD_NUMBER = 2;
     private crosby.binary.Osmformat.DenseNodes dense_;
@@ -3519,5 +3554,4 @@
     }
 
-    // repeated .OSMPBF.Way ways = 3;
     public static final int WAYS_FIELD_NUMBER = 3;
     private java.util.List<crosby.binary.Osmformat.Way> ways_;
@@ -3555,5 +3589,4 @@
     }
 
-    // repeated .OSMPBF.Relation relations = 4;
     public static final int RELATIONS_FIELD_NUMBER = 4;
     private java.util.List<crosby.binary.Osmformat.Relation> relations_;
@@ -3591,5 +3624,4 @@
     }
 
-    // repeated .OSMPBF.ChangeSet changesets = 5;
     public static final int CHANGESETS_FIELD_NUMBER = 5;
     private java.util.List<crosby.binary.Osmformat.ChangeSet> changesets_;
@@ -3637,5 +3669,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       for (int i = 0; i < getNodesCount(); i++) {
@@ -3685,4 +3718,5 @@
         output.writeMessage(5, changesets_.get(i));
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -3713,4 +3747,5 @@
           .computeMessageSize(5, changesets_.get(i));
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -3794,5 +3829,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Osmformat.PrimitiveGroup, Builder>
-        implements crosby.binary.Osmformat.PrimitiveGroupOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.PrimitiveGroup)
+        crosby.binary.Osmformat.PrimitiveGroupOrBuilder {
       // Construct using crosby.binary.Osmformat.PrimitiveGroup.newBuilder()
       private Builder() {
@@ -3914,4 +3951,6 @@
           
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -3964,5 +4003,4 @@
       private int bitField0_;
 
-      // repeated .OSMPBF.Node nodes = 1;
       private java.util.List<crosby.binary.Osmformat.Node> nodes_ =
         java.util.Collections.emptyList();
@@ -4066,5 +4104,6 @@
           java.lang.Iterable<? extends crosby.binary.Osmformat.Node> values) {
         ensureNodesIsMutable();
-        super.addAll(values, nodes_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, nodes_);
 
         return this;
@@ -4089,5 +4128,4 @@
       }
 
-      // optional .OSMPBF.DenseNodes dense = 2;
       private crosby.binary.Osmformat.DenseNodes dense_ = crosby.binary.Osmformat.DenseNodes.getDefaultInstance();
       /**
@@ -4150,5 +4188,4 @@
       }
 
-      // repeated .OSMPBF.Way ways = 3;
       private java.util.List<crosby.binary.Osmformat.Way> ways_ =
         java.util.Collections.emptyList();
@@ -4252,5 +4289,6 @@
           java.lang.Iterable<? extends crosby.binary.Osmformat.Way> values) {
         ensureWaysIsMutable();
-        super.addAll(values, ways_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, ways_);
 
         return this;
@@ -4275,5 +4313,4 @@
       }
 
-      // repeated .OSMPBF.Relation relations = 4;
       private java.util.List<crosby.binary.Osmformat.Relation> relations_ =
         java.util.Collections.emptyList();
@@ -4377,5 +4414,6 @@
           java.lang.Iterable<? extends crosby.binary.Osmformat.Relation> values) {
         ensureRelationsIsMutable();
-        super.addAll(values, relations_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, relations_);
 
         return this;
@@ -4400,5 +4438,4 @@
       }
 
-      // repeated .OSMPBF.ChangeSet changesets = 5;
       private java.util.List<crosby.binary.Osmformat.ChangeSet> changesets_ =
         java.util.Collections.emptyList();
@@ -4502,5 +4539,6 @@
           java.lang.Iterable<? extends crosby.binary.Osmformat.ChangeSet> values) {
         ensureChangesetsIsMutable();
-        super.addAll(values, changesets_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, changesets_);
 
         return this;
@@ -4536,8 +4574,8 @@
   }
 
-  public interface StringTableOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // repeated bytes s = 1;
+  public interface StringTableOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.StringTable)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>repeated bytes s = 1;</code>
@@ -4558,5 +4596,4 @@
    * <pre>
    ** String table, contains the common strings in each block.
-   *
    *Note that we reserve index '0' as a delimiter, so the entry at that
    *index in the table is ALWAYS blank and unused.
@@ -4564,12 +4601,13 @@
    */
   public static final class StringTable extends
-      com.google.protobuf.GeneratedMessageLite
-      implements StringTableOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.StringTable)
+      StringTableOrBuilder {
     // Use StringTable.newBuilder() to construct.
     private StringTable(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private StringTable(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private StringTable(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final StringTable defaultInstance;
@@ -4582,4 +4620,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private StringTable(
         com.google.protobuf.CodedInputStream input,
@@ -4588,4 +4627,9 @@
       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;
@@ -4597,5 +4641,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -4622,4 +4666,11 @@
           s_ = java.util.Collections.unmodifiableList(s_);
         }
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
+        }
         makeExtensionsImmutable();
       }
@@ -4640,5 +4691,4 @@
     }
 
-    // repeated bytes s = 1;
     public static final int S_FIELD_NUMBER = 1;
     private java.util.List<com.google.protobuf.ByteString> s_;
@@ -4669,5 +4719,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       memoizedIsInitialized = 1;
@@ -4681,4 +4732,5 @@
         output.writeBytes(1, s_.get(i));
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -4698,4 +4750,5 @@
         size += 1 * getSList().size();
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -4774,5 +4827,4 @@
      * <pre>
      ** String table, contains the common strings in each block.
-     *
      *Note that we reserve index '0' as a delimiter, so the entry at that
      *index in the table is ALWAYS blank and unused.
@@ -4782,5 +4834,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Osmformat.StringTable, Builder>
-        implements crosby.binary.Osmformat.StringTableOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.StringTable)
+        crosby.binary.Osmformat.StringTableOrBuilder {
       // Construct using crosby.binary.Osmformat.StringTable.newBuilder()
       private Builder() {
@@ -4840,4 +4894,6 @@
           
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -4866,5 +4922,4 @@
       private int bitField0_;
 
-      // repeated bytes s = 1;
       private java.util.List<com.google.protobuf.ByteString> s_ = java.util.Collections.emptyList();
       private void ensureSIsMutable() {
@@ -4924,5 +4979,6 @@
           java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
         ensureSIsMutable();
-        super.addAll(values, s_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, s_);
         
         return this;
@@ -4949,8 +5005,8 @@
   }
 
-  public interface InfoOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // optional int32 version = 1 [default = -1];
+  public interface InfoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.Info)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>optional int32 version = 1 [default = -1];</code>
@@ -4962,5 +5018,4 @@
     int getVersion();
 
-    // optional int64 timestamp = 2;
     /**
      * <code>optional int64 timestamp = 2;</code>
@@ -4972,5 +5027,4 @@
     long getTimestamp();
 
-    // optional int64 changeset = 3;
     /**
      * <code>optional int64 changeset = 3;</code>
@@ -4982,5 +5036,4 @@
     long getChangeset();
 
-    // optional int32 uid = 4;
     /**
      * <code>optional int32 uid = 4;</code>
@@ -4992,5 +5045,4 @@
     int getUid();
 
-    // optional uint32 user_sid = 5;
     /**
      * <code>optional uint32 user_sid = 5;</code>
@@ -5010,5 +5062,4 @@
     int getUserSid();
 
-    // optional bool visible = 6;
     /**
      * <code>optional bool visible = 6;</code>
@@ -5050,12 +5101,13 @@
    */
   public static final class Info extends
-      com.google.protobuf.GeneratedMessageLite
-      implements InfoOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.Info)
+      InfoOrBuilder {
     // Use Info.newBuilder() to construct.
     private Info(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private Info(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Info(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final Info defaultInstance;
@@ -5068,4 +5120,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private Info(
         com.google.protobuf.CodedInputStream input,
@@ -5074,4 +5127,9 @@
       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;
@@ -5083,5 +5141,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -5127,4 +5185,11 @@
             e.getMessage()).setUnfinishedMessage(this);
       } finally {
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
+        }
         makeExtensionsImmutable();
       }
@@ -5146,5 +5211,4 @@
 
     private int bitField0_;
-    // optional int32 version = 1 [default = -1];
     public static final int VERSION_FIELD_NUMBER = 1;
     private int version_;
@@ -5162,5 +5226,4 @@
     }
 
-    // optional int64 timestamp = 2;
     public static final int TIMESTAMP_FIELD_NUMBER = 2;
     private long timestamp_;
@@ -5178,5 +5241,4 @@
     }
 
-    // optional int64 changeset = 3;
     public static final int CHANGESET_FIELD_NUMBER = 3;
     private long changeset_;
@@ -5194,5 +5256,4 @@
     }
 
-    // optional int32 uid = 4;
     public static final int UID_FIELD_NUMBER = 4;
     private int uid_;
@@ -5210,5 +5271,4 @@
     }
 
-    // optional uint32 user_sid = 5;
     public static final int USER_SID_FIELD_NUMBER = 5;
     private int userSid_;
@@ -5234,5 +5294,4 @@
     }
 
-    // optional bool visible = 6;
     public static final int VISIBLE_FIELD_NUMBER = 6;
     private boolean visible_;
@@ -5283,5 +5342,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       memoizedIsInitialized = 1;
@@ -5310,4 +5370,5 @@
         output.writeBool(6, visible_);
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -5342,4 +5403,5 @@
           .computeBoolSize(6, visible_);
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -5423,5 +5485,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Osmformat.Info, Builder>
-        implements crosby.binary.Osmformat.InfoOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.Info)
+        crosby.binary.Osmformat.InfoOrBuilder {
       // Construct using crosby.binary.Osmformat.Info.newBuilder()
       private Builder() {
@@ -5520,4 +5584,6 @@
           setVisible(other.getVisible());
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -5546,5 +5612,4 @@
       private int bitField0_;
 
-      // optional int32 version = 1 [default = -1];
       private int version_ = -1;
       /**
@@ -5579,5 +5644,4 @@
       }
 
-      // optional int64 timestamp = 2;
       private long timestamp_ ;
       /**
@@ -5612,5 +5676,4 @@
       }
 
-      // optional int64 changeset = 3;
       private long changeset_ ;
       /**
@@ -5645,5 +5708,4 @@
       }
 
-      // optional int32 uid = 4;
       private int uid_ ;
       /**
@@ -5678,5 +5740,4 @@
       }
 
-      // optional uint32 user_sid = 5;
       private int userSid_ ;
       /**
@@ -5727,5 +5788,4 @@
       }
 
-      // optional bool visible = 6;
       private boolean visible_ ;
       /**
@@ -5815,8 +5875,8 @@
   }
 
-  public interface DenseInfoOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // repeated int32 version = 1 [packed = true];
+  public interface DenseInfoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.DenseInfo)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>repeated int32 version = 1 [packed = true];</code>
@@ -5832,5 +5892,4 @@
     int getVersion(int index);
 
-    // repeated sint64 timestamp = 2 [packed = true];
     /**
      * <code>repeated sint64 timestamp = 2 [packed = true];</code>
@@ -5858,5 +5917,4 @@
     long getTimestamp(int index);
 
-    // repeated sint64 changeset = 3 [packed = true];
     /**
      * <code>repeated sint64 changeset = 3 [packed = true];</code>
@@ -5884,5 +5942,4 @@
     long getChangeset(int index);
 
-    // repeated sint32 uid = 4 [packed = true];
     /**
      * <code>repeated sint32 uid = 4 [packed = true];</code>
@@ -5910,5 +5967,4 @@
     int getUid(int index);
 
-    // repeated sint32 user_sid = 5 [packed = true];
     /**
      * <code>repeated sint32 user_sid = 5 [packed = true];</code>
@@ -5936,5 +5992,4 @@
     int getUserSid(int index);
 
-    // repeated bool visible = 6 [packed = true];
     /**
      * <code>repeated bool visible = 6 [packed = true];</code>
@@ -5991,12 +6046,13 @@
    */
   public static final class DenseInfo extends
-      com.google.protobuf.GeneratedMessageLite
-      implements DenseInfoOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.DenseInfo)
+      DenseInfoOrBuilder {
     // Use DenseInfo.newBuilder() to construct.
     private DenseInfo(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private DenseInfo(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DenseInfo(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final DenseInfo defaultInstance;
@@ -6009,4 +6065,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private DenseInfo(
         com.google.protobuf.CodedInputStream input,
@@ -6015,4 +6072,9 @@
       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;
@@ -6024,5 +6086,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -6182,4 +6244,11 @@
           visible_ = java.util.Collections.unmodifiableList(visible_);
         }
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
+        }
         makeExtensionsImmutable();
       }
@@ -6200,5 +6269,4 @@
     }
 
-    // repeated int32 version = 1 [packed = true];
     public static final int VERSION_FIELD_NUMBER = 1;
     private java.util.List<java.lang.Integer> version_;
@@ -6224,5 +6292,4 @@
     private int versionMemoizedSerializedSize = -1;
 
-    // repeated sint64 timestamp = 2 [packed = true];
     public static final int TIMESTAMP_FIELD_NUMBER = 2;
     private java.util.List<java.lang.Long> timestamp_;
@@ -6260,5 +6327,4 @@
     private int timestampMemoizedSerializedSize = -1;
 
-    // repeated sint64 changeset = 3 [packed = true];
     public static final int CHANGESET_FIELD_NUMBER = 3;
     private java.util.List<java.lang.Long> changeset_;
@@ -6296,5 +6362,4 @@
     private int changesetMemoizedSerializedSize = -1;
 
-    // repeated sint32 uid = 4 [packed = true];
     public static final int UID_FIELD_NUMBER = 4;
     private java.util.List<java.lang.Integer> uid_;
@@ -6332,5 +6397,4 @@
     private int uidMemoizedSerializedSize = -1;
 
-    // repeated sint32 user_sid = 5 [packed = true];
     public static final int USER_SID_FIELD_NUMBER = 5;
     private java.util.List<java.lang.Integer> userSid_;
@@ -6368,5 +6432,4 @@
     private int userSidMemoizedSerializedSize = -1;
 
-    // repeated bool visible = 6 [packed = true];
     public static final int VISIBLE_FIELD_NUMBER = 6;
     private java.util.List<java.lang.Boolean> visible_;
@@ -6436,5 +6499,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       memoizedIsInitialized = 1;
@@ -6487,4 +6551,5 @@
         output.writeBoolNoTag(visible_.get(i));
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -6576,4 +6641,5 @@
         visibleMemoizedSerializedSize = dataSize;
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -6657,5 +6723,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Osmformat.DenseInfo, Builder>
-        implements crosby.binary.Osmformat.DenseInfoOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.DenseInfo)
+        crosby.binary.Osmformat.DenseInfoOrBuilder {
       // Construct using crosby.binary.Osmformat.DenseInfo.newBuilder()
       private Builder() {
@@ -6800,4 +6868,6 @@
           
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -6826,5 +6896,4 @@
       private int bitField0_;
 
-      // repeated int32 version = 1 [packed = true];
       private java.util.List<java.lang.Integer> version_ = java.util.Collections.emptyList();
       private void ensureVersionIsMutable() {
@@ -6878,5 +6947,6 @@
           java.lang.Iterable<? extends java.lang.Integer> values) {
         ensureVersionIsMutable();
-        super.addAll(values, version_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, version_);
         
         return this;
@@ -6892,5 +6962,4 @@
       }
 
-      // repeated sint64 timestamp = 2 [packed = true];
       private java.util.List<java.lang.Long> timestamp_ = java.util.Collections.emptyList();
       private void ensureTimestampIsMutable() {
@@ -6968,5 +7037,6 @@
           java.lang.Iterable<? extends java.lang.Long> values) {
         ensureTimestampIsMutable();
-        super.addAll(values, timestamp_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, timestamp_);
         
         return this;
@@ -6986,5 +7056,4 @@
       }
 
-      // repeated sint64 changeset = 3 [packed = true];
       private java.util.List<java.lang.Long> changeset_ = java.util.Collections.emptyList();
       private void ensureChangesetIsMutable() {
@@ -7062,5 +7131,6 @@
           java.lang.Iterable<? extends java.lang.Long> values) {
         ensureChangesetIsMutable();
-        super.addAll(values, changeset_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, changeset_);
         
         return this;
@@ -7080,5 +7150,4 @@
       }
 
-      // repeated sint32 uid = 4 [packed = true];
       private java.util.List<java.lang.Integer> uid_ = java.util.Collections.emptyList();
       private void ensureUidIsMutable() {
@@ -7156,5 +7225,6 @@
           java.lang.Iterable<? extends java.lang.Integer> values) {
         ensureUidIsMutable();
-        super.addAll(values, uid_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, uid_);
         
         return this;
@@ -7174,5 +7244,4 @@
       }
 
-      // repeated sint32 user_sid = 5 [packed = true];
       private java.util.List<java.lang.Integer> userSid_ = java.util.Collections.emptyList();
       private void ensureUserSidIsMutable() {
@@ -7250,5 +7319,6 @@
           java.lang.Iterable<? extends java.lang.Integer> values) {
         ensureUserSidIsMutable();
-        super.addAll(values, userSid_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, userSid_);
         
         return this;
@@ -7268,5 +7338,4 @@
       }
 
-      // repeated bool visible = 6 [packed = true];
       private java.util.List<java.lang.Boolean> visible_ = java.util.Collections.emptyList();
       private void ensureVisibleIsMutable() {
@@ -7386,5 +7455,6 @@
           java.lang.Iterable<? extends java.lang.Boolean> values) {
         ensureVisibleIsMutable();
-        super.addAll(values, visible_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, visible_);
         
         return this;
@@ -7422,8 +7492,8 @@
   }
 
-  public interface ChangeSetOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // required int64 id = 1;
+  public interface ChangeSetOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.ChangeSet)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>required int64 id = 1;</code>
@@ -7434,5 +7504,4 @@
      *   repeated uint32 keys = 2 [packed = true]; // String IDs.
      *   repeated uint32 vals = 3 [packed = true]; // String IDs.
-     *
      *   optional Info info = 4;
      * </pre>
@@ -7447,5 +7516,4 @@
      *   repeated uint32 keys = 2 [packed = true]; // String IDs.
      *   repeated uint32 vals = 3 [packed = true]; // String IDs.
-     *
      *   optional Info info = 4;
      * </pre>
@@ -7462,12 +7530,13 @@
    */
   public static final class ChangeSet extends
-      com.google.protobuf.GeneratedMessageLite
-      implements ChangeSetOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.ChangeSet)
+      ChangeSetOrBuilder {
     // Use ChangeSet.newBuilder() to construct.
     private ChangeSet(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private ChangeSet(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ChangeSet(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final ChangeSet defaultInstance;
@@ -7480,4 +7549,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private ChangeSet(
         com.google.protobuf.CodedInputStream input,
@@ -7486,4 +7556,9 @@
       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;
@@ -7495,5 +7570,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -7514,4 +7589,11 @@
             e.getMessage()).setUnfinishedMessage(this);
       } finally {
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
+        }
         makeExtensionsImmutable();
       }
@@ -7533,5 +7615,4 @@
 
     private int bitField0_;
-    // required int64 id = 1;
     public static final int ID_FIELD_NUMBER = 1;
     private long id_;
@@ -7544,5 +7625,4 @@
      *   repeated uint32 keys = 2 [packed = true]; // String IDs.
      *   repeated uint32 vals = 3 [packed = true]; // String IDs.
-     *
      *   optional Info info = 4;
      * </pre>
@@ -7559,5 +7639,4 @@
      *   repeated uint32 keys = 2 [packed = true]; // String IDs.
      *   repeated uint32 vals = 3 [packed = true]; // String IDs.
-     *
      *   optional Info info = 4;
      * </pre>
@@ -7573,5 +7652,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       if (!hasId()) {
@@ -7589,4 +7669,5 @@
         output.writeInt64(1, id_);
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -7601,4 +7682,5 @@
           .computeInt64Size(1, id_);
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -7683,5 +7765,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Osmformat.ChangeSet, Builder>
-        implements crosby.binary.Osmformat.ChangeSetOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.ChangeSet)
+        crosby.binary.Osmformat.ChangeSetOrBuilder {
       // Construct using crosby.binary.Osmformat.ChangeSet.newBuilder()
       private Builder() {
@@ -7735,4 +7819,6 @@
           setId(other.getId());
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -7765,5 +7851,4 @@
       private int bitField0_;
 
-      // required int64 id = 1;
       private long id_ ;
       /**
@@ -7775,5 +7860,4 @@
        *   repeated uint32 keys = 2 [packed = true]; // String IDs.
        *   repeated uint32 vals = 3 [packed = true]; // String IDs.
-       *
        *   optional Info info = 4;
        * </pre>
@@ -7790,5 +7874,4 @@
        *   repeated uint32 keys = 2 [packed = true]; // String IDs.
        *   repeated uint32 vals = 3 [packed = true]; // String IDs.
-       *
        *   optional Info info = 4;
        * </pre>
@@ -7805,5 +7888,4 @@
        *   repeated uint32 keys = 2 [packed = true]; // String IDs.
        *   repeated uint32 vals = 3 [packed = true]; // String IDs.
-       *
        *   optional Info info = 4;
        * </pre>
@@ -7823,5 +7905,4 @@
        *   repeated uint32 keys = 2 [packed = true]; // String IDs.
        *   repeated uint32 vals = 3 [packed = true]; // String IDs.
-       *
        *   optional Info info = 4;
        * </pre>
@@ -7845,8 +7926,8 @@
   }
 
-  public interface NodeOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // required sint64 id = 1;
+  public interface NodeOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.Node)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>required sint64 id = 1;</code>
@@ -7858,5 +7939,4 @@
     long getId();
 
-    // repeated uint32 keys = 2 [packed = true];
     /**
      * <code>repeated uint32 keys = 2 [packed = true];</code>
@@ -7884,5 +7964,4 @@
     int getKeys(int index);
 
-    // repeated uint32 vals = 3 [packed = true];
     /**
      * <code>repeated uint32 vals = 3 [packed = true];</code>
@@ -7910,5 +7989,4 @@
     int getVals(int index);
 
-    // optional .OSMPBF.Info info = 4;
     /**
      * <code>optional .OSMPBF.Info info = 4;</code>
@@ -7928,5 +8006,4 @@
     crosby.binary.Osmformat.Info getInfo();
 
-    // required sint64 lat = 8;
     /**
      * <code>required sint64 lat = 8;</code>
@@ -7938,5 +8015,4 @@
     long getLat();
 
-    // required sint64 lon = 9;
     /**
      * <code>required sint64 lon = 9;</code>
@@ -7952,12 +8028,13 @@
    */
   public static final class Node extends
-      com.google.protobuf.GeneratedMessageLite
-      implements NodeOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.Node)
+      NodeOrBuilder {
     // Use Node.newBuilder() to construct.
     private Node(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private Node(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Node(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final Node defaultInstance;
@@ -7970,4 +8047,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private Node(
         com.google.protobuf.CodedInputStream input,
@@ -7976,4 +8054,9 @@
       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;
@@ -7985,5 +8068,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -8075,4 +8158,11 @@
           vals_ = java.util.Collections.unmodifiableList(vals_);
         }
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
+        }
         makeExtensionsImmutable();
       }
@@ -8094,5 +8184,4 @@
 
     private int bitField0_;
-    // required sint64 id = 1;
     public static final int ID_FIELD_NUMBER = 1;
     private long id_;
@@ -8110,5 +8199,4 @@
     }
 
-    // repeated uint32 keys = 2 [packed = true];
     public static final int KEYS_FIELD_NUMBER = 2;
     private java.util.List<java.lang.Integer> keys_;
@@ -8146,5 +8234,4 @@
     private int keysMemoizedSerializedSize = -1;
 
-    // repeated uint32 vals = 3 [packed = true];
     public static final int VALS_FIELD_NUMBER = 3;
     private java.util.List<java.lang.Integer> vals_;
@@ -8182,5 +8269,4 @@
     private int valsMemoizedSerializedSize = -1;
 
-    // optional .OSMPBF.Info info = 4;
     public static final int INFO_FIELD_NUMBER = 4;
     private crosby.binary.Osmformat.Info info_;
@@ -8206,5 +8292,4 @@
     }
 
-    // required sint64 lat = 8;
     public static final int LAT_FIELD_NUMBER = 8;
     private long lat_;
@@ -8222,5 +8307,4 @@
     }
 
-    // required sint64 lon = 9;
     public static final int LON_FIELD_NUMBER = 9;
     private long lon_;
@@ -8249,5 +8333,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       if (!hasId()) {
@@ -8296,4 +8381,5 @@
         output.writeSInt64(9, lon_);
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -8348,4 +8434,5 @@
           .computeSInt64Size(9, lon_);
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -8425,5 +8512,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Osmformat.Node, Builder>
-        implements crosby.binary.Osmformat.NodeOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.Node)
+        crosby.binary.Osmformat.NodeOrBuilder {
       // Construct using crosby.binary.Osmformat.Node.newBuilder()
       private Builder() {
@@ -8538,4 +8627,6 @@
           setLon(other.getLon());
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -8576,5 +8667,4 @@
       private int bitField0_;
 
-      // required sint64 id = 1;
       private long id_ ;
       /**
@@ -8609,5 +8699,4 @@
       }
 
-      // repeated uint32 keys = 2 [packed = true];
       private java.util.List<java.lang.Integer> keys_ = java.util.Collections.emptyList();
       private void ensureKeysIsMutable() {
@@ -8685,5 +8774,6 @@
           java.lang.Iterable<? extends java.lang.Integer> values) {
         ensureKeysIsMutable();
-        super.addAll(values, keys_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, keys_);
         
         return this;
@@ -8703,5 +8793,4 @@
       }
 
-      // repeated uint32 vals = 3 [packed = true];
       private java.util.List<java.lang.Integer> vals_ = java.util.Collections.emptyList();
       private void ensureValsIsMutable() {
@@ -8779,5 +8868,6 @@
           java.lang.Iterable<? extends java.lang.Integer> values) {
         ensureValsIsMutable();
-        super.addAll(values, vals_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, vals_);
         
         return this;
@@ -8797,5 +8887,4 @@
       }
 
-      // optional .OSMPBF.Info info = 4;
       private crosby.binary.Osmformat.Info info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
       /**
@@ -8882,5 +8971,4 @@
       }
 
-      // required sint64 lat = 8;
       private long lat_ ;
       /**
@@ -8915,5 +9003,4 @@
       }
 
-      // required sint64 lon = 9;
       private long lon_ ;
       /**
@@ -8959,8 +9046,8 @@
   }
 
-  public interface DenseNodesOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // repeated sint64 id = 1 [packed = true];
+  public interface DenseNodesOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.DenseNodes)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>repeated sint64 id = 1 [packed = true];</code>
@@ -8988,5 +9075,4 @@
     long getId(int index);
 
-    // optional .OSMPBF.DenseInfo denseinfo = 5;
     /**
      * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code>
@@ -9006,5 +9092,4 @@
     crosby.binary.Osmformat.DenseInfo getDenseinfo();
 
-    // repeated sint64 lat = 8 [packed = true];
     /**
      * <code>repeated sint64 lat = 8 [packed = true];</code>
@@ -9032,5 +9117,4 @@
     long getLat(int index);
 
-    // repeated sint64 lon = 9 [packed = true];
     /**
      * <code>repeated sint64 lon = 9 [packed = true];</code>
@@ -9058,5 +9142,4 @@
     long getLon(int index);
 
-    // repeated int32 keys_vals = 10 [packed = true];
     /**
      * <code>repeated int32 keys_vals = 10 [packed = true];</code>
@@ -9088,12 +9171,13 @@
    */
   public static final class DenseNodes extends
-      com.google.protobuf.GeneratedMessageLite
-      implements DenseNodesOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.DenseNodes)
+      DenseNodesOrBuilder {
     // Use DenseNodes.newBuilder() to construct.
     private DenseNodes(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private DenseNodes(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DenseNodes(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final DenseNodes defaultInstance;
@@ -9106,4 +9190,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private DenseNodes(
         com.google.protobuf.CodedInputStream input,
@@ -9112,4 +9197,9 @@
       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;
@@ -9121,5 +9211,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -9244,4 +9334,11 @@
           keysVals_ = java.util.Collections.unmodifiableList(keysVals_);
         }
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
+        }
         makeExtensionsImmutable();
       }
@@ -9263,5 +9360,4 @@
 
     private int bitField0_;
-    // repeated sint64 id = 1 [packed = true];
     public static final int ID_FIELD_NUMBER = 1;
     private java.util.List<java.lang.Long> id_;
@@ -9299,5 +9395,4 @@
     private int idMemoizedSerializedSize = -1;
 
-    // optional .OSMPBF.DenseInfo denseinfo = 5;
     public static final int DENSEINFO_FIELD_NUMBER = 5;
     private crosby.binary.Osmformat.DenseInfo denseinfo_;
@@ -9323,5 +9418,4 @@
     }
 
-    // repeated sint64 lat = 8 [packed = true];
     public static final int LAT_FIELD_NUMBER = 8;
     private java.util.List<java.lang.Long> lat_;
@@ -9359,5 +9453,4 @@
     private int latMemoizedSerializedSize = -1;
 
-    // repeated sint64 lon = 9 [packed = true];
     public static final int LON_FIELD_NUMBER = 9;
     private java.util.List<java.lang.Long> lon_;
@@ -9395,5 +9488,4 @@
     private int lonMemoizedSerializedSize = -1;
 
-    // repeated int32 keys_vals = 10 [packed = true];
     public static final int KEYS_VALS_FIELD_NUMBER = 10;
     private java.util.List<java.lang.Integer> keysVals_;
@@ -9441,5 +9533,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       memoizedIsInitialized = 1;
@@ -9481,4 +9574,5 @@
         output.writeInt32NoTag(keysVals_.get(i));
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -9549,4 +9643,5 @@
         keysValsMemoizedSerializedSize = dataSize;
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -9626,5 +9721,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Osmformat.DenseNodes, Builder>
-        implements crosby.binary.Osmformat.DenseNodesOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.DenseNodes)
+        crosby.binary.Osmformat.DenseNodesOrBuilder {
       // Construct using crosby.binary.Osmformat.DenseNodes.newBuilder()
       private Builder() {
@@ -9746,4 +9843,6 @@
           
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -9772,5 +9871,4 @@
       private int bitField0_;
 
-      // repeated sint64 id = 1 [packed = true];
       private java.util.List<java.lang.Long> id_ = java.util.Collections.emptyList();
       private void ensureIdIsMutable() {
@@ -9848,5 +9946,6 @@
           java.lang.Iterable<? extends java.lang.Long> values) {
         ensureIdIsMutable();
-        super.addAll(values, id_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, id_);
         
         return this;
@@ -9866,5 +9965,4 @@
       }
 
-      // optional .OSMPBF.DenseInfo denseinfo = 5;
       private crosby.binary.Osmformat.DenseInfo denseinfo_ = crosby.binary.Osmformat.DenseInfo.getDefaultInstance();
       /**
@@ -9951,5 +10049,4 @@
       }
 
-      // repeated sint64 lat = 8 [packed = true];
       private java.util.List<java.lang.Long> lat_ = java.util.Collections.emptyList();
       private void ensureLatIsMutable() {
@@ -10027,5 +10124,6 @@
           java.lang.Iterable<? extends java.lang.Long> values) {
         ensureLatIsMutable();
-        super.addAll(values, lat_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, lat_);
         
         return this;
@@ -10045,5 +10143,4 @@
       }
 
-      // repeated sint64 lon = 9 [packed = true];
       private java.util.List<java.lang.Long> lon_ = java.util.Collections.emptyList();
       private void ensureLonIsMutable() {
@@ -10121,5 +10218,6 @@
           java.lang.Iterable<? extends java.lang.Long> values) {
         ensureLonIsMutable();
-        super.addAll(values, lon_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, lon_);
         
         return this;
@@ -10139,5 +10237,4 @@
       }
 
-      // repeated int32 keys_vals = 10 [packed = true];
       private java.util.List<java.lang.Integer> keysVals_ = java.util.Collections.emptyList();
       private void ensureKeysValsIsMutable() {
@@ -10215,5 +10312,6 @@
           java.lang.Iterable<? extends java.lang.Integer> values) {
         ensureKeysValsIsMutable();
-        super.addAll(values, keysVals_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, keysVals_);
         
         return this;
@@ -10244,8 +10342,8 @@
   }
 
-  public interface WayOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // required int64 id = 1;
+  public interface WayOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.Way)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>required int64 id = 1;</code>
@@ -10257,5 +10355,4 @@
     long getId();
 
-    // repeated uint32 keys = 2 [packed = true];
     /**
      * <code>repeated uint32 keys = 2 [packed = true];</code>
@@ -10283,5 +10380,4 @@
     int getKeys(int index);
 
-    // repeated uint32 vals = 3 [packed = true];
     /**
      * <code>repeated uint32 vals = 3 [packed = true];</code>
@@ -10297,5 +10393,4 @@
     int getVals(int index);
 
-    // optional .OSMPBF.Info info = 4;
     /**
      * <code>optional .OSMPBF.Info info = 4;</code>
@@ -10307,5 +10402,4 @@
     crosby.binary.Osmformat.Info getInfo();
 
-    // repeated sint64 refs = 8 [packed = true];
     /**
      * <code>repeated sint64 refs = 8 [packed = true];</code>
@@ -10337,12 +10431,13 @@
    */
   public static final class Way extends
-      com.google.protobuf.GeneratedMessageLite
-      implements WayOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.Way)
+      WayOrBuilder {
     // Use Way.newBuilder() to construct.
     private Way(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private Way(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Way(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final Way defaultInstance;
@@ -10355,4 +10450,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private Way(
         com.google.protobuf.CodedInputStream input,
@@ -10361,4 +10457,9 @@
       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;
@@ -10370,5 +10471,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -10474,4 +10575,11 @@
           refs_ = java.util.Collections.unmodifiableList(refs_);
         }
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
+        }
         makeExtensionsImmutable();
       }
@@ -10493,5 +10601,4 @@
 
     private int bitField0_;
-    // required int64 id = 1;
     public static final int ID_FIELD_NUMBER = 1;
     private long id_;
@@ -10509,5 +10616,4 @@
     }
 
-    // repeated uint32 keys = 2 [packed = true];
     public static final int KEYS_FIELD_NUMBER = 2;
     private java.util.List<java.lang.Integer> keys_;
@@ -10545,5 +10651,4 @@
     private int keysMemoizedSerializedSize = -1;
 
-    // repeated uint32 vals = 3 [packed = true];
     public static final int VALS_FIELD_NUMBER = 3;
     private java.util.List<java.lang.Integer> vals_;
@@ -10569,5 +10674,4 @@
     private int valsMemoizedSerializedSize = -1;
 
-    // optional .OSMPBF.Info info = 4;
     public static final int INFO_FIELD_NUMBER = 4;
     private crosby.binary.Osmformat.Info info_;
@@ -10585,5 +10689,4 @@
     }
 
-    // repeated sint64 refs = 8 [packed = true];
     public static final int REFS_FIELD_NUMBER = 8;
     private java.util.List<java.lang.Long> refs_;
@@ -10631,5 +10734,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       if (!hasId()) {
@@ -10671,4 +10775,5 @@
         output.writeSInt64NoTag(refs_.get(i));
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -10729,4 +10834,5 @@
         refsMemoizedSerializedSize = dataSize;
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -10806,5 +10912,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Osmformat.Way, Builder>
-        implements crosby.binary.Osmformat.WayOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.Way)
+        crosby.binary.Osmformat.WayOrBuilder {
       // Construct using crosby.binary.Osmformat.Way.newBuilder()
       private Builder() {
@@ -10918,4 +11026,6 @@
           
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -10948,5 +11058,4 @@
       private int bitField0_;
 
-      // required int64 id = 1;
       private long id_ ;
       /**
@@ -10981,5 +11090,4 @@
       }
 
-      // repeated uint32 keys = 2 [packed = true];
       private java.util.List<java.lang.Integer> keys_ = java.util.Collections.emptyList();
       private void ensureKeysIsMutable() {
@@ -11057,5 +11165,6 @@
           java.lang.Iterable<? extends java.lang.Integer> values) {
         ensureKeysIsMutable();
-        super.addAll(values, keys_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, keys_);
         
         return this;
@@ -11075,5 +11184,4 @@
       }
 
-      // repeated uint32 vals = 3 [packed = true];
       private java.util.List<java.lang.Integer> vals_ = java.util.Collections.emptyList();
       private void ensureValsIsMutable() {
@@ -11127,5 +11235,6 @@
           java.lang.Iterable<? extends java.lang.Integer> values) {
         ensureValsIsMutable();
-        super.addAll(values, vals_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, vals_);
         
         return this;
@@ -11141,5 +11250,4 @@
       }
 
-      // optional .OSMPBF.Info info = 4;
       private crosby.binary.Osmformat.Info info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
       /**
@@ -11202,5 +11310,4 @@
       }
 
-      // repeated sint64 refs = 8 [packed = true];
       private java.util.List<java.lang.Long> refs_ = java.util.Collections.emptyList();
       private void ensureRefsIsMutable() {
@@ -11278,5 +11385,6 @@
           java.lang.Iterable<? extends java.lang.Long> values) {
         ensureRefsIsMutable();
-        super.addAll(values, refs_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, refs_);
         
         return this;
@@ -11307,8 +11415,8 @@
   }
 
-  public interface RelationOrBuilder
-      extends com.google.protobuf.MessageLiteOrBuilder {
-
-    // required int64 id = 1;
+  public interface RelationOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OSMPBF.Relation)
+      com.google.protobuf.MessageLiteOrBuilder {
+
     /**
      * <code>required int64 id = 1;</code>
@@ -11320,5 +11428,4 @@
     long getId();
 
-    // repeated uint32 keys = 2 [packed = true];
     /**
      * <code>repeated uint32 keys = 2 [packed = true];</code>
@@ -11346,5 +11453,4 @@
     int getKeys(int index);
 
-    // repeated uint32 vals = 3 [packed = true];
     /**
      * <code>repeated uint32 vals = 3 [packed = true];</code>
@@ -11360,5 +11466,4 @@
     int getVals(int index);
 
-    // optional .OSMPBF.Info info = 4;
     /**
      * <code>optional .OSMPBF.Info info = 4;</code>
@@ -11370,5 +11475,4 @@
     crosby.binary.Osmformat.Info getInfo();
 
-    // repeated int32 roles_sid = 8 [packed = true];
     /**
      * <code>repeated int32 roles_sid = 8 [packed = true];</code>
@@ -11396,5 +11500,4 @@
     int getRolesSid(int index);
 
-    // repeated sint64 memids = 9 [packed = true];
     /**
      * <code>repeated sint64 memids = 9 [packed = true];</code>
@@ -11422,5 +11525,4 @@
     long getMemids(int index);
 
-    // repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];
     /**
      * <code>repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];</code>
@@ -11440,12 +11542,13 @@
    */
   public static final class Relation extends
-      com.google.protobuf.GeneratedMessageLite
-      implements RelationOrBuilder {
+      com.google.protobuf.GeneratedMessageLite implements
+      // @@protoc_insertion_point(message_implements:OSMPBF.Relation)
+      RelationOrBuilder {
     // Use Relation.newBuilder() to construct.
     private Relation(com.google.protobuf.GeneratedMessageLite.Builder builder) {
       super(builder);
-
-    }
-    private Relation(boolean noInit) {}
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Relation(boolean noInit) { this.unknownFields = com.google.protobuf.ByteString.EMPTY;}
 
     private static final Relation defaultInstance;
@@ -11458,4 +11561,5 @@
     }
 
+    private final com.google.protobuf.ByteString unknownFields;
     private Relation(
         com.google.protobuf.CodedInputStream input,
@@ -11464,4 +11568,9 @@
       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;
@@ -11473,5 +11582,5 @@
               break;
             default: {
-              if (!parseUnknownField(input,
+              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                      extensionRegistry, tag)) {
                 done = true;
@@ -11584,5 +11693,8 @@
               int rawValue = input.readEnum();
               crosby.binary.Osmformat.Relation.MemberType value = crosby.binary.Osmformat.Relation.MemberType.valueOf(rawValue);
-              if (value != null) {
+              if (value == null) {
+                unknownFieldsCodedOutput.writeRawVarint32(tag);
+                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
+                } else {
                 if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                   types_ = new java.util.ArrayList<crosby.binary.Osmformat.Relation.MemberType>();
@@ -11599,5 +11711,8 @@
                 int rawValue = input.readEnum();
                 crosby.binary.Osmformat.Relation.MemberType value = crosby.binary.Osmformat.Relation.MemberType.valueOf(rawValue);
-                if (value != null) {
+                if (value == null) {
+                  unknownFieldsCodedOutput.writeRawVarint32(tag);
+                  unknownFieldsCodedOutput.writeRawVarint32(rawValue);
+                  } else {
                   if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                     types_ = new java.util.ArrayList<crosby.binary.Osmformat.Relation.MemberType>();
@@ -11633,4 +11748,11 @@
           types_ = java.util.Collections.unmodifiableList(types_);
         }
+        try {
+          unknownFieldsCodedOutput.flush();
+        } catch (java.io.IOException e) {
+        // Should not happen
+        } finally {
+          unknownFields = unknownFieldsOutput.toByteString();
+        }
         makeExtensionsImmutable();
       }
@@ -11717,5 +11839,4 @@
 
     private int bitField0_;
-    // required int64 id = 1;
     public static final int ID_FIELD_NUMBER = 1;
     private long id_;
@@ -11733,5 +11854,4 @@
     }
 
-    // repeated uint32 keys = 2 [packed = true];
     public static final int KEYS_FIELD_NUMBER = 2;
     private java.util.List<java.lang.Integer> keys_;
@@ -11769,5 +11889,4 @@
     private int keysMemoizedSerializedSize = -1;
 
-    // repeated uint32 vals = 3 [packed = true];
     public static final int VALS_FIELD_NUMBER = 3;
     private java.util.List<java.lang.Integer> vals_;
@@ -11793,5 +11912,4 @@
     private int valsMemoizedSerializedSize = -1;
 
-    // optional .OSMPBF.Info info = 4;
     public static final int INFO_FIELD_NUMBER = 4;
     private crosby.binary.Osmformat.Info info_;
@@ -11809,5 +11927,4 @@
     }
 
-    // repeated int32 roles_sid = 8 [packed = true];
     public static final int ROLES_SID_FIELD_NUMBER = 8;
     private java.util.List<java.lang.Integer> rolesSid_;
@@ -11845,5 +11962,4 @@
     private int rolesSidMemoizedSerializedSize = -1;
 
-    // repeated sint64 memids = 9 [packed = true];
     public static final int MEMIDS_FIELD_NUMBER = 9;
     private java.util.List<java.lang.Long> memids_;
@@ -11881,5 +11997,4 @@
     private int memidsMemoizedSerializedSize = -1;
 
-    // repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];
     public static final int TYPES_FIELD_NUMBER = 10;
     private java.util.List<crosby.binary.Osmformat.Relation.MemberType> types_;
@@ -11916,5 +12031,6 @@
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
 
       if (!hasId()) {
@@ -11970,4 +12086,5 @@
         output.writeEnumNoTag(types_.get(i).getNumber());
       }
+      output.writeRawBytes(unknownFields);
     }
 
@@ -12054,4 +12171,5 @@
         }typesMemoizedSerializedSize = dataSize;
       }
+      size += unknownFields.size();
       memoizedSerializedSize = size;
       return size;
@@ -12131,5 +12249,7 @@
         com.google.protobuf.GeneratedMessageLite.Builder<
           crosby.binary.Osmformat.Relation, Builder>
-        implements crosby.binary.Osmformat.RelationOrBuilder {
+        implements
+        // @@protoc_insertion_point(builder_implements:OSMPBF.Relation)
+        crosby.binary.Osmformat.RelationOrBuilder {
       // Construct using crosby.binary.Osmformat.Relation.newBuilder()
       private Builder() {
@@ -12277,4 +12397,6 @@
           
         }
+        setUnknownFields(
+            getUnknownFields().concat(other.unknownFields));
         return this;
       }
@@ -12307,5 +12429,4 @@
       private int bitField0_;
 
-      // required int64 id = 1;
       private long id_ ;
       /**
@@ -12340,5 +12461,4 @@
       }
 
-      // repeated uint32 keys = 2 [packed = true];
       private java.util.List<java.lang.Integer> keys_ = java.util.Collections.emptyList();
       private void ensureKeysIsMutable() {
@@ -12416,5 +12536,6 @@
           java.lang.Iterable<? extends java.lang.Integer> values) {
         ensureKeysIsMutable();
-        super.addAll(values, keys_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, keys_);
         
         return this;
@@ -12434,5 +12555,4 @@
       }
 
-      // repeated uint32 vals = 3 [packed = true];
       private java.util.List<java.lang.Integer> vals_ = java.util.Collections.emptyList();
       private void ensureValsIsMutable() {
@@ -12486,5 +12606,6 @@
           java.lang.Iterable<? extends java.lang.Integer> values) {
         ensureValsIsMutable();
-        super.addAll(values, vals_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, vals_);
         
         return this;
@@ -12500,5 +12621,4 @@
       }
 
-      // optional .OSMPBF.Info info = 4;
       private crosby.binary.Osmformat.Info info_ = crosby.binary.Osmformat.Info.getDefaultInstance();
       /**
@@ -12561,5 +12681,4 @@
       }
 
-      // repeated int32 roles_sid = 8 [packed = true];
       private java.util.List<java.lang.Integer> rolesSid_ = java.util.Collections.emptyList();
       private void ensureRolesSidIsMutable() {
@@ -12637,5 +12756,6 @@
           java.lang.Iterable<? extends java.lang.Integer> values) {
         ensureRolesSidIsMutable();
-        super.addAll(values, rolesSid_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, rolesSid_);
         
         return this;
@@ -12655,5 +12775,4 @@
       }
 
-      // repeated sint64 memids = 9 [packed = true];
       private java.util.List<java.lang.Long> memids_ = java.util.Collections.emptyList();
       private void ensureMemidsIsMutable() {
@@ -12731,5 +12850,6 @@
           java.lang.Iterable<? extends java.lang.Long> values) {
         ensureMemidsIsMutable();
-        super.addAll(values, memids_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, memids_);
         
         return this;
@@ -12749,5 +12869,4 @@
       }
 
-      // repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];
       private java.util.List<crosby.binary.Osmformat.Relation.MemberType> types_ =
         java.util.Collections.emptyList();
@@ -12807,5 +12926,6 @@
           java.lang.Iterable<? extends crosby.binary.Osmformat.Relation.MemberType> values) {
         ensureTypesIsMutable();
-        super.addAll(values, types_);
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, types_);
         
         return this;
Index: /applications/editors/josm/plugins/pbf/tools/readme.txt
===================================================================
--- /applications/editors/josm/plugins/pbf/tools/readme.txt	(revision 30658)
+++ /applications/editors/josm/plugins/pbf/tools/readme.txt	(revision 30658)
@@ -0,0 +1,15 @@
+Protocol Buffers - Google's data interchange format
+Copyright 2008 Google Inc.
+http://code.google.com/p/protobuf/
+
+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 binary was built using MinGW, but the output is the same regardless of
+the C++ compiler used.
+
+You will still need to download the source code package in order to obtain the
+Java or Python runtime libraries.  Get it from:
+  http://code.google.com/p/protobuf/downloads/
