Index: applications/editors/josm/plugins/pbf/gen/com/google/protobuf/DescriptorProtos.java
===================================================================
--- applications/editors/josm/plugins/pbf/gen/com/google/protobuf/DescriptorProtos.java	(revision 28898)
+++ applications/editors/josm/plugins/pbf/gen/com/google/protobuf/DescriptorProtos.java	(revision 28900)
@@ -1,4 +1,4 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: google/protobuf/descriptor.proto
+// source: protobuf/descriptor.proto
 
 package com.google.protobuf;
@@ -275,5 +275,5 @@
       public com.google.protobuf.DescriptorProtos.FileDescriptorSet buildPartial() {
         com.google.protobuf.DescriptorProtos.FileDescriptorSet result = new com.google.protobuf.DescriptorProtos.FileDescriptorSet(this);
-        //int from_bitField0_ = bitField0_;
+        int from_bitField0_ = bitField0_;
         if (fileBuilder_ == null) {
           if (((bitField0_ & 0x00000001) == 0x00000001)) {
@@ -588,4 +588,14 @@
     String getDependency(int index);
     
+    // repeated int32 public_dependency = 10;
+    java.util.List<java.lang.Integer> getPublicDependencyList();
+    int getPublicDependencyCount();
+    int getPublicDependency(int index);
+    
+    // repeated int32 weak_dependency = 11;
+    java.util.List<java.lang.Integer> getWeakDependencyList();
+    int getWeakDependencyCount();
+    int getWeakDependency(int index);
+    
     // repeated .google.protobuf.DescriptorProto message_type = 4;
     java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> 
@@ -745,4 +755,32 @@
     }
     
+    // repeated int32 public_dependency = 10;
+    public static final int PUBLIC_DEPENDENCY_FIELD_NUMBER = 10;
+    private java.util.List<java.lang.Integer> publicDependency_;
+    public java.util.List<java.lang.Integer>
+        getPublicDependencyList() {
+      return publicDependency_;
+    }
+    public int getPublicDependencyCount() {
+      return publicDependency_.size();
+    }
+    public int getPublicDependency(int index) {
+      return publicDependency_.get(index);
+    }
+    
+    // repeated int32 weak_dependency = 11;
+    public static final int WEAK_DEPENDENCY_FIELD_NUMBER = 11;
+    private java.util.List<java.lang.Integer> weakDependency_;
+    public java.util.List<java.lang.Integer>
+        getWeakDependencyList() {
+      return weakDependency_;
+    }
+    public int getWeakDependencyCount() {
+      return weakDependency_.size();
+    }
+    public int getWeakDependency(int index) {
+      return weakDependency_.get(index);
+    }
+    
     // repeated .google.protobuf.DescriptorProto message_type = 4;
     public static final int MESSAGE_TYPE_FIELD_NUMBER = 4;
@@ -859,4 +897,6 @@
       package_ = "";
       dependency_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      publicDependency_ = java.util.Collections.emptyList();;
+      weakDependency_ = java.util.Collections.emptyList();;
       messageType_ = java.util.Collections.emptyList();
       enumType_ = java.util.Collections.emptyList();
@@ -935,4 +975,10 @@
         output.writeMessage(9, sourceCodeInfo_);
       }
+      for (int i = 0; i < publicDependency_.size(); i++) {
+        output.writeInt32(10, publicDependency_.get(i));
+      }
+      for (int i = 0; i < weakDependency_.size(); i++) {
+        output.writeInt32(11, weakDependency_.get(i));
+      }
       getUnknownFields().writeTo(output);
     }
@@ -984,4 +1030,22 @@
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(9, sourceCodeInfo_);
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < publicDependency_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeInt32SizeNoTag(publicDependency_.get(i));
+        }
+        size += dataSize;
+        size += 1 * getPublicDependencyList().size();
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < weakDependency_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeInt32SizeNoTag(weakDependency_.get(i));
+        }
+        size += dataSize;
+        size += 1 * getWeakDependencyList().size();
       }
       size += getUnknownFields().getSerializedSize();
@@ -1121,7 +1185,11 @@
         dependency_ = com.google.protobuf.LazyStringArrayList.EMPTY;
         bitField0_ = (bitField0_ & ~0x00000004);
+        publicDependency_ = java.util.Collections.emptyList();;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        weakDependency_ = java.util.Collections.emptyList();;
+        bitField0_ = (bitField0_ & ~0x00000010);
         if (messageTypeBuilder_ == null) {
           messageType_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000008);
+          bitField0_ = (bitField0_ & ~0x00000020);
         } else {
           messageTypeBuilder_.clear();
@@ -1129,5 +1197,5 @@
         if (enumTypeBuilder_ == null) {
           enumType_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000010);
+          bitField0_ = (bitField0_ & ~0x00000040);
         } else {
           enumTypeBuilder_.clear();
@@ -1135,5 +1203,5 @@
         if (serviceBuilder_ == null) {
           service_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000020);
+          bitField0_ = (bitField0_ & ~0x00000080);
         } else {
           serviceBuilder_.clear();
@@ -1141,5 +1209,5 @@
         if (extensionBuilder_ == null) {
           extension_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000040);
+          bitField0_ = (bitField0_ & ~0x00000100);
         } else {
           extensionBuilder_.clear();
@@ -1150,5 +1218,5 @@
           optionsBuilder_.clear();
         }
-        bitField0_ = (bitField0_ & ~0x00000080);
+        bitField0_ = (bitField0_ & ~0x00000200);
         if (sourceCodeInfoBuilder_ == null) {
           sourceCodeInfo_ = com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance();
@@ -1156,5 +1224,5 @@
           sourceCodeInfoBuilder_.clear();
         }
-        bitField0_ = (bitField0_ & ~0x00000100);
+        bitField0_ = (bitField0_ & ~0x00000400);
         return this;
       }
@@ -1209,8 +1277,18 @@
         }
         result.dependency_ = dependency_;
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          publicDependency_ = java.util.Collections.unmodifiableList(publicDependency_);
+          bitField0_ = (bitField0_ & ~0x00000008);
+        }
+        result.publicDependency_ = publicDependency_;
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          weakDependency_ = java.util.Collections.unmodifiableList(weakDependency_);
+          bitField0_ = (bitField0_ & ~0x00000010);
+        }
+        result.weakDependency_ = weakDependency_;
         if (messageTypeBuilder_ == null) {
-          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          if (((bitField0_ & 0x00000020) == 0x00000020)) {
             messageType_ = java.util.Collections.unmodifiableList(messageType_);
-            bitField0_ = (bitField0_ & ~0x00000008);
+            bitField0_ = (bitField0_ & ~0x00000020);
           }
           result.messageType_ = messageType_;
@@ -1219,7 +1297,7 @@
         }
         if (enumTypeBuilder_ == null) {
-          if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          if (((bitField0_ & 0x00000040) == 0x00000040)) {
             enumType_ = java.util.Collections.unmodifiableList(enumType_);
-            bitField0_ = (bitField0_ & ~0x00000010);
+            bitField0_ = (bitField0_ & ~0x00000040);
           }
           result.enumType_ = enumType_;
@@ -1228,7 +1306,7 @@
         }
         if (serviceBuilder_ == null) {
-          if (((bitField0_ & 0x00000020) == 0x00000020)) {
+          if (((bitField0_ & 0x00000080) == 0x00000080)) {
             service_ = java.util.Collections.unmodifiableList(service_);
-            bitField0_ = (bitField0_ & ~0x00000020);
+            bitField0_ = (bitField0_ & ~0x00000080);
           }
           result.service_ = service_;
@@ -1237,7 +1315,7 @@
         }
         if (extensionBuilder_ == null) {
-          if (((bitField0_ & 0x00000040) == 0x00000040)) {
+          if (((bitField0_ & 0x00000100) == 0x00000100)) {
             extension_ = java.util.Collections.unmodifiableList(extension_);
-            bitField0_ = (bitField0_ & ~0x00000040);
+            bitField0_ = (bitField0_ & ~0x00000100);
           }
           result.extension_ = extension_;
@@ -1245,5 +1323,5 @@
           result.extension_ = extensionBuilder_.build();
         }
-        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
           to_bitField0_ |= 0x00000004;
         }
@@ -1253,5 +1331,5 @@
           result.options_ = optionsBuilder_.build();
         }
-        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
           to_bitField0_ |= 0x00000008;
         }
@@ -1293,9 +1371,29 @@
           onChanged();
         }
+        if (!other.publicDependency_.isEmpty()) {
+          if (publicDependency_.isEmpty()) {
+            publicDependency_ = other.publicDependency_;
+            bitField0_ = (bitField0_ & ~0x00000008);
+          } else {
+            ensurePublicDependencyIsMutable();
+            publicDependency_.addAll(other.publicDependency_);
+          }
+          onChanged();
+        }
+        if (!other.weakDependency_.isEmpty()) {
+          if (weakDependency_.isEmpty()) {
+            weakDependency_ = other.weakDependency_;
+            bitField0_ = (bitField0_ & ~0x00000010);
+          } else {
+            ensureWeakDependencyIsMutable();
+            weakDependency_.addAll(other.weakDependency_);
+          }
+          onChanged();
+        }
         if (messageTypeBuilder_ == null) {
           if (!other.messageType_.isEmpty()) {
             if (messageType_.isEmpty()) {
               messageType_ = other.messageType_;
-              bitField0_ = (bitField0_ & ~0x00000008);
+              bitField0_ = (bitField0_ & ~0x00000020);
             } else {
               ensureMessageTypeIsMutable();
@@ -1310,5 +1408,5 @@
               messageTypeBuilder_ = null;
               messageType_ = other.messageType_;
-              bitField0_ = (bitField0_ & ~0x00000008);
+              bitField0_ = (bitField0_ & ~0x00000020);
               messageTypeBuilder_ = 
                 com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
@@ -1323,5 +1421,5 @@
             if (enumType_.isEmpty()) {
               enumType_ = other.enumType_;
-              bitField0_ = (bitField0_ & ~0x00000010);
+              bitField0_ = (bitField0_ & ~0x00000040);
             } else {
               ensureEnumTypeIsMutable();
@@ -1336,5 +1434,5 @@
               enumTypeBuilder_ = null;
               enumType_ = other.enumType_;
-              bitField0_ = (bitField0_ & ~0x00000010);
+              bitField0_ = (bitField0_ & ~0x00000040);
               enumTypeBuilder_ = 
                 com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
@@ -1349,5 +1447,5 @@
             if (service_.isEmpty()) {
               service_ = other.service_;
-              bitField0_ = (bitField0_ & ~0x00000020);
+              bitField0_ = (bitField0_ & ~0x00000080);
             } else {
               ensureServiceIsMutable();
@@ -1362,5 +1460,5 @@
               serviceBuilder_ = null;
               service_ = other.service_;
-              bitField0_ = (bitField0_ & ~0x00000020);
+              bitField0_ = (bitField0_ & ~0x00000080);
               serviceBuilder_ = 
                 com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
@@ -1375,5 +1473,5 @@
             if (extension_.isEmpty()) {
               extension_ = other.extension_;
-              bitField0_ = (bitField0_ & ~0x00000040);
+              bitField0_ = (bitField0_ & ~0x00000100);
             } else {
               ensureExtensionIsMutable();
@@ -1388,5 +1486,5 @@
               extensionBuilder_ = null;
               extension_ = other.extension_;
-              bitField0_ = (bitField0_ & ~0x00000040);
+              bitField0_ = (bitField0_ & ~0x00000100);
               extensionBuilder_ = 
                 com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
@@ -1521,4 +1619,32 @@
               break;
             }
+            case 80: {
+              ensurePublicDependencyIsMutable();
+              publicDependency_.add(input.readInt32());
+              break;
+            }
+            case 82: {
+              int length = input.readRawVarint32();
+              int limit = input.pushLimit(length);
+              while (input.getBytesUntilLimit() > 0) {
+                addPublicDependency(input.readInt32());
+              }
+              input.popLimit(limit);
+              break;
+            }
+            case 88: {
+              ensureWeakDependencyIsMutable();
+              weakDependency_.add(input.readInt32());
+              break;
+            }
+            case 90: {
+              int length = input.readRawVarint32();
+              int limit = input.pushLimit(length);
+              while (input.getBytesUntilLimit() > 0) {
+                addWeakDependency(input.readInt32());
+              }
+              input.popLimit(limit);
+              break;
+            }
           }
         }
@@ -1655,11 +1781,101 @@
       }
       
+      // repeated int32 public_dependency = 10;
+      private java.util.List<java.lang.Integer> publicDependency_ = java.util.Collections.emptyList();;
+      private void ensurePublicDependencyIsMutable() {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+          publicDependency_ = new java.util.ArrayList<java.lang.Integer>(publicDependency_);
+          bitField0_ |= 0x00000008;
+         }
+      }
+      public java.util.List<java.lang.Integer>
+          getPublicDependencyList() {
+        return java.util.Collections.unmodifiableList(publicDependency_);
+      }
+      public int getPublicDependencyCount() {
+        return publicDependency_.size();
+      }
+      public int getPublicDependency(int index) {
+        return publicDependency_.get(index);
+      }
+      public Builder setPublicDependency(
+          int index, int value) {
+        ensurePublicDependencyIsMutable();
+        publicDependency_.set(index, value);
+        onChanged();
+        return this;
+      }
+      public Builder addPublicDependency(int value) {
+        ensurePublicDependencyIsMutable();
+        publicDependency_.add(value);
+        onChanged();
+        return this;
+      }
+      public Builder addAllPublicDependency(
+          java.lang.Iterable<? extends java.lang.Integer> values) {
+        ensurePublicDependencyIsMutable();
+        super.addAll(values, publicDependency_);
+        onChanged();
+        return this;
+      }
+      public Builder clearPublicDependency() {
+        publicDependency_ = java.util.Collections.emptyList();;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        onChanged();
+        return this;
+      }
+      
+      // repeated int32 weak_dependency = 11;
+      private java.util.List<java.lang.Integer> weakDependency_ = java.util.Collections.emptyList();;
+      private void ensureWeakDependencyIsMutable() {
+        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+          weakDependency_ = new java.util.ArrayList<java.lang.Integer>(weakDependency_);
+          bitField0_ |= 0x00000010;
+         }
+      }
+      public java.util.List<java.lang.Integer>
+          getWeakDependencyList() {
+        return java.util.Collections.unmodifiableList(weakDependency_);
+      }
+      public int getWeakDependencyCount() {
+        return weakDependency_.size();
+      }
+      public int getWeakDependency(int index) {
+        return weakDependency_.get(index);
+      }
+      public Builder setWeakDependency(
+          int index, int value) {
+        ensureWeakDependencyIsMutable();
+        weakDependency_.set(index, value);
+        onChanged();
+        return this;
+      }
+      public Builder addWeakDependency(int value) {
+        ensureWeakDependencyIsMutable();
+        weakDependency_.add(value);
+        onChanged();
+        return this;
+      }
+      public Builder addAllWeakDependency(
+          java.lang.Iterable<? extends java.lang.Integer> values) {
+        ensureWeakDependencyIsMutable();
+        super.addAll(values, weakDependency_);
+        onChanged();
+        return this;
+      }
+      public Builder clearWeakDependency() {
+        weakDependency_ = java.util.Collections.emptyList();;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        onChanged();
+        return this;
+      }
+      
       // repeated .google.protobuf.DescriptorProto message_type = 4;
       private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> messageType_ =
         java.util.Collections.emptyList();
       private void ensureMessageTypeIsMutable() {
-        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
           messageType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>(messageType_);
-          bitField0_ |= 0x00000008;
+          bitField0_ |= 0x00000020;
          }
       }
@@ -1777,5 +1993,5 @@
         if (messageTypeBuilder_ == null) {
           messageType_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000008);
+          bitField0_ = (bitField0_ & ~0x00000020);
           onChanged();
         } else {
@@ -1833,5 +2049,5 @@
               com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>(
                   messageType_,
-                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  ((bitField0_ & 0x00000020) == 0x00000020),
                   getParentForChildren(),
                   isClean());
@@ -1845,7 +2061,7 @@
         java.util.Collections.emptyList();
       private void ensureEnumTypeIsMutable() {
-        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
           enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>(enumType_);
-          bitField0_ |= 0x00000010;
+          bitField0_ |= 0x00000040;
          }
       }
@@ -1963,5 +2179,5 @@
         if (enumTypeBuilder_ == null) {
           enumType_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000010);
+          bitField0_ = (bitField0_ & ~0x00000040);
           onChanged();
         } else {
@@ -2019,5 +2235,5 @@
               com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>(
                   enumType_,
-                  ((bitField0_ & 0x00000010) == 0x00000010),
+                  ((bitField0_ & 0x00000040) == 0x00000040),
                   getParentForChildren(),
                   isClean());
@@ -2031,7 +2247,7 @@
         java.util.Collections.emptyList();
       private void ensureServiceIsMutable() {
-        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
+        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
           service_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto>(service_);
-          bitField0_ |= 0x00000020;
+          bitField0_ |= 0x00000080;
          }
       }
@@ -2149,5 +2365,5 @@
         if (serviceBuilder_ == null) {
           service_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000020);
+          bitField0_ = (bitField0_ & ~0x00000080);
           onChanged();
         } else {
@@ -2205,5 +2421,5 @@
               com.google.protobuf.DescriptorProtos.ServiceDescriptorProto, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder>(
                   service_,
-                  ((bitField0_ & 0x00000020) == 0x00000020),
+                  ((bitField0_ & 0x00000080) == 0x00000080),
                   getParentForChildren(),
                   isClean());
@@ -2217,7 +2433,7 @@
         java.util.Collections.emptyList();
       private void ensureExtensionIsMutable() {
-        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
+        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
           extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>(extension_);
-          bitField0_ |= 0x00000040;
+          bitField0_ |= 0x00000100;
          }
       }
@@ -2335,5 +2551,5 @@
         if (extensionBuilder_ == null) {
           extension_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000040);
+          bitField0_ = (bitField0_ & ~0x00000100);
           onChanged();
         } else {
@@ -2391,5 +2607,5 @@
               com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>(
                   extension_,
-                  ((bitField0_ & 0x00000040) == 0x00000040),
+                  ((bitField0_ & 0x00000100) == 0x00000100),
                   getParentForChildren(),
                   isClean());
@@ -2404,5 +2620,5 @@
           com.google.protobuf.DescriptorProtos.FileOptions, com.google.protobuf.DescriptorProtos.FileOptions.Builder, com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder> optionsBuilder_;
       public boolean hasOptions() {
-        return ((bitField0_ & 0x00000080) == 0x00000080);
+        return ((bitField0_ & 0x00000200) == 0x00000200);
       }
       public com.google.protobuf.DescriptorProtos.FileOptions getOptions() {
@@ -2423,5 +2639,5 @@
           optionsBuilder_.setMessage(value);
         }
-        bitField0_ |= 0x00000080;
+        bitField0_ |= 0x00000200;
         return this;
       }
@@ -2434,10 +2650,10 @@
           optionsBuilder_.setMessage(builderForValue.build());
         }
-        bitField0_ |= 0x00000080;
+        bitField0_ |= 0x00000200;
         return this;
       }
       public Builder mergeOptions(com.google.protobuf.DescriptorProtos.FileOptions value) {
         if (optionsBuilder_ == null) {
-          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+          if (((bitField0_ & 0x00000200) == 0x00000200) &&
               options_ != com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance()) {
             options_ =
@@ -2450,5 +2666,5 @@
           optionsBuilder_.mergeFrom(value);
         }
-        bitField0_ |= 0x00000080;
+        bitField0_ |= 0x00000200;
         return this;
       }
@@ -2460,9 +2676,9 @@
           optionsBuilder_.clear();
         }
-        bitField0_ = (bitField0_ & ~0x00000080);
+        bitField0_ = (bitField0_ & ~0x00000200);
         return this;
       }
       public com.google.protobuf.DescriptorProtos.FileOptions.Builder getOptionsBuilder() {
-        bitField0_ |= 0x00000080;
+        bitField0_ |= 0x00000200;
         onChanged();
         return getOptionsFieldBuilder().getBuilder();
@@ -2494,5 +2710,5 @@
           com.google.protobuf.DescriptorProtos.SourceCodeInfo, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder> sourceCodeInfoBuilder_;
       public boolean hasSourceCodeInfo() {
-        return ((bitField0_ & 0x00000100) == 0x00000100);
+        return ((bitField0_ & 0x00000400) == 0x00000400);
       }
       public com.google.protobuf.DescriptorProtos.SourceCodeInfo getSourceCodeInfo() {
@@ -2513,5 +2729,5 @@
           sourceCodeInfoBuilder_.setMessage(value);
         }
-        bitField0_ |= 0x00000100;
+        bitField0_ |= 0x00000400;
         return this;
       }
@@ -2524,10 +2740,10 @@
           sourceCodeInfoBuilder_.setMessage(builderForValue.build());
         }
-        bitField0_ |= 0x00000100;
+        bitField0_ |= 0x00000400;
         return this;
       }
       public Builder mergeSourceCodeInfo(com.google.protobuf.DescriptorProtos.SourceCodeInfo value) {
         if (sourceCodeInfoBuilder_ == null) {
-          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+          if (((bitField0_ & 0x00000400) == 0x00000400) &&
               sourceCodeInfo_ != com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance()) {
             sourceCodeInfo_ =
@@ -2540,5 +2756,5 @@
           sourceCodeInfoBuilder_.mergeFrom(value);
         }
-        bitField0_ |= 0x00000100;
+        bitField0_ |= 0x00000400;
         return this;
       }
@@ -2550,9 +2766,9 @@
           sourceCodeInfoBuilder_.clear();
         }
-        bitField0_ = (bitField0_ & ~0x00000100);
+        bitField0_ = (bitField0_ & ~0x00000400);
         return this;
       }
       public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder getSourceCodeInfoBuilder() {
-        bitField0_ |= 0x00000100;
+        bitField0_ |= 0x00000400;
         onChanged();
         return getSourceCodeInfoFieldBuilder().getBuilder();
@@ -9077,4 +9293,8 @@
     com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor();
     
+    // optional string go_package = 11;
+    boolean hasGoPackage();
+    String getGoPackage();
+    
     // optional bool cc_generic_services = 16 [default = false];
     boolean hasCcGenericServices();
@@ -9294,9 +9514,41 @@
     }
     
+    // optional string go_package = 11;
+    public static final int GO_PACKAGE_FIELD_NUMBER = 11;
+    private java.lang.Object goPackage_;
+    public boolean hasGoPackage() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    public String getGoPackage() {
+      java.lang.Object ref = goPackage_;
+      if (ref instanceof String) {
+        return (String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        String s = bs.toStringUtf8();
+        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
+          goPackage_ = s;
+        }
+        return s;
+      }
+    }
+    private com.google.protobuf.ByteString getGoPackageBytes() {
+      java.lang.Object ref = goPackage_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
+        goPackage_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    
     // optional bool cc_generic_services = 16 [default = false];
     public static final int CC_GENERIC_SERVICES_FIELD_NUMBER = 16;
     private boolean ccGenericServices_;
     public boolean hasCcGenericServices() {
-      return ((bitField0_ & 0x00000020) == 0x00000020);
+      return ((bitField0_ & 0x00000040) == 0x00000040);
     }
     public boolean getCcGenericServices() {
@@ -9308,5 +9560,5 @@
     private boolean javaGenericServices_;
     public boolean hasJavaGenericServices() {
-      return ((bitField0_ & 0x00000040) == 0x00000040);
+      return ((bitField0_ & 0x00000080) == 0x00000080);
     }
     public boolean getJavaGenericServices() {
@@ -9318,5 +9570,5 @@
     private boolean pyGenericServices_;
     public boolean hasPyGenericServices() {
-      return ((bitField0_ & 0x00000080) == 0x00000080);
+      return ((bitField0_ & 0x00000100) == 0x00000100);
     }
     public boolean getPyGenericServices() {
@@ -9351,4 +9603,5 @@
       javaGenerateEqualsAndHash_ = false;
       optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED;
+      goPackage_ = "";
       ccGenericServices_ = false;
       javaGenericServices_ = false;
@@ -9394,10 +9647,13 @@
       }
       if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(11, getGoPackageBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
         output.writeBool(16, ccGenericServices_);
       }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
         output.writeBool(17, javaGenericServices_);
       }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
         output.writeBool(18, pyGenericServices_);
       }
@@ -9436,11 +9692,15 @@
       if (((bitField0_ & 0x00000020) == 0x00000020)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(16, ccGenericServices_);
+          .computeBytesSize(11, getGoPackageBytes());
       }
       if (((bitField0_ & 0x00000040) == 0x00000040)) {
         size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(16, ccGenericServices_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(17, javaGenericServices_);
       }
-      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
         size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(18, pyGenericServices_);
@@ -9590,13 +9850,15 @@
         optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED;
         bitField0_ = (bitField0_ & ~0x00000010);
+        goPackage_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
         ccGenericServices_ = false;
-        bitField0_ = (bitField0_ & ~0x00000020);
+        bitField0_ = (bitField0_ & ~0x00000040);
         javaGenericServices_ = false;
-        bitField0_ = (bitField0_ & ~0x00000040);
+        bitField0_ = (bitField0_ & ~0x00000080);
         pyGenericServices_ = false;
-        bitField0_ = (bitField0_ & ~0x00000080);
+        bitField0_ = (bitField0_ & ~0x00000100);
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000100);
+          bitField0_ = (bitField0_ & ~0x00000200);
         } else {
           uninterpretedOptionBuilder_.clear();
@@ -9663,17 +9925,21 @@
           to_bitField0_ |= 0x00000020;
         }
-        result.ccGenericServices_ = ccGenericServices_;
+        result.goPackage_ = goPackage_;
         if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
           to_bitField0_ |= 0x00000040;
         }
-        result.javaGenericServices_ = javaGenericServices_;
+        result.ccGenericServices_ = ccGenericServices_;
         if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
           to_bitField0_ |= 0x00000080;
         }
+        result.javaGenericServices_ = javaGenericServices_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
         result.pyGenericServices_ = pyGenericServices_;
         if (uninterpretedOptionBuilder_ == null) {
-          if (((bitField0_ & 0x00000100) == 0x00000100)) {
+          if (((bitField0_ & 0x00000200) == 0x00000200)) {
             uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
-            bitField0_ = (bitField0_ & ~0x00000100);
+            bitField0_ = (bitField0_ & ~0x00000200);
           }
           result.uninterpretedOption_ = uninterpretedOption_;
@@ -9712,4 +9978,7 @@
           setOptimizeFor(other.getOptimizeFor());
         }
+        if (other.hasGoPackage()) {
+          setGoPackage(other.getGoPackage());
+        }
         if (other.hasCcGenericServices()) {
           setCcGenericServices(other.getCcGenericServices());
@@ -9725,5 +9994,5 @@
             if (uninterpretedOption_.isEmpty()) {
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000100);
+              bitField0_ = (bitField0_ & ~0x00000200);
             } else {
               ensureUninterpretedOptionIsMutable();
@@ -9738,5 +10007,5 @@
               uninterpretedOptionBuilder_ = null;
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000100);
+              bitField0_ = (bitField0_ & ~0x00000200);
               uninterpretedOptionBuilder_ = 
                 com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
@@ -9815,16 +10084,21 @@
               break;
             }
+            case 90: {
+              bitField0_ |= 0x00000020;
+              goPackage_ = input.readBytes();
+              break;
+            }
             case 128: {
-              bitField0_ |= 0x00000020;
+              bitField0_ |= 0x00000040;
               ccGenericServices_ = input.readBool();
               break;
             }
             case 136: {
-              bitField0_ |= 0x00000040;
+              bitField0_ |= 0x00000080;
               javaGenericServices_ = input.readBool();
               break;
             }
             case 144: {
-              bitField0_ |= 0x00000080;
+              bitField0_ |= 0x00000100;
               pyGenericServices_ = input.readBool();
               break;
@@ -9985,8 +10259,44 @@
       }
       
+      // optional string go_package = 11;
+      private java.lang.Object goPackage_ = "";
+      public boolean hasGoPackage() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      public String getGoPackage() {
+        java.lang.Object ref = goPackage_;
+        if (!(ref instanceof String)) {
+          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
+          goPackage_ = s;
+          return s;
+        } else {
+          return (String) ref;
+        }
+      }
+      public Builder setGoPackage(String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        goPackage_ = value;
+        onChanged();
+        return this;
+      }
+      public Builder clearGoPackage() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        goPackage_ = getDefaultInstance().getGoPackage();
+        onChanged();
+        return this;
+      }
+      void setGoPackage(com.google.protobuf.ByteString value) {
+        bitField0_ |= 0x00000020;
+        goPackage_ = value;
+        onChanged();
+      }
+      
       // optional bool cc_generic_services = 16 [default = false];
       private boolean ccGenericServices_ ;
       public boolean hasCcGenericServices() {
-        return ((bitField0_ & 0x00000020) == 0x00000020);
+        return ((bitField0_ & 0x00000040) == 0x00000040);
       }
       public boolean getCcGenericServices() {
@@ -9994,5 +10304,5 @@
       }
       public Builder setCcGenericServices(boolean value) {
-        bitField0_ |= 0x00000020;
+        bitField0_ |= 0x00000040;
         ccGenericServices_ = value;
         onChanged();
@@ -10000,5 +10310,5 @@
       }
       public Builder clearCcGenericServices() {
-        bitField0_ = (bitField0_ & ~0x00000020);
+        bitField0_ = (bitField0_ & ~0x00000040);
         ccGenericServices_ = false;
         onChanged();
@@ -10009,5 +10319,5 @@
       private boolean javaGenericServices_ ;
       public boolean hasJavaGenericServices() {
-        return ((bitField0_ & 0x00000040) == 0x00000040);
+        return ((bitField0_ & 0x00000080) == 0x00000080);
       }
       public boolean getJavaGenericServices() {
@@ -10015,5 +10325,5 @@
       }
       public Builder setJavaGenericServices(boolean value) {
-        bitField0_ |= 0x00000040;
+        bitField0_ |= 0x00000080;
         javaGenericServices_ = value;
         onChanged();
@@ -10021,5 +10331,5 @@
       }
       public Builder clearJavaGenericServices() {
-        bitField0_ = (bitField0_ & ~0x00000040);
+        bitField0_ = (bitField0_ & ~0x00000080);
         javaGenericServices_ = false;
         onChanged();
@@ -10030,5 +10340,5 @@
       private boolean pyGenericServices_ ;
       public boolean hasPyGenericServices() {
-        return ((bitField0_ & 0x00000080) == 0x00000080);
+        return ((bitField0_ & 0x00000100) == 0x00000100);
       }
       public boolean getPyGenericServices() {
@@ -10036,5 +10346,5 @@
       }
       public Builder setPyGenericServices(boolean value) {
-        bitField0_ |= 0x00000080;
+        bitField0_ |= 0x00000100;
         pyGenericServices_ = value;
         onChanged();
@@ -10042,5 +10352,5 @@
       }
       public Builder clearPyGenericServices() {
-        bitField0_ = (bitField0_ & ~0x00000080);
+        bitField0_ = (bitField0_ & ~0x00000100);
         pyGenericServices_ = false;
         onChanged();
@@ -10052,7 +10362,7 @@
         java.util.Collections.emptyList();
       private void ensureUninterpretedOptionIsMutable() {
-        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
+        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
           uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
-          bitField0_ |= 0x00000100;
+          bitField0_ |= 0x00000200;
          }
       }
@@ -10170,5 +10480,5 @@
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000100);
+          bitField0_ = (bitField0_ & ~0x00000200);
           onChanged();
         } else {
@@ -10226,5 +10536,5 @@
               com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
-                  ((bitField0_ & 0x00000100) == 0x00000100),
+                  ((bitField0_ & 0x00000200) == 0x00000200),
                   getParentForChildren(),
                   isClean());
@@ -10952,4 +11262,8 @@
     boolean getPacked();
     
+    // optional bool lazy = 5 [default = false];
+    boolean hasLazy();
+    boolean getLazy();
+    
     // optional bool deprecated = 3 [default = false];
     boolean hasDeprecated();
@@ -10959,4 +11273,8 @@
     boolean hasExperimentalMapKey();
     String getExperimentalMapKey();
+    
+    // optional bool weak = 10 [default = false];
+    boolean hasWeak();
+    boolean getWeak();
     
     // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
@@ -11091,9 +11409,19 @@
     }
     
+    // optional bool lazy = 5 [default = false];
+    public static final int LAZY_FIELD_NUMBER = 5;
+    private boolean lazy_;
+    public boolean hasLazy() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    public boolean getLazy() {
+      return lazy_;
+    }
+    
     // optional bool deprecated = 3 [default = false];
     public static final int DEPRECATED_FIELD_NUMBER = 3;
     private boolean deprecated_;
     public boolean hasDeprecated() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
+      return ((bitField0_ & 0x00000008) == 0x00000008);
     }
     public boolean getDeprecated() {
@@ -11105,5 +11433,5 @@
     private java.lang.Object experimentalMapKey_;
     public boolean hasExperimentalMapKey() {
-      return ((bitField0_ & 0x00000008) == 0x00000008);
+      return ((bitField0_ & 0x00000010) == 0x00000010);
     }
     public String getExperimentalMapKey() {
@@ -11133,4 +11461,14 @@
     }
     
+    // optional bool weak = 10 [default = false];
+    public static final int WEAK_FIELD_NUMBER = 10;
+    private boolean weak_;
+    public boolean hasWeak() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    public boolean getWeak() {
+      return weak_;
+    }
+    
     // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
     public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
@@ -11157,6 +11495,8 @@
       ctype_ = com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING;
       packed_ = false;
+      lazy_ = false;
       deprecated_ = false;
       experimentalMapKey_ = "";
+      weak_ = false;
       uninterpretedOption_ = java.util.Collections.emptyList();
     }
@@ -11192,9 +11532,15 @@
         output.writeBool(2, packed_);
       }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBool(3, deprecated_);
+      }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeBool(3, deprecated_);
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBool(5, lazy_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
         output.writeBytes(9, getExperimentalMapKeyBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBool(10, weak_);
       }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
@@ -11219,11 +11565,19 @@
           .computeBoolSize(2, packed_);
       }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(3, deprecated_);
+      }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(3, deprecated_);
-      }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          .computeBoolSize(5, lazy_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
         size += com.google.protobuf.CodedOutputStream
           .computeBytesSize(9, getExperimentalMapKeyBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(10, weak_);
       }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
@@ -11361,11 +11715,15 @@
         packed_ = false;
         bitField0_ = (bitField0_ & ~0x00000002);
+        lazy_ = false;
+        bitField0_ = (bitField0_ & ~0x00000004);
         deprecated_ = false;
-        bitField0_ = (bitField0_ & ~0x00000004);
+        bitField0_ = (bitField0_ & ~0x00000008);
         experimentalMapKey_ = "";
-        bitField0_ = (bitField0_ & ~0x00000008);
+        bitField0_ = (bitField0_ & ~0x00000010);
+        weak_ = false;
+        bitField0_ = (bitField0_ & ~0x00000020);
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000010);
+          bitField0_ = (bitField0_ & ~0x00000040);
         } else {
           uninterpretedOptionBuilder_.clear();
@@ -11420,13 +11778,21 @@
           to_bitField0_ |= 0x00000004;
         }
-        result.deprecated_ = deprecated_;
+        result.lazy_ = lazy_;
         if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
           to_bitField0_ |= 0x00000008;
         }
+        result.deprecated_ = deprecated_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
         result.experimentalMapKey_ = experimentalMapKey_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.weak_ = weak_;
         if (uninterpretedOptionBuilder_ == null) {
-          if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          if (((bitField0_ & 0x00000040) == 0x00000040)) {
             uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
-            bitField0_ = (bitField0_ & ~0x00000010);
+            bitField0_ = (bitField0_ & ~0x00000040);
           }
           result.uninterpretedOption_ = uninterpretedOption_;
@@ -11456,4 +11822,7 @@
           setPacked(other.getPacked());
         }
+        if (other.hasLazy()) {
+          setLazy(other.getLazy());
+        }
         if (other.hasDeprecated()) {
           setDeprecated(other.getDeprecated());
@@ -11461,4 +11830,7 @@
         if (other.hasExperimentalMapKey()) {
           setExperimentalMapKey(other.getExperimentalMapKey());
+        }
+        if (other.hasWeak()) {
+          setWeak(other.getWeak());
         }
         if (uninterpretedOptionBuilder_ == null) {
@@ -11466,5 +11838,5 @@
             if (uninterpretedOption_.isEmpty()) {
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000010);
+              bitField0_ = (bitField0_ & ~0x00000040);
             } else {
               ensureUninterpretedOptionIsMutable();
@@ -11479,5 +11851,5 @@
               uninterpretedOptionBuilder_ = null;
               uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000010);
+              bitField0_ = (bitField0_ & ~0x00000040);
               uninterpretedOptionBuilder_ = 
                 com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
@@ -11547,11 +11919,21 @@
             }
             case 24: {
-              bitField0_ |= 0x00000004;
+              bitField0_ |= 0x00000008;
               deprecated_ = input.readBool();
               break;
             }
+            case 40: {
+              bitField0_ |= 0x00000004;
+              lazy_ = input.readBool();
+              break;
+            }
             case 74: {
-              bitField0_ |= 0x00000008;
+              bitField0_ |= 0x00000010;
               experimentalMapKey_ = input.readBytes();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000020;
+              weak_ = input.readBool();
               break;
             }
@@ -11613,8 +11995,29 @@
       }
       
+      // optional bool lazy = 5 [default = false];
+      private boolean lazy_ ;
+      public boolean hasLazy() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      public boolean getLazy() {
+        return lazy_;
+      }
+      public Builder setLazy(boolean value) {
+        bitField0_ |= 0x00000004;
+        lazy_ = value;
+        onChanged();
+        return this;
+      }
+      public Builder clearLazy() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        lazy_ = false;
+        onChanged();
+        return this;
+      }
+      
       // optional bool deprecated = 3 [default = false];
       private boolean deprecated_ ;
       public boolean hasDeprecated() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
+        return ((bitField0_ & 0x00000008) == 0x00000008);
       }
       public boolean getDeprecated() {
@@ -11622,5 +12025,5 @@
       }
       public Builder setDeprecated(boolean value) {
-        bitField0_ |= 0x00000004;
+        bitField0_ |= 0x00000008;
         deprecated_ = value;
         onChanged();
@@ -11628,5 +12031,5 @@
       }
       public Builder clearDeprecated() {
-        bitField0_ = (bitField0_ & ~0x00000004);
+        bitField0_ = (bitField0_ & ~0x00000008);
         deprecated_ = false;
         onChanged();
@@ -11637,5 +12040,5 @@
       private java.lang.Object experimentalMapKey_ = "";
       public boolean hasExperimentalMapKey() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
+        return ((bitField0_ & 0x00000010) == 0x00000010);
       }
       public String getExperimentalMapKey() {
@@ -11653,5 +12056,5 @@
     throw new NullPointerException();
   }
-  bitField0_ |= 0x00000008;
+  bitField0_ |= 0x00000010;
         experimentalMapKey_ = value;
         onChanged();
@@ -11659,5 +12062,5 @@
       }
       public Builder clearExperimentalMapKey() {
-        bitField0_ = (bitField0_ & ~0x00000008);
+        bitField0_ = (bitField0_ & ~0x00000010);
         experimentalMapKey_ = getDefaultInstance().getExperimentalMapKey();
         onChanged();
@@ -11665,7 +12068,28 @@
       }
       void setExperimentalMapKey(com.google.protobuf.ByteString value) {
-        bitField0_ |= 0x00000008;
+        bitField0_ |= 0x00000010;
         experimentalMapKey_ = value;
         onChanged();
+      }
+      
+      // optional bool weak = 10 [default = false];
+      private boolean weak_ ;
+      public boolean hasWeak() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      public boolean getWeak() {
+        return weak_;
+      }
+      public Builder setWeak(boolean value) {
+        bitField0_ |= 0x00000020;
+        weak_ = value;
+        onChanged();
+        return this;
+      }
+      public Builder clearWeak() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        weak_ = false;
+        onChanged();
+        return this;
       }
       
@@ -11674,7 +12098,7 @@
         java.util.Collections.emptyList();
       private void ensureUninterpretedOptionIsMutable() {
-        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
           uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
-          bitField0_ |= 0x00000010;
+          bitField0_ |= 0x00000040;
          }
       }
@@ -11792,5 +12216,5 @@
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000010);
+          bitField0_ = (bitField0_ & ~0x00000040);
           onChanged();
         } else {
@@ -11848,5 +12272,5 @@
               com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                   uninterpretedOption_,
-                  ((bitField0_ & 0x00000010) == 0x00000010),
+                  ((bitField0_ & 0x00000040) == 0x00000040),
                   getParentForChildren(),
                   isClean());
@@ -11870,4 +12294,8 @@
       com.google.protobuf.GeneratedMessage.
           ExtendableMessageOrBuilder<EnumOptions> {
+    
+    // optional bool allow_alias = 2 [default = true];
+    boolean hasAllowAlias();
+    boolean getAllowAlias();
     
     // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
@@ -11909,4 +12337,15 @@
     }
     
+    private int bitField0_;
+    // optional bool allow_alias = 2 [default = true];
+    public static final int ALLOW_ALIAS_FIELD_NUMBER = 2;
+    private boolean allowAlias_;
+    public boolean hasAllowAlias() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    public boolean getAllowAlias() {
+      return allowAlias_;
+    }
+    
     // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
     public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
@@ -11931,4 +12370,5 @@
     
     private void initFields() {
+      allowAlias_ = true;
       uninterpretedOption_ = java.util.Collections.emptyList();
     }
@@ -11958,4 +12398,7 @@
         .ExtendableMessage<com.google.protobuf.DescriptorProtos.EnumOptions>.ExtensionWriter extensionWriter =
           newExtensionWriter();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBool(2, allowAlias_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         output.writeMessage(999, uninterpretedOption_.get(i));
@@ -11971,4 +12414,8 @@
     
       size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(2, allowAlias_);
+      }
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
@@ -12101,7 +12548,9 @@
       public Builder clear() {
         super.clear();
+        allowAlias_ = true;
+        bitField0_ = (bitField0_ & ~0x00000001);
         if (uninterpretedOptionBuilder_ == null) {
           uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+          bitField0_ = (bitField0_ & ~0x00000002);
         } else {
           uninterpretedOptionBuilder_.clear();
@@ -12143,5 +12592,618 @@
       public com.google.protobuf.DescriptorProtos.EnumOptions buildPartial() {
         com.google.protobuf.DescriptorProtos.EnumOptions result = new com.google.protobuf.DescriptorProtos.EnumOptions(this);
-        //int from_bitField0_ = bitField0_;
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.allowAlias_ = allowAlias_;
+        if (uninterpretedOptionBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.uninterpretedOption_ = uninterpretedOption_;
+        } else {
+          result.uninterpretedOption_ = uninterpretedOptionBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+      
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof com.google.protobuf.DescriptorProtos.EnumOptions) {
+          return mergeFrom((com.google.protobuf.DescriptorProtos.EnumOptions)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+      
+      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumOptions other) {
+        if (other == com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance()) return this;
+        if (other.hasAllowAlias()) {
+          setAllowAlias(other.getAllowAlias());
+        }
+        if (uninterpretedOptionBuilder_ == null) {
+          if (!other.uninterpretedOption_.isEmpty()) {
+            if (uninterpretedOption_.isEmpty()) {
+              uninterpretedOption_ = other.uninterpretedOption_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureUninterpretedOptionIsMutable();
+              uninterpretedOption_.addAll(other.uninterpretedOption_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.uninterpretedOption_.isEmpty()) {
+            if (uninterpretedOptionBuilder_.isEmpty()) {
+              uninterpretedOptionBuilder_.dispose();
+              uninterpretedOptionBuilder_ = null;
+              uninterpretedOption_ = other.uninterpretedOption_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              uninterpretedOptionBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getUninterpretedOptionFieldBuilder() : null;
+            } else {
+              uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_);
+            }
+          }
+        }
+        this.mergeExtensionFields(other);
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+      
+      public final boolean isInitialized() {
+        for (int i = 0; i < getUninterpretedOptionCount(); i++) {
+          if (!getUninterpretedOption(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (!extensionsAreInitialized()) {
+          
+          return false;
+        }
+        return true;
+      }
+      
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder(
+            this.getUnknownFields());
+        while (true) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              this.setUnknownFields(unknownFields.build());
+              onChanged();
+              return this;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                this.setUnknownFields(unknownFields.build());
+                onChanged();
+                return this;
+              }
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000001;
+              allowAlias_ = input.readBool();
+              break;
+            }
+            case 7994: {
+              com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder();
+              input.readMessage(subBuilder, extensionRegistry);
+              addUninterpretedOption(subBuilder.buildPartial());
+              break;
+            }
+          }
+        }
+      }
+      
+      private int bitField0_;
+      
+      // optional bool allow_alias = 2 [default = true];
+      private boolean allowAlias_ = true;
+      public boolean hasAllowAlias() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      public boolean getAllowAlias() {
+        return allowAlias_;
+      }
+      public Builder setAllowAlias(boolean value) {
+        bitField0_ |= 0x00000001;
+        allowAlias_ = value;
+        onChanged();
+        return this;
+      }
+      public Builder clearAllowAlias() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        allowAlias_ = true;
+        onChanged();
+        return this;
+      }
+      
+      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+      private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
+        java.util.Collections.emptyList();
+      private void ensureUninterpretedOptionIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+      
+      private com.google.protobuf.RepeatedFieldBuilder<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_;
+      
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+        if (uninterpretedOptionBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(uninterpretedOption_);
+        } else {
+          return uninterpretedOptionBuilder_.getMessageList();
+        }
+      }
+      public int getUninterpretedOptionCount() {
+        if (uninterpretedOptionBuilder_ == null) {
+          return uninterpretedOption_.size();
+        } else {
+          return uninterpretedOptionBuilder_.getCount();
+        }
+      }
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+        if (uninterpretedOptionBuilder_ == null) {
+          return uninterpretedOption_.get(index);
+        } else {
+          return uninterpretedOptionBuilder_.getMessage(index);
+        }
+      }
+      public Builder setUninterpretedOption(
+          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
+        if (uninterpretedOptionBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.set(index, value);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      public Builder setUninterpretedOption(
+          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
+        if (uninterpretedOptionBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.add(value);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      public Builder addUninterpretedOption(
+          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
+        if (uninterpretedOptionBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.add(index, value);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      public Builder addUninterpretedOption(
+          com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.add(builderForValue.build());
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      public Builder addUninterpretedOption(
+          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      public Builder addAllUninterpretedOption(
+          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          super.addAll(values, uninterpretedOption_);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      public Builder clearUninterpretedOption() {
+        if (uninterpretedOptionBuilder_ == null) {
+          uninterpretedOption_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.clear();
+        }
+        return this;
+      }
+      public Builder removeUninterpretedOption(int index) {
+        if (uninterpretedOptionBuilder_ == null) {
+          ensureUninterpretedOptionIsMutable();
+          uninterpretedOption_.remove(index);
+          onChanged();
+        } else {
+          uninterpretedOptionBuilder_.remove(index);
+        }
+        return this;
+      }
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder(
+          int index) {
+        return getUninterpretedOptionFieldBuilder().getBuilder(index);
+      }
+      public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+          int index) {
+        if (uninterpretedOptionBuilder_ == null) {
+          return uninterpretedOption_.get(index);  } else {
+          return uninterpretedOptionBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
+           getUninterpretedOptionOrBuilderList() {
+        if (uninterpretedOptionBuilder_ != null) {
+          return uninterpretedOptionBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(uninterpretedOption_);
+        }
+      }
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() {
+        return getUninterpretedOptionFieldBuilder().addBuilder(
+            com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance());
+      }
+      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder(
+          int index) {
+        return getUninterpretedOptionFieldBuilder().addBuilder(
+            index, com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance());
+      }
+      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> 
+           getUninterpretedOptionBuilderList() {
+        return getUninterpretedOptionFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
+          getUninterpretedOptionFieldBuilder() {
+        if (uninterpretedOptionBuilder_ == null) {
+          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
+                  uninterpretedOption_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          uninterpretedOption_ = null;
+        }
+        return uninterpretedOptionBuilder_;
+      }
+      
+      // @@protoc_insertion_point(builder_scope:google.protobuf.EnumOptions)
+    }
+    
+    static {
+      defaultInstance = new EnumOptions(true);
+      defaultInstance.initFields();
+    }
+    
+    // @@protoc_insertion_point(class_scope:google.protobuf.EnumOptions)
+  }
+  
+  public interface EnumValueOptionsOrBuilder extends
+      com.google.protobuf.GeneratedMessage.
+          ExtendableMessageOrBuilder<EnumValueOptions> {
+    
+    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
+    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> 
+        getUninterpretedOptionList();
+    com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
+    int getUninterpretedOptionCount();
+    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
+        getUninterpretedOptionOrBuilderList();
+    com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+        int index);
+  }
+  public static final class EnumValueOptions extends
+      com.google.protobuf.GeneratedMessage.ExtendableMessage<
+        EnumValueOptions> implements EnumValueOptionsOrBuilder {
+    // Use EnumValueOptions.newBuilder() to construct.
+    private EnumValueOptions(Builder builder) {
+      super(builder);
+    }
+    private EnumValueOptions(boolean noInit) {}
+    
+    private static final EnumValueOptions defaultInstance;
+    public static EnumValueOptions getDefaultInstance() {
+      return defaultInstance;
+    }
+    
+    public EnumValueOptions getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+    
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_descriptor;
+    }
+    
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable;
+    }
+    
+    // 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_;
+    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
+      return uninterpretedOption_;
+    }
+    public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
+        getUninterpretedOptionOrBuilderList() {
+      return uninterpretedOption_;
+    }
+    public int getUninterpretedOptionCount() {
+      return uninterpretedOption_.size();
+    }
+    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
+      return uninterpretedOption_.get(index);
+    }
+    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
+        int index) {
+      return uninterpretedOption_.get(index);
+    }
+    
+    private void initFields() {
+      uninterpretedOption_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+      
+      for (int i = 0; i < getUninterpretedOptionCount(); i++) {
+        if (!getUninterpretedOption(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (!extensionsAreInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+    
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      com.google.protobuf.GeneratedMessage
+        .ExtendableMessage<com.google.protobuf.DescriptorProtos.EnumValueOptions>.ExtensionWriter extensionWriter =
+          newExtensionWriter();
+      for (int i = 0; i < uninterpretedOption_.size(); i++) {
+        output.writeMessage(999, uninterpretedOption_.get(i));
+      }
+      extensionWriter.writeUntil(536870912, output);
+      getUnknownFields().writeTo(output);
+    }
+    
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+    
+      size = 0;
+      for (int i = 0; i < uninterpretedOption_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(999, uninterpretedOption_.get(i));
+      }
+      size += extensionsSerializedSize();
+      size += 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.EnumValueOptions parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumValueOptions prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+    
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
+          com.google.protobuf.DescriptorProtos.EnumValueOptions, Builder> implements com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_descriptor;
+      }
+      
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable;
+      }
+      
+      // Construct using com.google.protobuf.DescriptorProtos.EnumValueOptions.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+      
+      private Builder(BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getUninterpretedOptionFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+      
+      public Builder clear() {
+        super.clear();
+        if (uninterpretedOptionBuilder_ == null) {
+          uninterpretedOption_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          uninterpretedOptionBuilder_.clear();
+        }
+        return this;
+      }
+      
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+      
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return com.google.protobuf.DescriptorProtos.EnumValueOptions.getDescriptor();
+      }
+      
+      public com.google.protobuf.DescriptorProtos.EnumValueOptions getDefaultInstanceForType() {
+        return com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance();
+      }
+      
+      public com.google.protobuf.DescriptorProtos.EnumValueOptions build() {
+        com.google.protobuf.DescriptorProtos.EnumValueOptions result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+      
+      private com.google.protobuf.DescriptorProtos.EnumValueOptions buildParsed()
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        com.google.protobuf.DescriptorProtos.EnumValueOptions result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(
+            result).asInvalidProtocolBufferException();
+        }
+        return result;
+      }
+      
+      public com.google.protobuf.DescriptorProtos.EnumValueOptions buildPartial() {
+        com.google.protobuf.DescriptorProtos.EnumValueOptions result = new com.google.protobuf.DescriptorProtos.EnumValueOptions(this);
+        int from_bitField0_ = bitField0_;
         if (uninterpretedOptionBuilder_ == null) {
           if (((bitField0_ & 0x00000001) == 0x00000001)) {
@@ -12158,6 +13220,6 @@
       
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof com.google.protobuf.DescriptorProtos.EnumOptions) {
-          return mergeFrom((com.google.protobuf.DescriptorProtos.EnumOptions)other);
+        if (other instanceof com.google.protobuf.DescriptorProtos.EnumValueOptions) {
+          return mergeFrom((com.google.protobuf.DescriptorProtos.EnumValueOptions)other);
         } else {
           super.mergeFrom(other);
@@ -12166,6 +13228,6 @@
       }
       
-      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumOptions other) {
-        if (other == com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance()) return this;
+      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumValueOptions other) {
+        if (other == com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance()) return this;
         if (uninterpretedOptionBuilder_ == null) {
           if (!other.uninterpretedOption_.isEmpty()) {
@@ -12434,18 +13496,18 @@
       }
       
-      // @@protoc_insertion_point(builder_scope:google.protobuf.EnumOptions)
+      // @@protoc_insertion_point(builder_scope:google.protobuf.EnumValueOptions)
     }
     
     static {
-      defaultInstance = new EnumOptions(true);
+      defaultInstance = new EnumValueOptions(true);
       defaultInstance.initFields();
     }
     
-    // @@protoc_insertion_point(class_scope:google.protobuf.EnumOptions)
+    // @@protoc_insertion_point(class_scope:google.protobuf.EnumValueOptions)
   }
   
-  public interface EnumValueOptionsOrBuilder extends
+  public interface ServiceOptionsOrBuilder extends
       com.google.protobuf.GeneratedMessage.
-          ExtendableMessageOrBuilder<EnumValueOptions> {
+          ExtendableMessageOrBuilder<ServiceOptions> {
     
     // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
@@ -12459,19 +13521,19 @@
         int index);
   }
-  public static final class EnumValueOptions extends
+  public static final class ServiceOptions extends
       com.google.protobuf.GeneratedMessage.ExtendableMessage<
-        EnumValueOptions> implements EnumValueOptionsOrBuilder {
-    // Use EnumValueOptions.newBuilder() to construct.
-    private EnumValueOptions(Builder builder) {
+        ServiceOptions> implements ServiceOptionsOrBuilder {
+    // Use ServiceOptions.newBuilder() to construct.
+    private ServiceOptions(Builder builder) {
       super(builder);
     }
-    private EnumValueOptions(boolean noInit) {}
-    
-    private static final EnumValueOptions defaultInstance;
-    public static EnumValueOptions getDefaultInstance() {
+    private ServiceOptions(boolean noInit) {}
+    
+    private static final ServiceOptions defaultInstance;
+    public static ServiceOptions getDefaultInstance() {
       return defaultInstance;
     }
     
-    public EnumValueOptions getDefaultInstanceForType() {
+    public ServiceOptions getDefaultInstanceForType() {
       return defaultInstance;
     }
@@ -12479,10 +13541,10 @@
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_descriptor;
+      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_descriptor;
     }
     
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable;
+      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_fieldAccessorTable;
     }
     
@@ -12534,5 +13596,5 @@
       getSerializedSize();
       com.google.protobuf.GeneratedMessage
-        .ExtendableMessage<com.google.protobuf.DescriptorProtos.EnumValueOptions>.ExtensionWriter extensionWriter =
+        .ExtendableMessage<com.google.protobuf.DescriptorProtos.ServiceOptions>.ExtensionWriter extensionWriter =
           newExtensionWriter();
       for (int i = 0; i < uninterpretedOption_.size(); i++) {
@@ -12566,10 +13628,10 @@
     }
     
-    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
+    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return newBuilder().mergeFrom(data).buildParsed();
     }
-    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
+    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -12578,9 +13640,9 @@
                .buildParsed();
     }
-    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(byte[] data)
+    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return newBuilder().mergeFrom(data).buildParsed();
     }
-    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
+    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -12589,9 +13651,9 @@
                .buildParsed();
     }
-    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(java.io.InputStream input)
+    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return newBuilder().mergeFrom(input).buildParsed();
     }
-    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
+    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -12600,5 +13662,5 @@
                .buildParsed();
     }
-    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseDelimitedFrom(java.io.InputStream input)
+    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       Builder builder = newBuilder();
@@ -12609,5 +13671,5 @@
       }
     }
-    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseDelimitedFrom(
+    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -12620,10 +13682,10 @@
       }
     }
-    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
+    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return newBuilder().mergeFrom(input).buildParsed();
     }
-    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
+    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -12635,5 +13697,5 @@
     public static Builder newBuilder() { return Builder.create(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumValueOptions prototype) {
+    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.ServiceOptions prototype) {
       return newBuilder().mergeFrom(prototype);
     }
@@ -12648,16 +13710,16 @@
     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.ServiceOptions, Builder> implements com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_descriptor;
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_descriptor;
       }
       
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable;
-      }
-      
-      // Construct using com.google.protobuf.DescriptorProtos.EnumValueOptions.newBuilder()
+        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_fieldAccessorTable;
+      }
+      
+      // Construct using com.google.protobuf.DescriptorProtos.ServiceOptions.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
@@ -12694,13 +13756,13 @@
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return com.google.protobuf.DescriptorProtos.EnumValueOptions.getDescriptor();
-      }
-      
-      public com.google.protobuf.DescriptorProtos.EnumValueOptions getDefaultInstanceForType() {
-        return com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance();
-      }
-      
-      public com.google.protobuf.DescriptorProtos.EnumValueOptions build() {
-        com.google.protobuf.DescriptorProtos.EnumValueOptions result = buildPartial();
+        return com.google.protobuf.DescriptorProtos.ServiceOptions.getDescriptor();
+      }
+      
+      public com.google.protobuf.DescriptorProtos.ServiceOptions getDefaultInstanceForType() {
+        return com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance();
+      }
+      
+      public com.google.protobuf.DescriptorProtos.ServiceOptions build() {
+        com.google.protobuf.DescriptorProtos.ServiceOptions result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
@@ -12709,7 +13771,7 @@
       }
       
-      private com.google.protobuf.DescriptorProtos.EnumValueOptions buildParsed()
+      private com.google.protobuf.DescriptorProtos.ServiceOptions buildParsed()
           throws com.google.protobuf.InvalidProtocolBufferException {
-        com.google.protobuf.DescriptorProtos.EnumValueOptions result = buildPartial();
+        com.google.protobuf.DescriptorProtos.ServiceOptions result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(
@@ -12719,7 +13781,7 @@
       }
       
-      public com.google.protobuf.DescriptorProtos.EnumValueOptions buildPartial() {
-        com.google.protobuf.DescriptorProtos.EnumValueOptions result = new com.google.protobuf.DescriptorProtos.EnumValueOptions(this);
-        //int from_bitField0_ = bitField0_;
+      public com.google.protobuf.DescriptorProtos.ServiceOptions buildPartial() {
+        com.google.protobuf.DescriptorProtos.ServiceOptions result = new com.google.protobuf.DescriptorProtos.ServiceOptions(this);
+        int from_bitField0_ = bitField0_;
         if (uninterpretedOptionBuilder_ == null) {
           if (((bitField0_ & 0x00000001) == 0x00000001)) {
@@ -12736,6 +13798,6 @@
       
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof com.google.protobuf.DescriptorProtos.EnumValueOptions) {
-          return mergeFrom((com.google.protobuf.DescriptorProtos.EnumValueOptions)other);
+        if (other instanceof com.google.protobuf.DescriptorProtos.ServiceOptions) {
+          return mergeFrom((com.google.protobuf.DescriptorProtos.ServiceOptions)other);
         } else {
           super.mergeFrom(other);
@@ -12744,6 +13806,6 @@
       }
       
-      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumValueOptions other) {
-        if (other == com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance()) return this;
+      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.ServiceOptions other) {
+        if (other == com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance()) return this;
         if (uninterpretedOptionBuilder_ == null) {
           if (!other.uninterpretedOption_.isEmpty()) {
@@ -13012,582 +14074,4 @@
       }
       
-      // @@protoc_insertion_point(builder_scope:google.protobuf.EnumValueOptions)
-    }
-    
-    static {
-      defaultInstance = new EnumValueOptions(true);
-      defaultInstance.initFields();
-    }
-    
-    // @@protoc_insertion_point(class_scope:google.protobuf.EnumValueOptions)
-  }
-  
-  public interface ServiceOptionsOrBuilder extends
-      com.google.protobuf.GeneratedMessage.
-          ExtendableMessageOrBuilder<ServiceOptions> {
-    
-    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
-    java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> 
-        getUninterpretedOptionList();
-    com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
-    int getUninterpretedOptionCount();
-    java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
-        getUninterpretedOptionOrBuilderList();
-    com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
-        int index);
-  }
-  public static final class ServiceOptions extends
-      com.google.protobuf.GeneratedMessage.ExtendableMessage<
-        ServiceOptions> implements ServiceOptionsOrBuilder {
-    // Use ServiceOptions.newBuilder() to construct.
-    private ServiceOptions(Builder builder) {
-      super(builder);
-    }
-    private ServiceOptions(boolean noInit) {}
-    
-    private static final ServiceOptions defaultInstance;
-    public static ServiceOptions getDefaultInstance() {
-      return defaultInstance;
-    }
-    
-    public ServiceOptions getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-    
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_descriptor;
-    }
-    
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_fieldAccessorTable;
-    }
-    
-    // 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_;
-    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
-      return uninterpretedOption_;
-    }
-    public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
-        getUninterpretedOptionOrBuilderList() {
-      return uninterpretedOption_;
-    }
-    public int getUninterpretedOptionCount() {
-      return uninterpretedOption_.size();
-    }
-    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
-      return uninterpretedOption_.get(index);
-    }
-    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
-        int index) {
-      return uninterpretedOption_.get(index);
-    }
-    
-    private void initFields() {
-      uninterpretedOption_ = java.util.Collections.emptyList();
-    }
-    private byte memoizedIsInitialized = -1;
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
-      
-      for (int i = 0; i < getUninterpretedOptionCount(); i++) {
-        if (!getUninterpretedOption(i).isInitialized()) {
-          memoizedIsInitialized = 0;
-          return false;
-        }
-      }
-      if (!extensionsAreInitialized()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      memoizedIsInitialized = 1;
-      return true;
-    }
-    
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      getSerializedSize();
-      com.google.protobuf.GeneratedMessage
-        .ExtendableMessage<com.google.protobuf.DescriptorProtos.ServiceOptions>.ExtensionWriter extensionWriter =
-          newExtensionWriter();
-      for (int i = 0; i < uninterpretedOption_.size(); i++) {
-        output.writeMessage(999, uninterpretedOption_.get(i));
-      }
-      extensionWriter.writeUntil(536870912, output);
-      getUnknownFields().writeTo(output);
-    }
-    
-    private int memoizedSerializedSize = -1;
-    public int getSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-    
-      size = 0;
-      for (int i = 0; i < uninterpretedOption_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(999, uninterpretedOption_.get(i));
-      }
-      size += extensionsSerializedSize();
-      size += 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.ServiceOptions parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
-    }
-    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
-    }
-    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
-    }
-    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
-    }
-    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
-    }
-    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
-    }
-    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
-    }
-    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
-    }
-    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
-    }
-    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
-    }
-    
-    public static Builder newBuilder() { return Builder.create(); }
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.ServiceOptions prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    public Builder toBuilder() { return newBuilder(this); }
-    
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
-          com.google.protobuf.DescriptorProtos.ServiceOptions, Builder> implements com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_descriptor;
-      }
-      
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_fieldAccessorTable;
-      }
-      
-      // Construct using com.google.protobuf.DescriptorProtos.ServiceOptions.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-      
-      private Builder(BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-          getUninterpretedOptionFieldBuilder();
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-      
-      public Builder clear() {
-        super.clear();
-        if (uninterpretedOptionBuilder_ == null) {
-          uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          uninterpretedOptionBuilder_.clear();
-        }
-        return this;
-      }
-      
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-      
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return com.google.protobuf.DescriptorProtos.ServiceOptions.getDescriptor();
-      }
-      
-      public com.google.protobuf.DescriptorProtos.ServiceOptions getDefaultInstanceForType() {
-        return com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance();
-      }
-      
-      public com.google.protobuf.DescriptorProtos.ServiceOptions build() {
-        com.google.protobuf.DescriptorProtos.ServiceOptions result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-      
-      private com.google.protobuf.DescriptorProtos.ServiceOptions buildParsed()
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        com.google.protobuf.DescriptorProtos.ServiceOptions result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(
-            result).asInvalidProtocolBufferException();
-        }
-        return result;
-      }
-      
-      public com.google.protobuf.DescriptorProtos.ServiceOptions buildPartial() {
-        com.google.protobuf.DescriptorProtos.ServiceOptions result = new com.google.protobuf.DescriptorProtos.ServiceOptions(this);
-        //int from_bitField0_ = bitField0_;
-        if (uninterpretedOptionBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) == 0x00000001)) {
-            uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.uninterpretedOption_ = uninterpretedOption_;
-        } else {
-          result.uninterpretedOption_ = uninterpretedOptionBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-      
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof com.google.protobuf.DescriptorProtos.ServiceOptions) {
-          return mergeFrom((com.google.protobuf.DescriptorProtos.ServiceOptions)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-      
-      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.ServiceOptions other) {
-        if (other == com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance()) return this;
-        if (uninterpretedOptionBuilder_ == null) {
-          if (!other.uninterpretedOption_.isEmpty()) {
-            if (uninterpretedOption_.isEmpty()) {
-              uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureUninterpretedOptionIsMutable();
-              uninterpretedOption_.addAll(other.uninterpretedOption_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.uninterpretedOption_.isEmpty()) {
-            if (uninterpretedOptionBuilder_.isEmpty()) {
-              uninterpretedOptionBuilder_.dispose();
-              uninterpretedOptionBuilder_ = null;
-              uninterpretedOption_ = other.uninterpretedOption_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              uninterpretedOptionBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getUninterpretedOptionFieldBuilder() : null;
-            } else {
-              uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_);
-            }
-          }
-        }
-        this.mergeExtensionFields(other);
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-      
-      public final boolean isInitialized() {
-        for (int i = 0; i < getUninterpretedOptionCount(); i++) {
-          if (!getUninterpretedOption(i).isInitialized()) {
-            
-            return false;
-          }
-        }
-        if (!extensionsAreInitialized()) {
-          
-          return false;
-        }
-        return true;
-      }
-      
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder(
-            this.getUnknownFields());
-        while (true) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              this.setUnknownFields(unknownFields.build());
-              onChanged();
-              return this;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                this.setUnknownFields(unknownFields.build());
-                onChanged();
-                return this;
-              }
-              break;
-            }
-            case 7994: {
-              com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder();
-              input.readMessage(subBuilder, extensionRegistry);
-              addUninterpretedOption(subBuilder.buildPartial());
-              break;
-            }
-          }
-        }
-      }
-      
-      private int bitField0_;
-      
-      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
-      private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
-        java.util.Collections.emptyList();
-      private void ensureUninterpretedOptionIsMutable() {
-        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
-          uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-      
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_;
-      
-      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
-        if (uninterpretedOptionBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(uninterpretedOption_);
-        } else {
-          return uninterpretedOptionBuilder_.getMessageList();
-        }
-      }
-      public int getUninterpretedOptionCount() {
-        if (uninterpretedOptionBuilder_ == null) {
-          return uninterpretedOption_.size();
-        } else {
-          return uninterpretedOptionBuilder_.getCount();
-        }
-      }
-      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
-        if (uninterpretedOptionBuilder_ == null) {
-          return uninterpretedOption_.get(index);
-        } else {
-          return uninterpretedOptionBuilder_.getMessage(index);
-        }
-      }
-      public Builder setUninterpretedOption(
-          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
-        if (uninterpretedOptionBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureUninterpretedOptionIsMutable();
-          uninterpretedOption_.set(index, value);
-          onChanged();
-        } else {
-          uninterpretedOptionBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      public Builder setUninterpretedOption(
-          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
-        if (uninterpretedOptionBuilder_ == null) {
-          ensureUninterpretedOptionIsMutable();
-          uninterpretedOption_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          uninterpretedOptionBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
-        if (uninterpretedOptionBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureUninterpretedOptionIsMutable();
-          uninterpretedOption_.add(value);
-          onChanged();
-        } else {
-          uninterpretedOptionBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      public Builder addUninterpretedOption(
-          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
-        if (uninterpretedOptionBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureUninterpretedOptionIsMutable();
-          uninterpretedOption_.add(index, value);
-          onChanged();
-        } else {
-          uninterpretedOptionBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      public Builder addUninterpretedOption(
-          com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
-        if (uninterpretedOptionBuilder_ == null) {
-          ensureUninterpretedOptionIsMutable();
-          uninterpretedOption_.add(builderForValue.build());
-          onChanged();
-        } else {
-          uninterpretedOptionBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      public Builder addUninterpretedOption(
-          int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
-        if (uninterpretedOptionBuilder_ == null) {
-          ensureUninterpretedOptionIsMutable();
-          uninterpretedOption_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          uninterpretedOptionBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      public Builder addAllUninterpretedOption(
-          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) {
-        if (uninterpretedOptionBuilder_ == null) {
-          ensureUninterpretedOptionIsMutable();
-          super.addAll(values, uninterpretedOption_);
-          onChanged();
-        } else {
-          uninterpretedOptionBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      public Builder clearUninterpretedOption() {
-        if (uninterpretedOptionBuilder_ == null) {
-          uninterpretedOption_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          uninterpretedOptionBuilder_.clear();
-        }
-        return this;
-      }
-      public Builder removeUninterpretedOption(int index) {
-        if (uninterpretedOptionBuilder_ == null) {
-          ensureUninterpretedOptionIsMutable();
-          uninterpretedOption_.remove(index);
-          onChanged();
-        } else {
-          uninterpretedOptionBuilder_.remove(index);
-        }
-        return this;
-      }
-      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder(
-          int index) {
-        return getUninterpretedOptionFieldBuilder().getBuilder(index);
-      }
-      public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
-          int index) {
-        if (uninterpretedOptionBuilder_ == null) {
-          return uninterpretedOption_.get(index);  } else {
-          return uninterpretedOptionBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
-           getUninterpretedOptionOrBuilderList() {
-        if (uninterpretedOptionBuilder_ != null) {
-          return uninterpretedOptionBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(uninterpretedOption_);
-        }
-      }
-      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() {
-        return getUninterpretedOptionFieldBuilder().addBuilder(
-            com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance());
-      }
-      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder(
-          int index) {
-        return getUninterpretedOptionFieldBuilder().addBuilder(
-            index, com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance());
-      }
-      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> 
-           getUninterpretedOptionBuilderList() {
-        return getUninterpretedOptionFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
-          getUninterpretedOptionFieldBuilder() {
-        if (uninterpretedOptionBuilder_ == null) {
-          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
-                  uninterpretedOption_,
-                  ((bitField0_ & 0x00000001) == 0x00000001),
-                  getParentForChildren(),
-                  isClean());
-          uninterpretedOption_ = null;
-        }
-        return uninterpretedOptionBuilder_;
-      }
-      
       // @@protoc_insertion_point(builder_scope:google.protobuf.ServiceOptions)
     }
@@ -13877,5 +14361,5 @@
       public com.google.protobuf.DescriptorProtos.MethodOptions buildPartial() {
         com.google.protobuf.DescriptorProtos.MethodOptions result = new com.google.protobuf.DescriptorProtos.MethodOptions(this);
-        //int from_bitField0_ = bitField0_;
+        int from_bitField0_ = bitField0_;
         if (uninterpretedOptionBuilder_ == null) {
           if (((bitField0_ & 0x00000001) == 0x00000001)) {
@@ -15665,4 +16149,12 @@
       int getSpanCount();
       int getSpan(int index);
+      
+      // optional string leading_comments = 3;
+      boolean hasLeadingComments();
+      String getLeadingComments();
+      
+      // optional string trailing_comments = 4;
+      boolean hasTrailingComments();
+      String getTrailingComments();
     }
     public static final class Location extends
@@ -15694,4 +16186,5 @@
       }
       
+      private int bitField0_;
       // repeated int32 path = 1 [packed = true];
       public static final int PATH_FIELD_NUMBER = 1;
@@ -15724,7 +16217,73 @@
       private int spanMemoizedSerializedSize = -1;
       
+      // optional string leading_comments = 3;
+      public static final int LEADING_COMMENTS_FIELD_NUMBER = 3;
+      private java.lang.Object leadingComments_;
+      public boolean hasLeadingComments() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      public String getLeadingComments() {
+        java.lang.Object ref = leadingComments_;
+        if (ref instanceof String) {
+          return (String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          String s = bs.toStringUtf8();
+          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
+            leadingComments_ = s;
+          }
+          return s;
+        }
+      }
+      private com.google.protobuf.ByteString getLeadingCommentsBytes() {
+        java.lang.Object ref = leadingComments_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
+          leadingComments_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      
+      // optional string trailing_comments = 4;
+      public static final int TRAILING_COMMENTS_FIELD_NUMBER = 4;
+      private java.lang.Object trailingComments_;
+      public boolean hasTrailingComments() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      public String getTrailingComments() {
+        java.lang.Object ref = trailingComments_;
+        if (ref instanceof String) {
+          return (String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          String s = bs.toStringUtf8();
+          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
+            trailingComments_ = s;
+          }
+          return s;
+        }
+      }
+      private com.google.protobuf.ByteString getTrailingCommentsBytes() {
+        java.lang.Object ref = trailingComments_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
+          trailingComments_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      
       private void initFields() {
         path_ = java.util.Collections.emptyList();;
         span_ = java.util.Collections.emptyList();;
+        leadingComments_ = "";
+        trailingComments_ = "";
       }
       private byte memoizedIsInitialized = -1;
@@ -15754,4 +16313,10 @@
           output.writeInt32NoTag(span_.get(i));
         }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(3, getLeadingCommentsBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(4, getTrailingCommentsBytes());
+        }
         getUnknownFields().writeTo(output);
       }
@@ -15790,4 +16355,12 @@
           }
           spanMemoizedSerializedSize = dataSize;
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, getLeadingCommentsBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(4, getTrailingCommentsBytes());
         }
         size += getUnknownFields().getSerializedSize();
@@ -15919,4 +16492,8 @@
           span_ = java.util.Collections.emptyList();;
           bitField0_ = (bitField0_ & ~0x00000002);
+          leadingComments_ = "";
+          bitField0_ = (bitField0_ & ~0x00000004);
+          trailingComments_ = "";
+          bitField0_ = (bitField0_ & ~0x00000008);
           return this;
         }
@@ -15955,5 +16532,6 @@
         public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location buildPartial() {
           com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location result = new com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location(this);
-          //int from_bitField0_ = bitField0_;
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
           if (((bitField0_ & 0x00000001) == 0x00000001)) {
             path_ = java.util.Collections.unmodifiableList(path_);
@@ -15966,4 +16544,13 @@
           }
           result.span_ = span_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.leadingComments_ = leadingComments_;
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.trailingComments_ = trailingComments_;
+          result.bitField0_ = to_bitField0_;
           onBuilt();
           return result;
@@ -16000,4 +16587,10 @@
             }
             onChanged();
+          }
+          if (other.hasLeadingComments()) {
+            setLeadingComments(other.getLeadingComments());
+          }
+          if (other.hasTrailingComments()) {
+            setTrailingComments(other.getTrailingComments());
           }
           this.mergeUnknownFields(other.getUnknownFields());
@@ -16060,4 +16653,14 @@
                 break;
               }
+              case 26: {
+                bitField0_ |= 0x00000004;
+                leadingComments_ = input.readBytes();
+                break;
+              }
+              case 34: {
+                bitField0_ |= 0x00000008;
+                trailingComments_ = input.readBytes();
+                break;
+              }
             }
           }
@@ -16156,4 +16759,76 @@
         }
         
+        // optional string leading_comments = 3;
+        private java.lang.Object leadingComments_ = "";
+        public boolean hasLeadingComments() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        public String getLeadingComments() {
+          java.lang.Object ref = leadingComments_;
+          if (!(ref instanceof String)) {
+            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
+            leadingComments_ = s;
+            return s;
+          } else {
+            return (String) ref;
+          }
+        }
+        public Builder setLeadingComments(String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          leadingComments_ = value;
+          onChanged();
+          return this;
+        }
+        public Builder clearLeadingComments() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          leadingComments_ = getDefaultInstance().getLeadingComments();
+          onChanged();
+          return this;
+        }
+        void setLeadingComments(com.google.protobuf.ByteString value) {
+          bitField0_ |= 0x00000004;
+          leadingComments_ = value;
+          onChanged();
+        }
+        
+        // optional string trailing_comments = 4;
+        private java.lang.Object trailingComments_ = "";
+        public boolean hasTrailingComments() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        public String getTrailingComments() {
+          java.lang.Object ref = trailingComments_;
+          if (!(ref instanceof String)) {
+            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
+            trailingComments_ = s;
+            return s;
+          } else {
+            return (String) ref;
+          }
+        }
+        public Builder setTrailingComments(String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+          trailingComments_ = value;
+          onChanged();
+          return this;
+        }
+        public Builder clearTrailingComments() {
+          bitField0_ = (bitField0_ & ~0x00000008);
+          trailingComments_ = getDefaultInstance().getTrailingComments();
+          onChanged();
+          return this;
+        }
+        void setTrailingComments(com.google.protobuf.ByteString value) {
+          bitField0_ |= 0x00000008;
+          trailingComments_ = value;
+          onChanged();
+        }
+        
         // @@protoc_insertion_point(builder_scope:google.protobuf.SourceCodeInfo.Location)
       }
@@ -16386,5 +17061,5 @@
       public com.google.protobuf.DescriptorProtos.SourceCodeInfo buildPartial() {
         com.google.protobuf.DescriptorProtos.SourceCodeInfo result = new com.google.protobuf.DescriptorProtos.SourceCodeInfo(this);
-        //int from_bitField0_ = bitField0_;
+        int from_bitField0_ = bitField0_;
         if (locationBuilder_ == null) {
           if (((bitField0_ & 0x00000001) == 0x00000001)) {
@@ -16786,103 +17461,108 @@
   static {
     java.lang.String[] descriptorData = {
-      "\n google/protobuf/descriptor.proto\022\017goog" +
-      "le.protobuf\"G\n\021FileDescriptorSet\0222\n\004file" +
-      "\030\001 \003(\0132$.google.protobuf.FileDescriptorP" +
-      "roto\"\227\003\n\023FileDescriptorProto\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" +
-      "6\n\014message_type\030\004 \003(\0132 .google.protobuf." +
-      "DescriptorProto\0227\n\tenum_type\030\005 \003(\0132$.goo" +
-      "gle.protobuf.EnumDescriptorProto\0228\n\007serv" +
-      "ice\030\006 \003(\0132\'.google.protobuf.ServiceDescr" +
-      "iptorProto\0228\n\textension\030\007 \003(\0132%.google.p",
-      "rotobuf.FieldDescriptorProto\022-\n\007options\030" +
-      "\010 \001(\0132\034.google.protobuf.FileOptions\0229\n\020s" +
-      "ource_code_info\030\t \001(\0132\037.google.protobuf." +
-      "SourceCodeInfo\"\251\003\n\017DescriptorProto\022\014\n\004na" +
-      "me\030\001 \001(\t\0224\n\005field\030\002 \003(\0132%.google.protobu" +
-      "f.FieldDescriptorProto\0228\n\textension\030\006 \003(" +
-      "\0132%.google.protobuf.FieldDescriptorProto" +
-      "\0225\n\013nested_type\030\003 \003(\0132 .google.protobuf." +
-      "DescriptorProto\0227\n\tenum_type\030\004 \003(\0132$.goo" +
-      "gle.protobuf.EnumDescriptorProto\022H\n\017exte",
-      "nsion_range\030\005 \003(\0132/.google.protobuf.Desc" +
-      "riptorProto.ExtensionRange\0220\n\007options\030\007 " +
-      "\001(\0132\037.google.protobuf.MessageOptions\032,\n\016" +
-      "ExtensionRange\022\r\n\005start\030\001 \001(\005\022\013\n\003end\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+.googl" +
-      "e.protobuf.FieldDescriptorProto.Label\0228\n" +
-      "\004type\030\005 \001(\0162*.google.protobuf.FieldDescr" +
-      "iptorProto.Type\022\021\n\ttype_name\030\006 \001(\t\022\020\n\010ex" +
-      "tendee\030\002 \001(\t\022\025\n\rdefault_value\030\007 \001(\t\022.\n\007o",
-      "ptions\030\010 \001(\0132\035.google.protobuf.FieldOpti" +
-      "ons\"\266\002\n\004Type\022\017\n\013TYPE_DOUBLE\020\001\022\016\n\nTYPE_FL" +
-      "OAT\020\002\022\016\n\nTYPE_INT64\020\003\022\017\n\013TYPE_UINT64\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_STRING" +
-      "\020\t\022\016\n\nTYPE_GROUP\020\n\022\020\n\014TYPE_MESSAGE\020\013\022\016\n\n" +
-      "TYPE_BYTES\020\014\022\017\n\013TYPE_UINT32\020\r\022\r\n\tTYPE_EN" +
-      "UM\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\005" +
-      "Label\022\022\n\016LABEL_OPTIONAL\020\001\022\022\n\016LABEL_REQUI",
-      "RED\020\002\022\022\n\016LABEL_REPEATED\020\003\"\214\001\n\023EnumDescri" +
-      "ptorProto\022\014\n\004name\030\001 \001(\t\0228\n\005value\030\002 \003(\0132)" +
-      ".google.protobuf.EnumValueDescriptorProt" +
-      "o\022-\n\007options\030\003 \001(\0132\034.google.protobuf.Enu" +
-      "mOptions\"l\n\030EnumValueDescriptorProto\022\014\n\004" +
-      "name\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\026ServiceDescriptorProto\022\014\n\004name\030\001 \001(\t\022" +
-      "6\n\006method\030\002 \003(\0132&.google.protobuf.Method" +
-      "DescriptorProto\0220\n\007options\030\003 \001(\0132\037.googl",
-      "e.protobuf.ServiceOptions\"\177\n\025MethodDescr" +
-      "iptorProto\022\014\n\004name\030\001 \001(\t\022\022\n\ninput_type\030\002" +
-      " \001(\t\022\023\n\013output_type\030\003 \001(\t\022/\n\007options\030\004 \001" +
-      "(\0132\036.google.protobuf.MethodOptions\"\325\003\n\013F" +
-      "ileOptions\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_equa" +
-      "ls_and_hash\030\024 \001(\010:\005false\022F\n\014optimize_for" +
-      "\030\t \001(\0162).google.protobuf.FileOptions.Opt" +
-      "imizeMode:\005SPEED\022\"\n\023cc_generic_services\030",
-      "\020 \001(\010:\005false\022$\n\025java_generic_services\030\021 " +
-      "\001(\010:\005false\022\"\n\023py_generic_services\030\022 \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\"\270\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\022C\n\024uninterpreted_option\030\347\007" +
-      " \003(\0132$.google.protobuf.UninterpretedOpti",
-      "on*\t\010\350\007\020\200\200\200\200\002\"\224\002\n\014FieldOptions\022:\n\005ctype\030" +
-      "\001 \001(\0162#.google.protobuf.FieldOptions.CTy" +
-      "pe:\006STRING\022\016\n\006packed\030\002 \001(\010\022\031\n\ndeprecated" +
-      "\030\003 \001(\010:\005false\022\034\n\024experimental_map_key\030\t " +
-      "\001(\t\022C\n\024uninterpreted_option\030\347\007 \003(\0132$.goo" +
-      "gle.protobuf.UninterpretedOption\"/\n\005CTyp" +
-      "e\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\"]\n\013EnumOptions\022C\n\024uninterpr" +
-      "eted_option\030\347\007 \003(\0132$.google.protobuf.Uni" +
-      "nterpretedOption*\t\010\350\007\020\200\200\200\200\002\"b\n\020EnumValue",
-      "Options\022C\n\024uninterpreted_option\030\347\007 \003(\0132$" +
-      ".google.protobuf.UninterpretedOption*\t\010\350" +
-      "\007\020\200\200\200\200\002\"`\n\016ServiceOptions\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\rMethodOptio" +
-      "ns\022C\n\024uninterpreted_option\030\347\007 \003(\0132$.goog" +
-      "le.protobuf.UninterpretedOption*\t\010\350\007\020\200\200\200" +
-      "\200\002\"\236\002\n\023UninterpretedOption\022;\n\004name\030\002 \003(\013" +
-      "2-.google.protobuf.UninterpretedOption.N" +
-      "amePart\022\030\n\020identifier_value\030\003 \001(\t\022\032\n\022pos",
-      "itive_int_value\030\004 \001(\004\022\032\n\022negative_int_va" +
-      "lue\030\005 \001(\003\022\024\n\014double_value\030\006 \001(\001\022\024\n\014strin" +
-      "g_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_exte" +
-      "nsion\030\002 \002(\010\"|\n\016SourceCodeInfo\022:\n\010locatio" +
-      "n\030\001 \003(\0132(.google.protobuf.SourceCodeInfo" +
-      ".Location\032.\n\010Location\022\020\n\004path\030\001 \003(\005B\002\020\001\022" +
-      "\020\n\004span\030\002 \003(\005B\002\020\001B)\n\023com.google.protobuf" +
-      "B\020DescriptorProtosH\001"
+      "\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" +
+      "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"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
@@ -16904,5 +17584,5 @@
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_google_protobuf_FileDescriptorProto_descriptor,
-              new java.lang.String[] { "Name", "Package", "Dependency", "MessageType", "EnumType", "Service", "Extension", "Options", "SourceCodeInfo", },
+              new java.lang.String[] { "Name", "Package", "Dependency", "PublicDependency", "WeakDependency", "MessageType", "EnumType", "Service", "Extension", "Options", "SourceCodeInfo", },
               com.google.protobuf.DescriptorProtos.FileDescriptorProto.class,
               com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder.class);
@@ -16968,5 +17648,5 @@
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_google_protobuf_FileOptions_descriptor,
-              new java.lang.String[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "JavaGenerateEqualsAndHash", "OptimizeFor", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "UninterpretedOption", },
+              new java.lang.String[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "JavaGenerateEqualsAndHash", "OptimizeFor", "GoPackage", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "UninterpretedOption", },
               com.google.protobuf.DescriptorProtos.FileOptions.class,
               com.google.protobuf.DescriptorProtos.FileOptions.Builder.class);
@@ -16984,5 +17664,5 @@
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_google_protobuf_FieldOptions_descriptor,
-              new java.lang.String[] { "Ctype", "Packed", "Deprecated", "ExperimentalMapKey", "UninterpretedOption", },
+              new java.lang.String[] { "Ctype", "Packed", "Lazy", "Deprecated", "ExperimentalMapKey", "Weak", "UninterpretedOption", },
               com.google.protobuf.DescriptorProtos.FieldOptions.class,
               com.google.protobuf.DescriptorProtos.FieldOptions.Builder.class);
@@ -16992,5 +17672,5 @@
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_google_protobuf_EnumOptions_descriptor,
-              new java.lang.String[] { "UninterpretedOption", },
+              new java.lang.String[] { "AllowAlias", "UninterpretedOption", },
               com.google.protobuf.DescriptorProtos.EnumOptions.class,
               com.google.protobuf.DescriptorProtos.EnumOptions.Builder.class);
@@ -17048,5 +17728,5 @@
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_google_protobuf_SourceCodeInfo_Location_descriptor,
-              new java.lang.String[] { "Path", "Span", },
+              new java.lang.String[] { "Path", "Span", "LeadingComments", "TrailingComments", },
               com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.class,
               com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder.class);
