Please wait. This can take some minutes ...
                    
                 
             
         
        
            
                
                    
                    
                        Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. 
                        
                        Project price only 1 $ 
                        
                            You can buy this project and download/modify it how often you want.
                        
                        
                        
                     
                 
             
         
                    
                 
    
    
    tech.ydb.shaded.google.protobuf.DescriptorProtos Maven / Gradle / Ivy 
    
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/protobuf/descriptor.proto
package com.google.protobuf;
public final class DescriptorProtos {
  private DescriptorProtos() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface FileDescriptorSetOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.protobuf.FileDescriptorSet)
      com.google.protobuf.MessageOrBuilder {
    /**
     * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
     */
    java.util.List 
        getFileList();
    /**
     * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
     */
    com.google.protobuf.DescriptorProtos.FileDescriptorProto getFile(int index);
    /**
     * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
     */
    int getFileCount();
    /**
     * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> 
        getFileOrBuilderList();
    /**
     * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
     */
    com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder getFileOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code google.protobuf.FileDescriptorSet}
   */
  public static final class FileDescriptorSet extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.protobuf.FileDescriptorSet)
      FileDescriptorSetOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FileDescriptorSet.newBuilder() to construct.
    private FileDescriptorSet(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private FileDescriptorSet() {
      file_ = java.util.Collections.emptyList();
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new FileDescriptorSet();
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.protobuf.DescriptorProtos.FileDescriptorSet.class, com.google.protobuf.DescriptorProtos.FileDescriptorSet.Builder.class);
    }
    public static final int FILE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List file_;
    /**
     * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
     */
    @java.lang.Override
    public java.util.List getFileList() {
      return file_;
    }
    /**
     * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> 
        getFileOrBuilderList() {
      return file_;
    }
    /**
     * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
     */
    @java.lang.Override
    public int getFileCount() {
      return file_.size();
    }
    /**
     * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FileDescriptorProto getFile(int index) {
      return file_.get(index);
    }
    /**
     * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder getFileOrBuilder(
        int index) {
      return file_.get(index);
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      for (int i = 0; i < getFileCount(); i++) {
        if (!getFile(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < file_.size(); i++) {
        output.writeMessage(1, file_.get(i));
      }
      getUnknownFields().writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      for (int i = 0; i < file_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, file_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.protobuf.DescriptorProtos.FileDescriptorSet)) {
        return super.equals(obj);
      }
      com.google.protobuf.DescriptorProtos.FileDescriptorSet other = (com.google.protobuf.DescriptorProtos.FileDescriptorSet) obj;
      if (!getFileList()
          .equals(other.getFileList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getFileCount() > 0) {
        hash = (37 * hash) + FILE_FIELD_NUMBER;
        hash = (53 * hash) + getFileList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FileDescriptorSet prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.FileDescriptorSet}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:google.protobuf.FileDescriptorSet)
        com.google.protobuf.DescriptorProtos.FileDescriptorSetOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.FileDescriptorSet.class, com.google.protobuf.DescriptorProtos.FileDescriptorSet.Builder.class);
      }
      // Construct using com.google.protobuf.DescriptorProtos.FileDescriptorSet.newBuilder()
      private Builder() {
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (fileBuilder_ == null) {
          file_ = java.util.Collections.emptyList();
        } else {
          file_ = null;
          fileBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_descriptor;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FileDescriptorSet getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.FileDescriptorSet.getDefaultInstance();
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FileDescriptorSet build() {
        com.google.protobuf.DescriptorProtos.FileDescriptorSet result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FileDescriptorSet buildPartial() {
        com.google.protobuf.DescriptorProtos.FileDescriptorSet result = new com.google.protobuf.DescriptorProtos.FileDescriptorSet(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }
      private void buildPartialRepeatedFields(com.google.protobuf.DescriptorProtos.FileDescriptorSet result) {
        if (fileBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            file_ = java.util.Collections.unmodifiableList(file_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.file_ = file_;
        } else {
          result.file_ = fileBuilder_.build();
        }
      }
      private void buildPartial0(com.google.protobuf.DescriptorProtos.FileDescriptorSet result) {
        int from_bitField0_ = bitField0_;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.FileDescriptorSet) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.FileDescriptorSet)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.FileDescriptorSet other) {
        if (other == com.google.protobuf.DescriptorProtos.FileDescriptorSet.getDefaultInstance()) return this;
        if (fileBuilder_ == null) {
          if (!other.file_.isEmpty()) {
            if (file_.isEmpty()) {
              file_ = other.file_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureFileIsMutable();
              file_.addAll(other.file_);
            }
            onChanged();
          }
        } else {
          if (!other.file_.isEmpty()) {
            if (fileBuilder_.isEmpty()) {
              fileBuilder_.dispose();
              fileBuilder_ = null;
              file_ = other.file_;
              bitField0_ = (bitField0_ & ~0x00000001);
              fileBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFileFieldBuilder() : null;
            } else {
              fileBuilder_.addAllMessages(other.file_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getFileCount(); i++) {
          if (!getFile(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.DescriptorProtos.FileDescriptorProto m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.FileDescriptorProto.PARSER,
                        extensionRegistry);
                if (fileBuilder_ == null) {
                  ensureFileIsMutable();
                  file_.add(m);
                } else {
                  fileBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private java.util.List file_ =
        java.util.Collections.emptyList();
      private void ensureFileIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          file_ = new java.util.ArrayList(file_);
          bitField0_ |= 0x00000001;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> fileBuilder_;
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public java.util.List getFileList() {
        if (fileBuilder_ == null) {
          return java.util.Collections.unmodifiableList(file_);
        } else {
          return fileBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public int getFileCount() {
        if (fileBuilder_ == null) {
          return file_.size();
        } else {
          return fileBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public com.google.protobuf.DescriptorProtos.FileDescriptorProto getFile(int index) {
        if (fileBuilder_ == null) {
          return file_.get(index);
        } else {
          return fileBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public Builder setFile(
          int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto value) {
        if (fileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFileIsMutable();
          file_.set(index, value);
          onChanged();
        } else {
          fileBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public Builder setFile(
          int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder builderForValue) {
        if (fileBuilder_ == null) {
          ensureFileIsMutable();
          file_.set(index, builderForValue.build());
          onChanged();
        } else {
          fileBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public Builder addFile(com.google.protobuf.DescriptorProtos.FileDescriptorProto value) {
        if (fileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFileIsMutable();
          file_.add(value);
          onChanged();
        } else {
          fileBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public Builder addFile(
          int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto value) {
        if (fileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFileIsMutable();
          file_.add(index, value);
          onChanged();
        } else {
          fileBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public Builder addFile(
          com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder builderForValue) {
        if (fileBuilder_ == null) {
          ensureFileIsMutable();
          file_.add(builderForValue.build());
          onChanged();
        } else {
          fileBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public Builder addFile(
          int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder builderForValue) {
        if (fileBuilder_ == null) {
          ensureFileIsMutable();
          file_.add(index, builderForValue.build());
          onChanged();
        } else {
          fileBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public Builder addAllFile(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.FileDescriptorProto> values) {
        if (fileBuilder_ == null) {
          ensureFileIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, file_);
          onChanged();
        } else {
          fileBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public Builder clearFile() {
        if (fileBuilder_ == null) {
          file_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          fileBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public Builder removeFile(int index) {
        if (fileBuilder_ == null) {
          ensureFileIsMutable();
          file_.remove(index);
          onChanged();
        } else {
          fileBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder getFileBuilder(
          int index) {
        return getFileFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder getFileOrBuilder(
          int index) {
        if (fileBuilder_ == null) {
          return file_.get(index);  } else {
          return fileBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> 
           getFileOrBuilderList() {
        if (fileBuilder_ != null) {
          return fileBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(file_);
        }
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder addFileBuilder() {
        return getFileFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder addFileBuilder(
          int index) {
        return getFileFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.FileDescriptorProto file = 1 [json_name = "file"];
       */
      public java.util.List 
           getFileBuilderList() {
        return getFileFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> 
          getFileFieldBuilder() {
        if (fileBuilder_ == null) {
          fileBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder>(
                  file_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          file_ = null;
        }
        return fileBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:google.protobuf.FileDescriptorSet)
    }
    // @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorSet)
    private static final com.google.protobuf.DescriptorProtos.FileDescriptorSet DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.FileDescriptorSet();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    @java.lang.Deprecated public static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public FileDescriptorSet parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FileDescriptorSet getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface FileDescriptorProtoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.protobuf.FileDescriptorProto)
      com.google.protobuf.MessageOrBuilder {
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    java.lang.String getName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * optional string package = 2 [json_name = "package"];
     * @return Whether the package field is set.
     */
    boolean hasPackage();
    /**
     * optional string package = 2 [json_name = "package"];
     * @return The package.
     */
    java.lang.String getPackage();
    /**
     * optional string package = 2 [json_name = "package"];
     * @return The bytes for package.
     */
    com.google.protobuf.ByteString
        getPackageBytes();
    /**
     * repeated string dependency = 3 [json_name = "dependency"];
     * @return A list containing the dependency.
     */
    java.util.List
        getDependencyList();
    /**
     * repeated string dependency = 3 [json_name = "dependency"];
     * @return The count of dependency.
     */
    int getDependencyCount();
    /**
     * repeated string dependency = 3 [json_name = "dependency"];
     * @param index The index of the element to return.
     * @return The dependency at the given index.
     */
    java.lang.String getDependency(int index);
    /**
     * repeated string dependency = 3 [json_name = "dependency"];
     * @param index The index of the value to return.
     * @return The bytes of the dependency at the given index.
     */
    com.google.protobuf.ByteString
        getDependencyBytes(int index);
    /**
     * repeated int32 public_dependency = 10 [json_name = "publicDependency"];
     * @return A list containing the publicDependency.
     */
    java.util.List getPublicDependencyList();
    /**
     * repeated int32 public_dependency = 10 [json_name = "publicDependency"];
     * @return The count of publicDependency.
     */
    int getPublicDependencyCount();
    /**
     * repeated int32 public_dependency = 10 [json_name = "publicDependency"];
     * @param index The index of the element to return.
     * @return The publicDependency at the given index.
     */
    int getPublicDependency(int index);
    /**
     * repeated int32 weak_dependency = 11 [json_name = "weakDependency"];
     * @return A list containing the weakDependency.
     */
    java.util.List getWeakDependencyList();
    /**
     * repeated int32 weak_dependency = 11 [json_name = "weakDependency"];
     * @return The count of weakDependency.
     */
    int getWeakDependencyCount();
    /**
     * repeated int32 weak_dependency = 11 [json_name = "weakDependency"];
     * @param index The index of the element to return.
     * @return The weakDependency at the given index.
     */
    int getWeakDependency(int index);
    /**
     * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
     */
    java.util.List 
        getMessageTypeList();
    /**
     * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
     */
    com.google.protobuf.DescriptorProtos.DescriptorProto getMessageType(int index);
    /**
     * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
     */
    int getMessageTypeCount();
    /**
     * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
        getMessageTypeOrBuilderList();
    /**
     * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
     */
    com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getMessageTypeOrBuilder(
        int index);
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
     */
    java.util.List 
        getEnumTypeList();
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
     */
    com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index);
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
     */
    int getEnumTypeCount();
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
        getEnumTypeOrBuilderList();
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
     */
    com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
        int index);
    /**
     * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
     */
    java.util.List 
        getServiceList();
    /**
     * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
     */
    com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getService(int index);
    /**
     * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
     */
    int getServiceCount();
    /**
     * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> 
        getServiceOrBuilderList();
    /**
     * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
     */
    com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder getServiceOrBuilder(
        int index);
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
     */
    java.util.List 
        getExtensionList();
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
     */
    com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index);
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
     */
    int getExtensionCount();
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
        getExtensionOrBuilderList();
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
     */
    com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
        int index);
    /**
     * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
     * @return Whether the options field is set.
     */
    boolean hasOptions();
    /**
     * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
     * @return The options.
     */
    com.google.protobuf.DescriptorProtos.FileOptions getOptions();
    /**
     * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
     */
    com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder getOptionsOrBuilder();
    /**
     * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
     * @return Whether the sourceCodeInfo field is set.
     */
    boolean hasSourceCodeInfo();
    /**
     * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
     * @return The sourceCodeInfo.
     */
    com.google.protobuf.DescriptorProtos.SourceCodeInfo getSourceCodeInfo();
    /**
     * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
     */
    com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder getSourceCodeInfoOrBuilder();
    /**
     * optional string syntax = 12 [json_name = "syntax"];
     * @return Whether the syntax field is set.
     */
    boolean hasSyntax();
    /**
     * optional string syntax = 12 [json_name = "syntax"];
     * @return The syntax.
     */
    java.lang.String getSyntax();
    /**
     * optional string syntax = 12 [json_name = "syntax"];
     * @return The bytes for syntax.
     */
    com.google.protobuf.ByteString
        getSyntaxBytes();
    /**
     * optional string edition = 13 [json_name = "edition"];
     * @return Whether the edition field is set.
     */
    boolean hasEdition();
    /**
     * optional string edition = 13 [json_name = "edition"];
     * @return The edition.
     */
    java.lang.String getEdition();
    /**
     * optional string edition = 13 [json_name = "edition"];
     * @return The bytes for edition.
     */
    com.google.protobuf.ByteString
        getEditionBytes();
  }
  /**
   * Protobuf type {@code google.protobuf.FileDescriptorProto}
   */
  public static final class FileDescriptorProto extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.protobuf.FileDescriptorProto)
      FileDescriptorProtoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FileDescriptorProto.newBuilder() to construct.
    private FileDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private FileDescriptorProto() {
      name_ = "";
      package_ = "";
      dependency_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      publicDependency_ = emptyIntList();
      weakDependency_ = emptyIntList();
      messageType_ = java.util.Collections.emptyList();
      enumType_ = java.util.Collections.emptyList();
      service_ = java.util.Collections.emptyList();
      extension_ = java.util.Collections.emptyList();
      syntax_ = "";
      edition_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new FileDescriptorProto();
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.protobuf.DescriptorProtos.FileDescriptorProto.class, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder.class);
    }
    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int PACKAGE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object package_ = "";
    /**
     * optional string package = 2 [json_name = "package"];
     * @return Whether the package field is set.
     */
    @java.lang.Override
    public boolean hasPackage() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * optional string package = 2 [json_name = "package"];
     * @return The package.
     */
    @java.lang.Override
    public java.lang.String getPackage() {
      java.lang.Object ref = package_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          package_ = s;
        }
        return s;
      }
    }
    /**
     * optional string package = 2 [json_name = "package"];
     * @return The bytes for package.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPackageBytes() {
      java.lang.Object ref = package_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        package_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int DEPENDENCY_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList dependency_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * repeated string dependency = 3 [json_name = "dependency"];
     * @return A list containing the dependency.
     */
    public com.google.protobuf.ProtocolStringList
        getDependencyList() {
      return dependency_;
    }
    /**
     * repeated string dependency = 3 [json_name = "dependency"];
     * @return The count of dependency.
     */
    public int getDependencyCount() {
      return dependency_.size();
    }
    /**
     * repeated string dependency = 3 [json_name = "dependency"];
     * @param index The index of the element to return.
     * @return The dependency at the given index.
     */
    public java.lang.String getDependency(int index) {
      return dependency_.get(index);
    }
    /**
     * repeated string dependency = 3 [json_name = "dependency"];
     * @param index The index of the value to return.
     * @return The bytes of the dependency at the given index.
     */
    public com.google.protobuf.ByteString
        getDependencyBytes(int index) {
      return dependency_.getByteString(index);
    }
    public static final int PUBLIC_DEPENDENCY_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList publicDependency_ =
        emptyIntList();
    /**
     * repeated int32 public_dependency = 10 [json_name = "publicDependency"];
     * @return A list containing the publicDependency.
     */
    @java.lang.Override
    public java.util.List
        getPublicDependencyList() {
      return publicDependency_;
    }
    /**
     * repeated int32 public_dependency = 10 [json_name = "publicDependency"];
     * @return The count of publicDependency.
     */
    public int getPublicDependencyCount() {
      return publicDependency_.size();
    }
    /**
     * repeated int32 public_dependency = 10 [json_name = "publicDependency"];
     * @param index The index of the element to return.
     * @return The publicDependency at the given index.
     */
    public int getPublicDependency(int index) {
      return publicDependency_.getInt(index);
    }
    public static final int WEAK_DEPENDENCY_FIELD_NUMBER = 11;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList weakDependency_ =
        emptyIntList();
    /**
     * repeated int32 weak_dependency = 11 [json_name = "weakDependency"];
     * @return A list containing the weakDependency.
     */
    @java.lang.Override
    public java.util.List
        getWeakDependencyList() {
      return weakDependency_;
    }
    /**
     * repeated int32 weak_dependency = 11 [json_name = "weakDependency"];
     * @return The count of weakDependency.
     */
    public int getWeakDependencyCount() {
      return weakDependency_.size();
    }
    /**
     * repeated int32 weak_dependency = 11 [json_name = "weakDependency"];
     * @param index The index of the element to return.
     * @return The weakDependency at the given index.
     */
    public int getWeakDependency(int index) {
      return weakDependency_.getInt(index);
    }
    public static final int MESSAGE_TYPE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List messageType_;
    /**
     * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
     */
    @java.lang.Override
    public java.util.List getMessageTypeList() {
      return messageType_;
    }
    /**
     * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
        getMessageTypeOrBuilderList() {
      return messageType_;
    }
    /**
     * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
     */
    @java.lang.Override
    public int getMessageTypeCount() {
      return messageType_.size();
    }
    /**
     * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.DescriptorProto getMessageType(int index) {
      return messageType_.get(index);
    }
    /**
     * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getMessageTypeOrBuilder(
        int index) {
      return messageType_.get(index);
    }
    public static final int ENUM_TYPE_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private java.util.List enumType_;
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
     */
    @java.lang.Override
    public java.util.List getEnumTypeList() {
      return enumType_;
    }
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
        getEnumTypeOrBuilderList() {
      return enumType_;
    }
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
     */
    @java.lang.Override
    public int getEnumTypeCount() {
      return enumType_.size();
    }
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
      return enumType_.get(index);
    }
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
        int index) {
      return enumType_.get(index);
    }
    public static final int SERVICE_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private java.util.List service_;
    /**
     * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
     */
    @java.lang.Override
    public java.util.List getServiceList() {
      return service_;
    }
    /**
     * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> 
        getServiceOrBuilderList() {
      return service_;
    }
    /**
     * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
     */
    @java.lang.Override
    public int getServiceCount() {
      return service_.size();
    }
    /**
     * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getService(int index) {
      return service_.get(index);
    }
    /**
     * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder getServiceOrBuilder(
        int index) {
      return service_.get(index);
    }
    public static final int EXTENSION_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private java.util.List extension_;
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
     */
    @java.lang.Override
    public java.util.List getExtensionList() {
      return extension_;
    }
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
        getExtensionOrBuilderList() {
      return extension_;
    }
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
     */
    @java.lang.Override
    public int getExtensionCount() {
      return extension_.size();
    }
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
      return extension_.get(index);
    }
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
        int index) {
      return extension_.get(index);
    }
    public static final int OPTIONS_FIELD_NUMBER = 8;
    private com.google.protobuf.DescriptorProtos.FileOptions options_;
    /**
     * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
     * @return Whether the options field is set.
     */
    @java.lang.Override
    public boolean hasOptions() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
     * @return The options.
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FileOptions getOptions() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance() : options_;
    }
    /**
     * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder getOptionsOrBuilder() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance() : options_;
    }
    public static final int SOURCE_CODE_INFO_FIELD_NUMBER = 9;
    private com.google.protobuf.DescriptorProtos.SourceCodeInfo sourceCodeInfo_;
    /**
     * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
     * @return Whether the sourceCodeInfo field is set.
     */
    @java.lang.Override
    public boolean hasSourceCodeInfo() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
     * @return The sourceCodeInfo.
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.SourceCodeInfo getSourceCodeInfo() {
      return sourceCodeInfo_ == null ? com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance() : sourceCodeInfo_;
    }
    /**
     * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder getSourceCodeInfoOrBuilder() {
      return sourceCodeInfo_ == null ? com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance() : sourceCodeInfo_;
    }
    public static final int SYNTAX_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private volatile java.lang.Object syntax_ = "";
    /**
     * optional string syntax = 12 [json_name = "syntax"];
     * @return Whether the syntax field is set.
     */
    @java.lang.Override
    public boolean hasSyntax() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * optional string syntax = 12 [json_name = "syntax"];
     * @return The syntax.
     */
    @java.lang.Override
    public java.lang.String getSyntax() {
      java.lang.Object ref = syntax_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          syntax_ = s;
        }
        return s;
      }
    }
    /**
     * optional string syntax = 12 [json_name = "syntax"];
     * @return The bytes for syntax.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSyntaxBytes() {
      java.lang.Object ref = syntax_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        syntax_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int EDITION_FIELD_NUMBER = 13;
    @SuppressWarnings("serial")
    private volatile java.lang.Object edition_ = "";
    /**
     * optional string edition = 13 [json_name = "edition"];
     * @return Whether the edition field is set.
     */
    @java.lang.Override
    public boolean hasEdition() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * optional string edition = 13 [json_name = "edition"];
     * @return The edition.
     */
    @java.lang.Override
    public java.lang.String getEdition() {
      java.lang.Object ref = edition_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          edition_ = s;
        }
        return s;
      }
    }
    /**
     * optional string edition = 13 [json_name = "edition"];
     * @return The bytes for edition.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEditionBytes() {
      java.lang.Object ref = edition_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        edition_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      for (int i = 0; i < getMessageTypeCount(); i++) {
        if (!getMessageType(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getEnumTypeCount(); i++) {
        if (!getEnumType(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getServiceCount(); i++) {
        if (!getService(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getExtensionCount(); i++) {
        if (!getExtension(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasOptions()) {
        if (!getOptions().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, package_);
      }
      for (int i = 0; i < dependency_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, dependency_.getRaw(i));
      }
      for (int i = 0; i < messageType_.size(); i++) {
        output.writeMessage(4, messageType_.get(i));
      }
      for (int i = 0; i < enumType_.size(); i++) {
        output.writeMessage(5, enumType_.get(i));
      }
      for (int i = 0; i < service_.size(); i++) {
        output.writeMessage(6, service_.get(i));
      }
      for (int i = 0; i < extension_.size(); i++) {
        output.writeMessage(7, extension_.get(i));
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(8, getOptions());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(9, getSourceCodeInfo());
      }
      for (int i = 0; i < publicDependency_.size(); i++) {
        output.writeInt32(10, publicDependency_.getInt(i));
      }
      for (int i = 0; i < weakDependency_.size(); i++) {
        output.writeInt32(11, weakDependency_.getInt(i));
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, syntax_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 13, edition_);
      }
      getUnknownFields().writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, package_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < dependency_.size(); i++) {
          dataSize += computeStringSizeNoTag(dependency_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getDependencyList().size();
      }
      for (int i = 0; i < messageType_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, messageType_.get(i));
      }
      for (int i = 0; i < enumType_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, enumType_.get(i));
      }
      for (int i = 0; i < service_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, service_.get(i));
      }
      for (int i = 0; i < extension_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, extension_.get(i));
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getOptions());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getSourceCodeInfo());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < publicDependency_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(publicDependency_.getInt(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_.getInt(i));
        }
        size += dataSize;
        size += 1 * getWeakDependencyList().size();
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, syntax_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, edition_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.protobuf.DescriptorProtos.FileDescriptorProto)) {
        return super.equals(obj);
      }
      com.google.protobuf.DescriptorProtos.FileDescriptorProto other = (com.google.protobuf.DescriptorProtos.FileDescriptorProto) obj;
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasPackage() != other.hasPackage()) return false;
      if (hasPackage()) {
        if (!getPackage()
            .equals(other.getPackage())) return false;
      }
      if (!getDependencyList()
          .equals(other.getDependencyList())) return false;
      if (!getPublicDependencyList()
          .equals(other.getPublicDependencyList())) return false;
      if (!getWeakDependencyList()
          .equals(other.getWeakDependencyList())) return false;
      if (!getMessageTypeList()
          .equals(other.getMessageTypeList())) return false;
      if (!getEnumTypeList()
          .equals(other.getEnumTypeList())) return false;
      if (!getServiceList()
          .equals(other.getServiceList())) return false;
      if (!getExtensionList()
          .equals(other.getExtensionList())) return false;
      if (hasOptions() != other.hasOptions()) return false;
      if (hasOptions()) {
        if (!getOptions()
            .equals(other.getOptions())) return false;
      }
      if (hasSourceCodeInfo() != other.hasSourceCodeInfo()) return false;
      if (hasSourceCodeInfo()) {
        if (!getSourceCodeInfo()
            .equals(other.getSourceCodeInfo())) return false;
      }
      if (hasSyntax() != other.hasSyntax()) return false;
      if (hasSyntax()) {
        if (!getSyntax()
            .equals(other.getSyntax())) return false;
      }
      if (hasEdition() != other.hasEdition()) return false;
      if (hasEdition()) {
        if (!getEdition()
            .equals(other.getEdition())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasPackage()) {
        hash = (37 * hash) + PACKAGE_FIELD_NUMBER;
        hash = (53 * hash) + getPackage().hashCode();
      }
      if (getDependencyCount() > 0) {
        hash = (37 * hash) + DEPENDENCY_FIELD_NUMBER;
        hash = (53 * hash) + getDependencyList().hashCode();
      }
      if (getPublicDependencyCount() > 0) {
        hash = (37 * hash) + PUBLIC_DEPENDENCY_FIELD_NUMBER;
        hash = (53 * hash) + getPublicDependencyList().hashCode();
      }
      if (getWeakDependencyCount() > 0) {
        hash = (37 * hash) + WEAK_DEPENDENCY_FIELD_NUMBER;
        hash = (53 * hash) + getWeakDependencyList().hashCode();
      }
      if (getMessageTypeCount() > 0) {
        hash = (37 * hash) + MESSAGE_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getMessageTypeList().hashCode();
      }
      if (getEnumTypeCount() > 0) {
        hash = (37 * hash) + ENUM_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getEnumTypeList().hashCode();
      }
      if (getServiceCount() > 0) {
        hash = (37 * hash) + SERVICE_FIELD_NUMBER;
        hash = (53 * hash) + getServiceList().hashCode();
      }
      if (getExtensionCount() > 0) {
        hash = (37 * hash) + EXTENSION_FIELD_NUMBER;
        hash = (53 * hash) + getExtensionList().hashCode();
      }
      if (hasOptions()) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getOptions().hashCode();
      }
      if (hasSourceCodeInfo()) {
        hash = (37 * hash) + SOURCE_CODE_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getSourceCodeInfo().hashCode();
      }
      if (hasSyntax()) {
        hash = (37 * hash) + SYNTAX_FIELD_NUMBER;
        hash = (53 * hash) + getSyntax().hashCode();
      }
      if (hasEdition()) {
        hash = (37 * hash) + EDITION_FIELD_NUMBER;
        hash = (53 * hash) + getEdition().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FileDescriptorProto prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.FileDescriptorProto}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:google.protobuf.FileDescriptorProto)
        com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.FileDescriptorProto.class, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder.class);
      }
      // Construct using com.google.protobuf.DescriptorProtos.FileDescriptorProto.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMessageTypeFieldBuilder();
          getEnumTypeFieldBuilder();
          getServiceFieldBuilder();
          getExtensionFieldBuilder();
          getOptionsFieldBuilder();
          getSourceCodeInfoFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        package_ = "";
        dependency_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        publicDependency_ = emptyIntList();
        weakDependency_ = emptyIntList();
        if (messageTypeBuilder_ == null) {
          messageType_ = java.util.Collections.emptyList();
        } else {
          messageType_ = null;
          messageTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        if (enumTypeBuilder_ == null) {
          enumType_ = java.util.Collections.emptyList();
        } else {
          enumType_ = null;
          enumTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (serviceBuilder_ == null) {
          service_ = java.util.Collections.emptyList();
        } else {
          service_ = null;
          serviceBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        if (extensionBuilder_ == null) {
          extension_ = java.util.Collections.emptyList();
        } else {
          extension_ = null;
          extensionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        sourceCodeInfo_ = null;
        if (sourceCodeInfoBuilder_ != null) {
          sourceCodeInfoBuilder_.dispose();
          sourceCodeInfoBuilder_ = null;
        }
        syntax_ = "";
        edition_ = "";
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_descriptor;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FileDescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDefaultInstance();
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FileDescriptorProto build() {
        com.google.protobuf.DescriptorProtos.FileDescriptorProto result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FileDescriptorProto buildPartial() {
        com.google.protobuf.DescriptorProtos.FileDescriptorProto result = new com.google.protobuf.DescriptorProtos.FileDescriptorProto(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }
      private void buildPartialRepeatedFields(com.google.protobuf.DescriptorProtos.FileDescriptorProto result) {
        if (messageTypeBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0)) {
            messageType_ = java.util.Collections.unmodifiableList(messageType_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.messageType_ = messageType_;
        } else {
          result.messageType_ = messageTypeBuilder_.build();
        }
        if (enumTypeBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            enumType_ = java.util.Collections.unmodifiableList(enumType_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.enumType_ = enumType_;
        } else {
          result.enumType_ = enumTypeBuilder_.build();
        }
        if (serviceBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0)) {
            service_ = java.util.Collections.unmodifiableList(service_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.service_ = service_;
        } else {
          result.service_ = serviceBuilder_.build();
        }
        if (extensionBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0)) {
            extension_ = java.util.Collections.unmodifiableList(extension_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.extension_ = extension_;
        } else {
          result.extension_ = extensionBuilder_.build();
        }
      }
      private void buildPartial0(com.google.protobuf.DescriptorProtos.FileDescriptorProto result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.package_ = package_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          dependency_.makeImmutable();
          result.dependency_ = dependency_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          publicDependency_.makeImmutable();
          result.publicDependency_ = publicDependency_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          weakDependency_.makeImmutable();
          result.weakDependency_ = weakDependency_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.options_ = optionsBuilder_ == null
              ? options_
              : optionsBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.sourceCodeInfo_ = sourceCodeInfoBuilder_ == null
              ? sourceCodeInfo_
              : sourceCodeInfoBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.syntax_ = syntax_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.edition_ = edition_;
          to_bitField0_ |= 0x00000020;
        }
        result.bitField0_ |= to_bitField0_;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.FileDescriptorProto) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.FileDescriptorProto)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.FileDescriptorProto other) {
        if (other == com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasPackage()) {
          package_ = other.package_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.dependency_.isEmpty()) {
          if (dependency_.isEmpty()) {
            dependency_ = other.dependency_;
            bitField0_ |= 0x00000004;
          } else {
            ensureDependencyIsMutable();
            dependency_.addAll(other.dependency_);
          }
          onChanged();
        }
        if (!other.publicDependency_.isEmpty()) {
          if (publicDependency_.isEmpty()) {
            publicDependency_ = other.publicDependency_;
            publicDependency_.makeImmutable();
            bitField0_ |= 0x00000008;
          } else {
            ensurePublicDependencyIsMutable();
            publicDependency_.addAll(other.publicDependency_);
          }
          onChanged();
        }
        if (!other.weakDependency_.isEmpty()) {
          if (weakDependency_.isEmpty()) {
            weakDependency_ = other.weakDependency_;
            weakDependency_.makeImmutable();
            bitField0_ |= 0x00000010;
          } else {
            ensureWeakDependencyIsMutable();
            weakDependency_.addAll(other.weakDependency_);
          }
          onChanged();
        }
        if (messageTypeBuilder_ == null) {
          if (!other.messageType_.isEmpty()) {
            if (messageType_.isEmpty()) {
              messageType_ = other.messageType_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureMessageTypeIsMutable();
              messageType_.addAll(other.messageType_);
            }
            onChanged();
          }
        } else {
          if (!other.messageType_.isEmpty()) {
            if (messageTypeBuilder_.isEmpty()) {
              messageTypeBuilder_.dispose();
              messageTypeBuilder_ = null;
              messageType_ = other.messageType_;
              bitField0_ = (bitField0_ & ~0x00000020);
              messageTypeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMessageTypeFieldBuilder() : null;
            } else {
              messageTypeBuilder_.addAllMessages(other.messageType_);
            }
          }
        }
        if (enumTypeBuilder_ == null) {
          if (!other.enumType_.isEmpty()) {
            if (enumType_.isEmpty()) {
              enumType_ = other.enumType_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureEnumTypeIsMutable();
              enumType_.addAll(other.enumType_);
            }
            onChanged();
          }
        } else {
          if (!other.enumType_.isEmpty()) {
            if (enumTypeBuilder_.isEmpty()) {
              enumTypeBuilder_.dispose();
              enumTypeBuilder_ = null;
              enumType_ = other.enumType_;
              bitField0_ = (bitField0_ & ~0x00000040);
              enumTypeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEnumTypeFieldBuilder() : null;
            } else {
              enumTypeBuilder_.addAllMessages(other.enumType_);
            }
          }
        }
        if (serviceBuilder_ == null) {
          if (!other.service_.isEmpty()) {
            if (service_.isEmpty()) {
              service_ = other.service_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureServiceIsMutable();
              service_.addAll(other.service_);
            }
            onChanged();
          }
        } else {
          if (!other.service_.isEmpty()) {
            if (serviceBuilder_.isEmpty()) {
              serviceBuilder_.dispose();
              serviceBuilder_ = null;
              service_ = other.service_;
              bitField0_ = (bitField0_ & ~0x00000080);
              serviceBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getServiceFieldBuilder() : null;
            } else {
              serviceBuilder_.addAllMessages(other.service_);
            }
          }
        }
        if (extensionBuilder_ == null) {
          if (!other.extension_.isEmpty()) {
            if (extension_.isEmpty()) {
              extension_ = other.extension_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureExtensionIsMutable();
              extension_.addAll(other.extension_);
            }
            onChanged();
          }
        } else {
          if (!other.extension_.isEmpty()) {
            if (extensionBuilder_.isEmpty()) {
              extensionBuilder_.dispose();
              extensionBuilder_ = null;
              extension_ = other.extension_;
              bitField0_ = (bitField0_ & ~0x00000100);
              extensionBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getExtensionFieldBuilder() : null;
            } else {
              extensionBuilder_.addAllMessages(other.extension_);
            }
          }
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        if (other.hasSourceCodeInfo()) {
          mergeSourceCodeInfo(other.getSourceCodeInfo());
        }
        if (other.hasSyntax()) {
          syntax_ = other.syntax_;
          bitField0_ |= 0x00000800;
          onChanged();
        }
        if (other.hasEdition()) {
          edition_ = other.edition_;
          bitField0_ |= 0x00001000;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getMessageTypeCount(); i++) {
          if (!getMessageType(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getEnumTypeCount(); i++) {
          if (!getEnumType(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getServiceCount(); i++) {
          if (!getService(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getExtensionCount(); i++) {
          if (!getExtension(i).isInitialized()) {
            return false;
          }
        }
        if (hasOptions()) {
          if (!getOptions().isInitialized()) {
            return false;
          }
        }
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                package_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureDependencyIsMutable();
                dependency_.add(bs);
                break;
              } // case 26
              case 34: {
                com.google.protobuf.DescriptorProtos.DescriptorProto m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.DescriptorProto.PARSER,
                        extensionRegistry);
                if (messageTypeBuilder_ == null) {
                  ensureMessageTypeIsMutable();
                  messageType_.add(m);
                } else {
                  messageTypeBuilder_.addMessage(m);
                }
                break;
              } // case 34
              case 42: {
                com.google.protobuf.DescriptorProtos.EnumDescriptorProto m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.EnumDescriptorProto.PARSER,
                        extensionRegistry);
                if (enumTypeBuilder_ == null) {
                  ensureEnumTypeIsMutable();
                  enumType_.add(m);
                } else {
                  enumTypeBuilder_.addMessage(m);
                }
                break;
              } // case 42
              case 50: {
                com.google.protobuf.DescriptorProtos.ServiceDescriptorProto m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.PARSER,
                        extensionRegistry);
                if (serviceBuilder_ == null) {
                  ensureServiceIsMutable();
                  service_.add(m);
                } else {
                  serviceBuilder_.addMessage(m);
                }
                break;
              } // case 50
              case 58: {
                com.google.protobuf.DescriptorProtos.FieldDescriptorProto m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.FieldDescriptorProto.PARSER,
                        extensionRegistry);
                if (extensionBuilder_ == null) {
                  ensureExtensionIsMutable();
                  extension_.add(m);
                } else {
                  extensionBuilder_.addMessage(m);
                }
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getSourceCodeInfoFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 74
              case 80: {
                int v = input.readInt32();
                ensurePublicDependencyIsMutable();
                publicDependency_.addInt(v);
                break;
              } // case 80
              case 82: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensurePublicDependencyIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  publicDependency_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 82
              case 88: {
                int v = input.readInt32();
                ensureWeakDependencyIsMutable();
                weakDependency_.addInt(v);
                break;
              } // case 88
              case 90: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureWeakDependencyIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  weakDependency_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 90
              case 98: {
                syntax_ = input.readBytes();
                bitField0_ |= 0x00000800;
                break;
              } // case 98
              case 106: {
                edition_ = input.readBytes();
                bitField0_ |= 0x00001000;
                break;
              } // case 106
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private java.lang.Object name_ = "";
      /**
       * optional string name = 1 [json_name = "name"];
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      private java.lang.Object package_ = "";
      /**
       * optional string package = 2 [json_name = "package"];
       * @return Whether the package field is set.
       */
      public boolean hasPackage() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * optional string package = 2 [json_name = "package"];
       * @return The package.
       */
      public java.lang.String getPackage() {
        java.lang.Object ref = package_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            package_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string package = 2 [json_name = "package"];
       * @return The bytes for package.
       */
      public com.google.protobuf.ByteString
          getPackageBytes() {
        java.lang.Object ref = package_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          package_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string package = 2 [json_name = "package"];
       * @param value The package to set.
       * @return This builder for chaining.
       */
      public Builder setPackage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        package_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * optional string package = 2 [json_name = "package"];
       * @return This builder for chaining.
       */
      public Builder clearPackage() {
        package_ = getDefaultInstance().getPackage();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * optional string package = 2 [json_name = "package"];
       * @param value The bytes for package to set.
       * @return This builder for chaining.
       */
      public Builder setPackageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        package_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      private com.google.protobuf.LazyStringArrayList dependency_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureDependencyIsMutable() {
        if (!dependency_.isModifiable()) {
          dependency_ = new com.google.protobuf.LazyStringArrayList(dependency_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * repeated string dependency = 3 [json_name = "dependency"];
       * @return A list containing the dependency.
       */
      public com.google.protobuf.ProtocolStringList
          getDependencyList() {
        dependency_.makeImmutable();
        return dependency_;
      }
      /**
       * repeated string dependency = 3 [json_name = "dependency"];
       * @return The count of dependency.
       */
      public int getDependencyCount() {
        return dependency_.size();
      }
      /**
       * repeated string dependency = 3 [json_name = "dependency"];
       * @param index The index of the element to return.
       * @return The dependency at the given index.
       */
      public java.lang.String getDependency(int index) {
        return dependency_.get(index);
      }
      /**
       * repeated string dependency = 3 [json_name = "dependency"];
       * @param index The index of the value to return.
       * @return The bytes of the dependency at the given index.
       */
      public com.google.protobuf.ByteString
          getDependencyBytes(int index) {
        return dependency_.getByteString(index);
      }
      /**
       * repeated string dependency = 3 [json_name = "dependency"];
       * @param index The index to set the value at.
       * @param value The dependency to set.
       * @return This builder for chaining.
       */
      public Builder setDependency(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureDependencyIsMutable();
        dependency_.set(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * repeated string dependency = 3 [json_name = "dependency"];
       * @param value The dependency to add.
       * @return This builder for chaining.
       */
      public Builder addDependency(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureDependencyIsMutable();
        dependency_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * repeated string dependency = 3 [json_name = "dependency"];
       * @param values The dependency to add.
       * @return This builder for chaining.
       */
      public Builder addAllDependency(
          java.lang.Iterable values) {
        ensureDependencyIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, dependency_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * repeated string dependency = 3 [json_name = "dependency"];
       * @return This builder for chaining.
       */
      public Builder clearDependency() {
        dependency_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);;
        onChanged();
        return this;
      }
      /**
       * repeated string dependency = 3 [json_name = "dependency"];
       * @param value The bytes of the dependency to add.
       * @return This builder for chaining.
       */
      public Builder addDependencyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureDependencyIsMutable();
        dependency_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      private com.google.protobuf.Internal.IntList publicDependency_ = emptyIntList();
      private void ensurePublicDependencyIsMutable() {
        if (!publicDependency_.isModifiable()) {
          publicDependency_ = makeMutableCopy(publicDependency_);
        }
        bitField0_ |= 0x00000008;
      }
      /**
       * repeated int32 public_dependency = 10 [json_name = "publicDependency"];
       * @return A list containing the publicDependency.
       */
      public java.util.List
          getPublicDependencyList() {
        publicDependency_.makeImmutable();
        return publicDependency_;
      }
      /**
       * repeated int32 public_dependency = 10 [json_name = "publicDependency"];
       * @return The count of publicDependency.
       */
      public int getPublicDependencyCount() {
        return publicDependency_.size();
      }
      /**
       * repeated int32 public_dependency = 10 [json_name = "publicDependency"];
       * @param index The index of the element to return.
       * @return The publicDependency at the given index.
       */
      public int getPublicDependency(int index) {
        return publicDependency_.getInt(index);
      }
      /**
       * repeated int32 public_dependency = 10 [json_name = "publicDependency"];
       * @param index The index to set the value at.
       * @param value The publicDependency to set.
       * @return This builder for chaining.
       */
      public Builder setPublicDependency(
          int index, int value) {
        ensurePublicDependencyIsMutable();
        publicDependency_.setInt(index, value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * repeated int32 public_dependency = 10 [json_name = "publicDependency"];
       * @param value The publicDependency to add.
       * @return This builder for chaining.
       */
      public Builder addPublicDependency(int value) {
        ensurePublicDependencyIsMutable();
        publicDependency_.addInt(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * repeated int32 public_dependency = 10 [json_name = "publicDependency"];
       * @param values The publicDependency to add.
       * @return This builder for chaining.
       */
      public Builder addAllPublicDependency(
          java.lang.Iterable extends java.lang.Integer> values) {
        ensurePublicDependencyIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, publicDependency_);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * repeated int32 public_dependency = 10 [json_name = "publicDependency"];
       * @return This builder for chaining.
       */
      public Builder clearPublicDependency() {
        publicDependency_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      private com.google.protobuf.Internal.IntList weakDependency_ = emptyIntList();
      private void ensureWeakDependencyIsMutable() {
        if (!weakDependency_.isModifiable()) {
          weakDependency_ = makeMutableCopy(weakDependency_);
        }
        bitField0_ |= 0x00000010;
      }
      /**
       * repeated int32 weak_dependency = 11 [json_name = "weakDependency"];
       * @return A list containing the weakDependency.
       */
      public java.util.List
          getWeakDependencyList() {
        weakDependency_.makeImmutable();
        return weakDependency_;
      }
      /**
       * repeated int32 weak_dependency = 11 [json_name = "weakDependency"];
       * @return The count of weakDependency.
       */
      public int getWeakDependencyCount() {
        return weakDependency_.size();
      }
      /**
       * repeated int32 weak_dependency = 11 [json_name = "weakDependency"];
       * @param index The index of the element to return.
       * @return The weakDependency at the given index.
       */
      public int getWeakDependency(int index) {
        return weakDependency_.getInt(index);
      }
      /**
       * repeated int32 weak_dependency = 11 [json_name = "weakDependency"];
       * @param index The index to set the value at.
       * @param value The weakDependency to set.
       * @return This builder for chaining.
       */
      public Builder setWeakDependency(
          int index, int value) {
        ensureWeakDependencyIsMutable();
        weakDependency_.setInt(index, value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * repeated int32 weak_dependency = 11 [json_name = "weakDependency"];
       * @param value The weakDependency to add.
       * @return This builder for chaining.
       */
      public Builder addWeakDependency(int value) {
        ensureWeakDependencyIsMutable();
        weakDependency_.addInt(value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * repeated int32 weak_dependency = 11 [json_name = "weakDependency"];
       * @param values The weakDependency to add.
       * @return This builder for chaining.
       */
      public Builder addAllWeakDependency(
          java.lang.Iterable extends java.lang.Integer> values) {
        ensureWeakDependencyIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, weakDependency_);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * repeated int32 weak_dependency = 11 [json_name = "weakDependency"];
       * @return This builder for chaining.
       */
      public Builder clearWeakDependency() {
        weakDependency_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      private java.util.List messageType_ =
        java.util.Collections.emptyList();
      private void ensureMessageTypeIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          messageType_ = new java.util.ArrayList(messageType_);
          bitField0_ |= 0x00000020;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> messageTypeBuilder_;
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public java.util.List getMessageTypeList() {
        if (messageTypeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(messageType_);
        } else {
          return messageTypeBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public int getMessageTypeCount() {
        if (messageTypeBuilder_ == null) {
          return messageType_.size();
        } else {
          return messageTypeBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto getMessageType(int index) {
        if (messageTypeBuilder_ == null) {
          return messageType_.get(index);
        } else {
          return messageTypeBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public Builder setMessageType(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto value) {
        if (messageTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMessageTypeIsMutable();
          messageType_.set(index, value);
          onChanged();
        } else {
          messageTypeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public Builder setMessageType(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        if (messageTypeBuilder_ == null) {
          ensureMessageTypeIsMutable();
          messageType_.set(index, builderForValue.build());
          onChanged();
        } else {
          messageTypeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public Builder addMessageType(com.google.protobuf.DescriptorProtos.DescriptorProto value) {
        if (messageTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMessageTypeIsMutable();
          messageType_.add(value);
          onChanged();
        } else {
          messageTypeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public Builder addMessageType(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto value) {
        if (messageTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMessageTypeIsMutable();
          messageType_.add(index, value);
          onChanged();
        } else {
          messageTypeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public Builder addMessageType(
          com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        if (messageTypeBuilder_ == null) {
          ensureMessageTypeIsMutable();
          messageType_.add(builderForValue.build());
          onChanged();
        } else {
          messageTypeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public Builder addMessageType(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        if (messageTypeBuilder_ == null) {
          ensureMessageTypeIsMutable();
          messageType_.add(index, builderForValue.build());
          onChanged();
        } else {
          messageTypeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public Builder addAllMessageType(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.DescriptorProto> values) {
        if (messageTypeBuilder_ == null) {
          ensureMessageTypeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, messageType_);
          onChanged();
        } else {
          messageTypeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public Builder clearMessageType() {
        if (messageTypeBuilder_ == null) {
          messageType_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          messageTypeBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public Builder removeMessageType(int index) {
        if (messageTypeBuilder_ == null) {
          ensureMessageTypeIsMutable();
          messageType_.remove(index);
          onChanged();
        } else {
          messageTypeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder getMessageTypeBuilder(
          int index) {
        return getMessageTypeFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getMessageTypeOrBuilder(
          int index) {
        if (messageTypeBuilder_ == null) {
          return messageType_.get(index);  } else {
          return messageTypeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
           getMessageTypeOrBuilderList() {
        if (messageTypeBuilder_ != null) {
          return messageTypeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(messageType_);
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder addMessageTypeBuilder() {
        return getMessageTypeFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder addMessageTypeBuilder(
          int index) {
        return getMessageTypeFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.DescriptorProto message_type = 4 [json_name = "messageType"];
       */
      public java.util.List 
           getMessageTypeBuilderList() {
        return getMessageTypeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
          getMessageTypeFieldBuilder() {
        if (messageTypeBuilder_ == null) {
          messageTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>(
                  messageType_,
                  ((bitField0_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          messageType_ = null;
        }
        return messageTypeBuilder_;
      }
      private java.util.List enumType_ =
        java.util.Collections.emptyList();
      private void ensureEnumTypeIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          enumType_ = new java.util.ArrayList(enumType_);
          bitField0_ |= 0x00000040;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> enumTypeBuilder_;
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public java.util.List getEnumTypeList() {
        if (enumTypeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(enumType_);
        } else {
          return enumTypeBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public int getEnumTypeCount() {
        if (enumTypeBuilder_ == null) {
          return enumType_.size();
        } else {
          return enumTypeBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
        if (enumTypeBuilder_ == null) {
          return enumType_.get(index);
        } else {
          return enumTypeBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public Builder setEnumType(
          int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) {
        if (enumTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnumTypeIsMutable();
          enumType_.set(index, value);
          onChanged();
        } else {
          enumTypeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public Builder setEnumType(
          int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        if (enumTypeBuilder_ == null) {
          ensureEnumTypeIsMutable();
          enumType_.set(index, builderForValue.build());
          onChanged();
        } else {
          enumTypeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public Builder addEnumType(com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) {
        if (enumTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnumTypeIsMutable();
          enumType_.add(value);
          onChanged();
        } else {
          enumTypeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public Builder addEnumType(
          int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) {
        if (enumTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnumTypeIsMutable();
          enumType_.add(index, value);
          onChanged();
        } else {
          enumTypeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public Builder addEnumType(
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        if (enumTypeBuilder_ == null) {
          ensureEnumTypeIsMutable();
          enumType_.add(builderForValue.build());
          onChanged();
        } else {
          enumTypeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public Builder addEnumType(
          int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        if (enumTypeBuilder_ == null) {
          ensureEnumTypeIsMutable();
          enumType_.add(index, builderForValue.build());
          onChanged();
        } else {
          enumTypeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public Builder addAllEnumType(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.EnumDescriptorProto> values) {
        if (enumTypeBuilder_ == null) {
          ensureEnumTypeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, enumType_);
          onChanged();
        } else {
          enumTypeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public Builder clearEnumType() {
        if (enumTypeBuilder_ == null) {
          enumType_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          enumTypeBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public Builder removeEnumType(int index) {
        if (enumTypeBuilder_ == null) {
          ensureEnumTypeIsMutable();
          enumType_.remove(index);
          onChanged();
        } else {
          enumTypeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder getEnumTypeBuilder(
          int index) {
        return getEnumTypeFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
          int index) {
        if (enumTypeBuilder_ == null) {
          return enumType_.get(index);  } else {
          return enumTypeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
           getEnumTypeOrBuilderList() {
        if (enumTypeBuilder_ != null) {
          return enumTypeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(enumType_);
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder addEnumTypeBuilder() {
        return getEnumTypeFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder addEnumTypeBuilder(
          int index) {
        return getEnumTypeFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 5 [json_name = "enumType"];
       */
      public java.util.List 
           getEnumTypeBuilderList() {
        return getEnumTypeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
          getEnumTypeFieldBuilder() {
        if (enumTypeBuilder_ == null) {
          enumTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>(
                  enumType_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          enumType_ = null;
        }
        return enumTypeBuilder_;
      }
      private java.util.List service_ =
        java.util.Collections.emptyList();
      private void ensureServiceIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          service_ = new java.util.ArrayList(service_);
          bitField0_ |= 0x00000080;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.ServiceDescriptorProto, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> serviceBuilder_;
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public java.util.List getServiceList() {
        if (serviceBuilder_ == null) {
          return java.util.Collections.unmodifiableList(service_);
        } else {
          return serviceBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public int getServiceCount() {
        if (serviceBuilder_ == null) {
          return service_.size();
        } else {
          return serviceBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getService(int index) {
        if (serviceBuilder_ == null) {
          return service_.get(index);
        } else {
          return serviceBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public Builder setService(
          int index, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto value) {
        if (serviceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceIsMutable();
          service_.set(index, value);
          onChanged();
        } else {
          serviceBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public Builder setService(
          int index, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder builderForValue) {
        if (serviceBuilder_ == null) {
          ensureServiceIsMutable();
          service_.set(index, builderForValue.build());
          onChanged();
        } else {
          serviceBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public Builder addService(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto value) {
        if (serviceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceIsMutable();
          service_.add(value);
          onChanged();
        } else {
          serviceBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public Builder addService(
          int index, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto value) {
        if (serviceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceIsMutable();
          service_.add(index, value);
          onChanged();
        } else {
          serviceBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public Builder addService(
          com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder builderForValue) {
        if (serviceBuilder_ == null) {
          ensureServiceIsMutable();
          service_.add(builderForValue.build());
          onChanged();
        } else {
          serviceBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public Builder addService(
          int index, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder builderForValue) {
        if (serviceBuilder_ == null) {
          ensureServiceIsMutable();
          service_.add(index, builderForValue.build());
          onChanged();
        } else {
          serviceBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public Builder addAllService(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> values) {
        if (serviceBuilder_ == null) {
          ensureServiceIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, service_);
          onChanged();
        } else {
          serviceBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public Builder clearService() {
        if (serviceBuilder_ == null) {
          service_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          serviceBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public Builder removeService(int index) {
        if (serviceBuilder_ == null) {
          ensureServiceIsMutable();
          service_.remove(index);
          onChanged();
        } else {
          serviceBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder getServiceBuilder(
          int index) {
        return getServiceFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder getServiceOrBuilder(
          int index) {
        if (serviceBuilder_ == null) {
          return service_.get(index);  } else {
          return serviceBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> 
           getServiceOrBuilderList() {
        if (serviceBuilder_ != null) {
          return serviceBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(service_);
        }
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder addServiceBuilder() {
        return getServiceFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder addServiceBuilder(
          int index) {
        return getServiceFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.ServiceDescriptorProto service = 6 [json_name = "service"];
       */
      public java.util.List 
           getServiceBuilderList() {
        return getServiceFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.ServiceDescriptorProto, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> 
          getServiceFieldBuilder() {
        if (serviceBuilder_ == null) {
          serviceBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.ServiceDescriptorProto, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder>(
                  service_,
                  ((bitField0_ & 0x00000080) != 0),
                  getParentForChildren(),
                  isClean());
          service_ = null;
        }
        return serviceBuilder_;
      }
      private java.util.List extension_ =
        java.util.Collections.emptyList();
      private void ensureExtensionIsMutable() {
        if (!((bitField0_ & 0x00000100) != 0)) {
          extension_ = new java.util.ArrayList(extension_);
          bitField0_ |= 0x00000100;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> extensionBuilder_;
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public java.util.List getExtensionList() {
        if (extensionBuilder_ == null) {
          return java.util.Collections.unmodifiableList(extension_);
        } else {
          return extensionBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public int getExtensionCount() {
        if (extensionBuilder_ == null) {
          return extension_.size();
        } else {
          return extensionBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
        if (extensionBuilder_ == null) {
          return extension_.get(index);
        } else {
          return extensionBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public Builder setExtension(
          int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (extensionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExtensionIsMutable();
          extension_.set(index, value);
          onChanged();
        } else {
          extensionBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public Builder setExtension(
          int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        if (extensionBuilder_ == null) {
          ensureExtensionIsMutable();
          extension_.set(index, builderForValue.build());
          onChanged();
        } else {
          extensionBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public Builder addExtension(com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (extensionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExtensionIsMutable();
          extension_.add(value);
          onChanged();
        } else {
          extensionBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public Builder addExtension(
          int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (extensionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExtensionIsMutable();
          extension_.add(index, value);
          onChanged();
        } else {
          extensionBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public Builder addExtension(
          com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        if (extensionBuilder_ == null) {
          ensureExtensionIsMutable();
          extension_.add(builderForValue.build());
          onChanged();
        } else {
          extensionBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public Builder addExtension(
          int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        if (extensionBuilder_ == null) {
          ensureExtensionIsMutable();
          extension_.add(index, builderForValue.build());
          onChanged();
        } else {
          extensionBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public Builder addAllExtension(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.FieldDescriptorProto> values) {
        if (extensionBuilder_ == null) {
          ensureExtensionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, extension_);
          onChanged();
        } else {
          extensionBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public Builder clearExtension() {
        if (extensionBuilder_ == null) {
          extension_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          extensionBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public Builder removeExtension(int index) {
        if (extensionBuilder_ == null) {
          ensureExtensionIsMutable();
          extension_.remove(index);
          onChanged();
        } else {
          extensionBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder getExtensionBuilder(
          int index) {
        return getExtensionFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
          int index) {
        if (extensionBuilder_ == null) {
          return extension_.get(index);  } else {
          return extensionBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
           getExtensionOrBuilderList() {
        if (extensionBuilder_ != null) {
          return extensionBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(extension_);
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder addExtensionBuilder() {
        return getExtensionFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder addExtensionBuilder(
          int index) {
        return getExtensionFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 7 [json_name = "extension"];
       */
      public java.util.List 
           getExtensionBuilderList() {
        return getExtensionFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
          getExtensionFieldBuilder() {
        if (extensionBuilder_ == null) {
          extensionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>(
                  extension_,
                  ((bitField0_ & 0x00000100) != 0),
                  getParentForChildren(),
                  isClean());
          extension_ = null;
        }
        return extensionBuilder_;
      }
      private com.google.protobuf.DescriptorProtos.FileOptions options_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FileOptions, com.google.protobuf.DescriptorProtos.FileOptions.Builder, com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder> optionsBuilder_;
      /**
       * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
       * @return Whether the options field is set.
       */
      public boolean hasOptions() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
       * @return The options.
       */
      public com.google.protobuf.DescriptorProtos.FileOptions getOptions() {
        if (optionsBuilder_ == null) {
          return options_ == null ? com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance() : options_;
        } else {
          return optionsBuilder_.getMessage();
        }
      }
      /**
       * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
       */
      public Builder setOptions(com.google.protobuf.DescriptorProtos.FileOptions value) {
        if (optionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          options_ = value;
        } else {
          optionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
       */
      public Builder setOptions(
          com.google.protobuf.DescriptorProtos.FileOptions.Builder builderForValue) {
        if (optionsBuilder_ == null) {
          options_ = builderForValue.build();
        } else {
          optionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
       */
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.FileOptions value) {
        if (optionsBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            options_ != null &&
            options_ != com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance()) {
            getOptionsBuilder().mergeFrom(value);
          } else {
            options_ = value;
          }
        } else {
          optionsBuilder_.mergeFrom(value);
        }
        if (options_ != null) {
          bitField0_ |= 0x00000200;
          onChanged();
        }
        return this;
      }
      /**
       * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
       */
      public Builder clearOptions() {
        bitField0_ = (bitField0_ & ~0x00000200);
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.FileOptions.Builder getOptionsBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getOptionsFieldBuilder().getBuilder();
      }
      /**
       * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder getOptionsOrBuilder() {
        if (optionsBuilder_ != null) {
          return optionsBuilder_.getMessageOrBuilder();
        } else {
          return options_ == null ?
              com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance() : options_;
        }
      }
      /**
       * optional .google.protobuf.FileOptions options = 8 [json_name = "options"];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FileOptions, com.google.protobuf.DescriptorProtos.FileOptions.Builder, com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder> 
          getOptionsFieldBuilder() {
        if (optionsBuilder_ == null) {
          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.FileOptions, com.google.protobuf.DescriptorProtos.FileOptions.Builder, com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder>(
                  getOptions(),
                  getParentForChildren(),
                  isClean());
          options_ = null;
        }
        return optionsBuilder_;
      }
      private com.google.protobuf.DescriptorProtos.SourceCodeInfo sourceCodeInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.SourceCodeInfo, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder> sourceCodeInfoBuilder_;
      /**
       * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
       * @return Whether the sourceCodeInfo field is set.
       */
      public boolean hasSourceCodeInfo() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
       * @return The sourceCodeInfo.
       */
      public com.google.protobuf.DescriptorProtos.SourceCodeInfo getSourceCodeInfo() {
        if (sourceCodeInfoBuilder_ == null) {
          return sourceCodeInfo_ == null ? com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance() : sourceCodeInfo_;
        } else {
          return sourceCodeInfoBuilder_.getMessage();
        }
      }
      /**
       * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
       */
      public Builder setSourceCodeInfo(com.google.protobuf.DescriptorProtos.SourceCodeInfo value) {
        if (sourceCodeInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sourceCodeInfo_ = value;
        } else {
          sourceCodeInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
       */
      public Builder setSourceCodeInfo(
          com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder builderForValue) {
        if (sourceCodeInfoBuilder_ == null) {
          sourceCodeInfo_ = builderForValue.build();
        } else {
          sourceCodeInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
       */
      public Builder mergeSourceCodeInfo(com.google.protobuf.DescriptorProtos.SourceCodeInfo value) {
        if (sourceCodeInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0) &&
            sourceCodeInfo_ != null &&
            sourceCodeInfo_ != com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance()) {
            getSourceCodeInfoBuilder().mergeFrom(value);
          } else {
            sourceCodeInfo_ = value;
          }
        } else {
          sourceCodeInfoBuilder_.mergeFrom(value);
        }
        if (sourceCodeInfo_ != null) {
          bitField0_ |= 0x00000400;
          onChanged();
        }
        return this;
      }
      /**
       * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
       */
      public Builder clearSourceCodeInfo() {
        bitField0_ = (bitField0_ & ~0x00000400);
        sourceCodeInfo_ = null;
        if (sourceCodeInfoBuilder_ != null) {
          sourceCodeInfoBuilder_.dispose();
          sourceCodeInfoBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
       */
      public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder getSourceCodeInfoBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getSourceCodeInfoFieldBuilder().getBuilder();
      }
      /**
       * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
       */
      public com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder getSourceCodeInfoOrBuilder() {
        if (sourceCodeInfoBuilder_ != null) {
          return sourceCodeInfoBuilder_.getMessageOrBuilder();
        } else {
          return sourceCodeInfo_ == null ?
              com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance() : sourceCodeInfo_;
        }
      }
      /**
       * optional .google.protobuf.SourceCodeInfo source_code_info = 9 [json_name = "sourceCodeInfo"];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.SourceCodeInfo, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder> 
          getSourceCodeInfoFieldBuilder() {
        if (sourceCodeInfoBuilder_ == null) {
          sourceCodeInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.SourceCodeInfo, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder>(
                  getSourceCodeInfo(),
                  getParentForChildren(),
                  isClean());
          sourceCodeInfo_ = null;
        }
        return sourceCodeInfoBuilder_;
      }
      private java.lang.Object syntax_ = "";
      /**
       * optional string syntax = 12 [json_name = "syntax"];
       * @return Whether the syntax field is set.
       */
      public boolean hasSyntax() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * optional string syntax = 12 [json_name = "syntax"];
       * @return The syntax.
       */
      public java.lang.String getSyntax() {
        java.lang.Object ref = syntax_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            syntax_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string syntax = 12 [json_name = "syntax"];
       * @return The bytes for syntax.
       */
      public com.google.protobuf.ByteString
          getSyntaxBytes() {
        java.lang.Object ref = syntax_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          syntax_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string syntax = 12 [json_name = "syntax"];
       * @param value The syntax to set.
       * @return This builder for chaining.
       */
      public Builder setSyntax(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        syntax_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * optional string syntax = 12 [json_name = "syntax"];
       * @return This builder for chaining.
       */
      public Builder clearSyntax() {
        syntax_ = getDefaultInstance().getSyntax();
        bitField0_ = (bitField0_ & ~0x00000800);
        onChanged();
        return this;
      }
      /**
       * optional string syntax = 12 [json_name = "syntax"];
       * @param value The bytes for syntax to set.
       * @return This builder for chaining.
       */
      public Builder setSyntaxBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        syntax_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      private java.lang.Object edition_ = "";
      /**
       * optional string edition = 13 [json_name = "edition"];
       * @return Whether the edition field is set.
       */
      public boolean hasEdition() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * optional string edition = 13 [json_name = "edition"];
       * @return The edition.
       */
      public java.lang.String getEdition() {
        java.lang.Object ref = edition_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            edition_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string edition = 13 [json_name = "edition"];
       * @return The bytes for edition.
       */
      public com.google.protobuf.ByteString
          getEditionBytes() {
        java.lang.Object ref = edition_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          edition_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string edition = 13 [json_name = "edition"];
       * @param value The edition to set.
       * @return This builder for chaining.
       */
      public Builder setEdition(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        edition_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * optional string edition = 13 [json_name = "edition"];
       * @return This builder for chaining.
       */
      public Builder clearEdition() {
        edition_ = getDefaultInstance().getEdition();
        bitField0_ = (bitField0_ & ~0x00001000);
        onChanged();
        return this;
      }
      /**
       * optional string edition = 13 [json_name = "edition"];
       * @param value The bytes for edition to set.
       * @return This builder for chaining.
       */
      public Builder setEditionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        edition_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:google.protobuf.FileDescriptorProto)
    }
    // @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorProto)
    private static final com.google.protobuf.DescriptorProtos.FileDescriptorProto DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.FileDescriptorProto();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    @java.lang.Deprecated public static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public FileDescriptorProto parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FileDescriptorProto getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface DescriptorProtoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.protobuf.DescriptorProto)
      com.google.protobuf.MessageOrBuilder {
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    java.lang.String getName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
     */
    java.util.List 
        getFieldList();
    /**
     * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
     */
    com.google.protobuf.DescriptorProtos.FieldDescriptorProto getField(int index);
    /**
     * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
     */
    int getFieldCount();
    /**
     * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
        getFieldOrBuilderList();
    /**
     * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
     */
    com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getFieldOrBuilder(
        int index);
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
     */
    java.util.List 
        getExtensionList();
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
     */
    com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index);
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
     */
    int getExtensionCount();
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
        getExtensionOrBuilderList();
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
     */
    com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
        int index);
    /**
     * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
     */
    java.util.List 
        getNestedTypeList();
    /**
     * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
     */
    com.google.protobuf.DescriptorProtos.DescriptorProto getNestedType(int index);
    /**
     * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
     */
    int getNestedTypeCount();
    /**
     * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
        getNestedTypeOrBuilderList();
    /**
     * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
     */
    com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getNestedTypeOrBuilder(
        int index);
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
     */
    java.util.List 
        getEnumTypeList();
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
     */
    com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index);
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
     */
    int getEnumTypeCount();
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
        getEnumTypeOrBuilderList();
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
     */
    com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
        int index);
    /**
     * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
     */
    java.util.List 
        getExtensionRangeList();
    /**
     * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
     */
    com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getExtensionRange(int index);
    /**
     * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
     */
    int getExtensionRangeCount();
    /**
     * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> 
        getExtensionRangeOrBuilderList();
    /**
     * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
     */
    com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder getExtensionRangeOrBuilder(
        int index);
    /**
     * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
     */
    java.util.List 
        getOneofDeclList();
    /**
     * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
     */
    com.google.protobuf.DescriptorProtos.OneofDescriptorProto getOneofDecl(int index);
    /**
     * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
     */
    int getOneofDeclCount();
    /**
     * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> 
        getOneofDeclOrBuilderList();
    /**
     * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
     */
    com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder getOneofDeclOrBuilder(
        int index);
    /**
     * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
     * @return Whether the options field is set.
     */
    boolean hasOptions();
    /**
     * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
     * @return The options.
     */
    com.google.protobuf.DescriptorProtos.MessageOptions getOptions();
    /**
     * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
     */
    com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder getOptionsOrBuilder();
    /**
     * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
     */
    java.util.List 
        getReservedRangeList();
    /**
     * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
     */
    com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange getReservedRange(int index);
    /**
     * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
     */
    int getReservedRangeCount();
    /**
     * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder> 
        getReservedRangeOrBuilderList();
    /**
     * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
     */
    com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder getReservedRangeOrBuilder(
        int index);
    /**
     * repeated string reserved_name = 10 [json_name = "reservedName"];
     * @return A list containing the reservedName.
     */
    java.util.List
        getReservedNameList();
    /**
     * repeated string reserved_name = 10 [json_name = "reservedName"];
     * @return The count of reservedName.
     */
    int getReservedNameCount();
    /**
     * repeated string reserved_name = 10 [json_name = "reservedName"];
     * @param index The index of the element to return.
     * @return The reservedName at the given index.
     */
    java.lang.String getReservedName(int index);
    /**
     * repeated string reserved_name = 10 [json_name = "reservedName"];
     * @param index The index of the value to return.
     * @return The bytes of the reservedName at the given index.
     */
    com.google.protobuf.ByteString
        getReservedNameBytes(int index);
  }
  /**
   * Protobuf type {@code google.protobuf.DescriptorProto}
   */
  public static final class DescriptorProto extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.protobuf.DescriptorProto)
      DescriptorProtoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DescriptorProto.newBuilder() to construct.
    private DescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private DescriptorProto() {
      name_ = "";
      field_ = java.util.Collections.emptyList();
      extension_ = java.util.Collections.emptyList();
      nestedType_ = java.util.Collections.emptyList();
      enumType_ = java.util.Collections.emptyList();
      extensionRange_ = java.util.Collections.emptyList();
      oneofDecl_ = java.util.Collections.emptyList();
      reservedRange_ = java.util.Collections.emptyList();
      reservedName_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DescriptorProto();
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.protobuf.DescriptorProtos.DescriptorProto.class, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder.class);
    }
    public interface ExtensionRangeOrBuilder extends
        // @@protoc_insertion_point(interface_extends:google.protobuf.DescriptorProto.ExtensionRange)
        com.google.protobuf.MessageOrBuilder {
      /**
       * optional int32 start = 1 [json_name = "start"];
       * @return Whether the start field is set.
       */
      boolean hasStart();
      /**
       * optional int32 start = 1 [json_name = "start"];
       * @return The start.
       */
      int getStart();
      /**
       * optional int32 end = 2 [json_name = "end"];
       * @return Whether the end field is set.
       */
      boolean hasEnd();
      /**
       * optional int32 end = 2 [json_name = "end"];
       * @return The end.
       */
      int getEnd();
      /**
       * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
       * @return Whether the options field is set.
       */
      boolean hasOptions();
      /**
       * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
       * @return The options.
       */
      com.google.protobuf.DescriptorProtos.ExtensionRangeOptions getOptions();
      /**
       * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
       */
      com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder getOptionsOrBuilder();
    }
    /**
     * Protobuf type {@code google.protobuf.DescriptorProto.ExtensionRange}
     */
    public static final class ExtensionRange extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:google.protobuf.DescriptorProto.ExtensionRange)
        ExtensionRangeOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ExtensionRange.newBuilder() to construct.
      private ExtensionRange(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
        super(builder);
      }
      private ExtensionRange() {
      }
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new ExtensionRange();
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.class, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder.class);
      }
      private int bitField0_;
      public static final int START_FIELD_NUMBER = 1;
      private int start_ = 0;
      /**
       * optional int32 start = 1 [json_name = "start"];
       * @return Whether the start field is set.
       */
      @java.lang.Override
      public boolean hasStart() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional int32 start = 1 [json_name = "start"];
       * @return The start.
       */
      @java.lang.Override
      public int getStart() {
        return start_;
      }
      public static final int END_FIELD_NUMBER = 2;
      private int end_ = 0;
      /**
       * optional int32 end = 2 [json_name = "end"];
       * @return Whether the end field is set.
       */
      @java.lang.Override
      public boolean hasEnd() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * optional int32 end = 2 [json_name = "end"];
       * @return The end.
       */
      @java.lang.Override
      public int getEnd() {
        return end_;
      }
      public static final int OPTIONS_FIELD_NUMBER = 3;
      private com.google.protobuf.DescriptorProtos.ExtensionRangeOptions options_;
      /**
       * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
       * @return Whether the options field is set.
       */
      @java.lang.Override
      public boolean hasOptions() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
       * @return The options.
       */
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions getOptions() {
        return options_ == null ? com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance() : options_;
      }
      /**
       * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
       */
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder getOptionsOrBuilder() {
        return options_ == null ? com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance() : options_;
      }
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
        if (hasOptions()) {
          if (!getOptions().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, start_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeInt32(2, end_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeMessage(3, getOptions());
        }
        getUnknownFields().writeTo(output);
      }
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, start_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, end_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, getOptions());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange)) {
          return super.equals(obj);
        }
        com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange other = (com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange) obj;
        if (hasStart() != other.hasStart()) return false;
        if (hasStart()) {
          if (getStart()
              != other.getStart()) return false;
        }
        if (hasEnd() != other.hasEnd()) return false;
        if (hasEnd()) {
          if (getEnd()
              != other.getEnd()) return false;
        }
        if (hasOptions() != other.hasOptions()) return false;
        if (hasOptions()) {
          if (!getOptions()
              .equals(other.getOptions())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStart()) {
          hash = (37 * hash) + START_FIELD_NUMBER;
          hash = (53 * hash) + getStart();
        }
        if (hasEnd()) {
          hash = (37 * hash) + END_FIELD_NUMBER;
          hash = (53 * hash) + getEnd();
        }
        if (hasOptions()) {
          hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
          hash = (53 * hash) + getOptions().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code google.protobuf.DescriptorProto.ExtensionRange}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder implements
          // @@protoc_insertion_point(builder_implements:google.protobuf.DescriptorProto.ExtensionRange)
          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor;
        }
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.class, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder.class);
        }
        // Construct using com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getOptionsFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          start_ = 0;
          end_ = 0;
          options_ = null;
          if (optionsBuilder_ != null) {
            optionsBuilder_.dispose();
            optionsBuilder_ = null;
          }
          return this;
        }
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor;
        }
        @java.lang.Override
        public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getDefaultInstanceForType() {
          return com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDefaultInstance();
        }
        @java.lang.Override
        public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange build() {
          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        @java.lang.Override
        public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange buildPartial() {
          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange result = new com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
        private void buildPartial0(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.start_ = start_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.end_ = end_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.options_ = optionsBuilder_ == null
                ? options_
                : optionsBuilder_.build();
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ |= to_bitField0_;
        }
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange) {
            return mergeFrom((com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        public Builder mergeFrom(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange other) {
          if (other == com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDefaultInstance()) return this;
          if (other.hasStart()) {
            setStart(other.getStart());
          }
          if (other.hasEnd()) {
            setEnd(other.getEnd());
          }
          if (other.hasOptions()) {
            mergeOptions(other.getOptions());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
        @java.lang.Override
        public final boolean isInitialized() {
          if (hasOptions()) {
            if (!getOptions().isInitialized()) {
              return false;
            }
          }
          return true;
        }
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  start_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  end_ = input.readInt32();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                case 26: {
                  input.readMessage(
                      getOptionsFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
        private int start_ ;
        /**
         * optional int32 start = 1 [json_name = "start"];
         * @return Whether the start field is set.
         */
        @java.lang.Override
        public boolean hasStart() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * optional int32 start = 1 [json_name = "start"];
         * @return The start.
         */
        @java.lang.Override
        public int getStart() {
          return start_;
        }
        /**
         * optional int32 start = 1 [json_name = "start"];
         * @param value The start to set.
         * @return This builder for chaining.
         */
        public Builder setStart(int value) {
          start_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * optional int32 start = 1 [json_name = "start"];
         * @return This builder for chaining.
         */
        public Builder clearStart() {
          bitField0_ = (bitField0_ & ~0x00000001);
          start_ = 0;
          onChanged();
          return this;
        }
        private int end_ ;
        /**
         * optional int32 end = 2 [json_name = "end"];
         * @return Whether the end field is set.
         */
        @java.lang.Override
        public boolean hasEnd() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * optional int32 end = 2 [json_name = "end"];
         * @return The end.
         */
        @java.lang.Override
        public int getEnd() {
          return end_;
        }
        /**
         * optional int32 end = 2 [json_name = "end"];
         * @param value The end to set.
         * @return This builder for chaining.
         */
        public Builder setEnd(int value) {
          end_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * optional int32 end = 2 [json_name = "end"];
         * @return This builder for chaining.
         */
        public Builder clearEnd() {
          bitField0_ = (bitField0_ & ~0x00000002);
          end_ = 0;
          onChanged();
          return this;
        }
        private com.google.protobuf.DescriptorProtos.ExtensionRangeOptions options_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder, com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder> optionsBuilder_;
        /**
         * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
         * @return Whether the options field is set.
         */
        public boolean hasOptions() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
         * @return The options.
         */
        public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions getOptions() {
          if (optionsBuilder_ == null) {
            return options_ == null ? com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance() : options_;
          } else {
            return optionsBuilder_.getMessage();
          }
        }
        /**
         * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
         */
        public Builder setOptions(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions value) {
          if (optionsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            options_ = value;
          } else {
            optionsBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
         */
        public Builder setOptions(
            com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder builderForValue) {
          if (optionsBuilder_ == null) {
            options_ = builderForValue.build();
          } else {
            optionsBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
         */
        public Builder mergeOptions(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions value) {
          if (optionsBuilder_ == null) {
            if (((bitField0_ & 0x00000004) != 0) &&
              options_ != null &&
              options_ != com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance()) {
              getOptionsBuilder().mergeFrom(value);
            } else {
              options_ = value;
            }
          } else {
            optionsBuilder_.mergeFrom(value);
          }
          if (options_ != null) {
            bitField0_ |= 0x00000004;
            onChanged();
          }
          return this;
        }
        /**
         * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
         */
        public Builder clearOptions() {
          bitField0_ = (bitField0_ & ~0x00000004);
          options_ = null;
          if (optionsBuilder_ != null) {
            optionsBuilder_.dispose();
            optionsBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
         */
        public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder getOptionsBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getOptionsFieldBuilder().getBuilder();
        }
        /**
         * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
         */
        public com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder getOptionsOrBuilder() {
          if (optionsBuilder_ != null) {
            return optionsBuilder_.getMessageOrBuilder();
          } else {
            return options_ == null ?
                com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance() : options_;
          }
        }
        /**
         * optional .google.protobuf.ExtensionRangeOptions options = 3 [json_name = "options"];
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder, com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder> 
            getOptionsFieldBuilder() {
          if (optionsBuilder_ == null) {
            optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder, com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder>(
                    getOptions(),
                    getParentForChildren(),
                    isClean());
            options_ = null;
          }
          return optionsBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
        // @@protoc_insertion_point(builder_scope:google.protobuf.DescriptorProto.ExtensionRange)
      }
      // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto.ExtensionRange)
      private static final com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange();
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
      @java.lang.Deprecated public static final com.google.protobuf.Parser
          PARSER = new com.google.protobuf.AbstractParser() {
        @java.lang.Override
        public ExtensionRange parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
      public static com.google.protobuf.Parser parser() {
        return PARSER;
      }
      @java.lang.Override
      public com.google.protobuf.Parser getParserForType() {
        return PARSER;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }
    public interface ReservedRangeOrBuilder extends
        // @@protoc_insertion_point(interface_extends:google.protobuf.DescriptorProto.ReservedRange)
        com.google.protobuf.MessageOrBuilder {
      /**
       * optional int32 start = 1 [json_name = "start"];
       * @return Whether the start field is set.
       */
      boolean hasStart();
      /**
       * optional int32 start = 1 [json_name = "start"];
       * @return The start.
       */
      int getStart();
      /**
       * optional int32 end = 2 [json_name = "end"];
       * @return Whether the end field is set.
       */
      boolean hasEnd();
      /**
       * optional int32 end = 2 [json_name = "end"];
       * @return The end.
       */
      int getEnd();
    }
    /**
     * Protobuf type {@code google.protobuf.DescriptorProto.ReservedRange}
     */
    public static final class ReservedRange extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:google.protobuf.DescriptorProto.ReservedRange)
        ReservedRangeOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ReservedRange.newBuilder() to construct.
      private ReservedRange(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
        super(builder);
      }
      private ReservedRange() {
      }
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new ReservedRange();
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ReservedRange_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ReservedRange_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.class, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder.class);
      }
      private int bitField0_;
      public static final int START_FIELD_NUMBER = 1;
      private int start_ = 0;
      /**
       * optional int32 start = 1 [json_name = "start"];
       * @return Whether the start field is set.
       */
      @java.lang.Override
      public boolean hasStart() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional int32 start = 1 [json_name = "start"];
       * @return The start.
       */
      @java.lang.Override
      public int getStart() {
        return start_;
      }
      public static final int END_FIELD_NUMBER = 2;
      private int end_ = 0;
      /**
       * optional int32 end = 2 [json_name = "end"];
       * @return Whether the end field is set.
       */
      @java.lang.Override
      public boolean hasEnd() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * optional int32 end = 2 [json_name = "end"];
       * @return The end.
       */
      @java.lang.Override
      public int getEnd() {
        return end_;
      }
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
        memoizedIsInitialized = 1;
        return true;
      }
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, start_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeInt32(2, end_);
        }
        getUnknownFields().writeTo(output);
      }
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, start_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, end_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange)) {
          return super.equals(obj);
        }
        com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange other = (com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange) obj;
        if (hasStart() != other.hasStart()) return false;
        if (hasStart()) {
          if (getStart()
              != other.getStart()) return false;
        }
        if (hasEnd() != other.hasEnd()) return false;
        if (hasEnd()) {
          if (getEnd()
              != other.getEnd()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStart()) {
          hash = (37 * hash) + START_FIELD_NUMBER;
          hash = (53 * hash) + getStart();
        }
        if (hasEnd()) {
          hash = (37 * hash) + END_FIELD_NUMBER;
          hash = (53 * hash) + getEnd();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code google.protobuf.DescriptorProto.ReservedRange}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder implements
          // @@protoc_insertion_point(builder_implements:google.protobuf.DescriptorProto.ReservedRange)
          com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ReservedRange_descriptor;
        }
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ReservedRange_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.class, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder.class);
        }
        // Construct using com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.newBuilder()
        private Builder() {
        }
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          start_ = 0;
          end_ = 0;
          return this;
        }
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ReservedRange_descriptor;
        }
        @java.lang.Override
        public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange getDefaultInstanceForType() {
          return com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.getDefaultInstance();
        }
        @java.lang.Override
        public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange build() {
          com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        @java.lang.Override
        public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange buildPartial() {
          com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange result = new com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
        private void buildPartial0(com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.start_ = start_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.end_ = end_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ |= to_bitField0_;
        }
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange) {
            return mergeFrom((com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        public Builder mergeFrom(com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange other) {
          if (other == com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.getDefaultInstance()) return this;
          if (other.hasStart()) {
            setStart(other.getStart());
          }
          if (other.hasEnd()) {
            setEnd(other.getEnd());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  start_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  end_ = input.readInt32();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
        private int start_ ;
        /**
         * optional int32 start = 1 [json_name = "start"];
         * @return Whether the start field is set.
         */
        @java.lang.Override
        public boolean hasStart() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * optional int32 start = 1 [json_name = "start"];
         * @return The start.
         */
        @java.lang.Override
        public int getStart() {
          return start_;
        }
        /**
         * optional int32 start = 1 [json_name = "start"];
         * @param value The start to set.
         * @return This builder for chaining.
         */
        public Builder setStart(int value) {
          start_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * optional int32 start = 1 [json_name = "start"];
         * @return This builder for chaining.
         */
        public Builder clearStart() {
          bitField0_ = (bitField0_ & ~0x00000001);
          start_ = 0;
          onChanged();
          return this;
        }
        private int end_ ;
        /**
         * optional int32 end = 2 [json_name = "end"];
         * @return Whether the end field is set.
         */
        @java.lang.Override
        public boolean hasEnd() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * optional int32 end = 2 [json_name = "end"];
         * @return The end.
         */
        @java.lang.Override
        public int getEnd() {
          return end_;
        }
        /**
         * optional int32 end = 2 [json_name = "end"];
         * @param value The end to set.
         * @return This builder for chaining.
         */
        public Builder setEnd(int value) {
          end_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * optional int32 end = 2 [json_name = "end"];
         * @return This builder for chaining.
         */
        public Builder clearEnd() {
          bitField0_ = (bitField0_ & ~0x00000002);
          end_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
        // @@protoc_insertion_point(builder_scope:google.protobuf.DescriptorProto.ReservedRange)
      }
      // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto.ReservedRange)
      private static final com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange();
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
      @java.lang.Deprecated public static final com.google.protobuf.Parser
          PARSER = new com.google.protobuf.AbstractParser() {
        @java.lang.Override
        public ReservedRange parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
      public static com.google.protobuf.Parser parser() {
        return PARSER;
      }
      @java.lang.Override
      public com.google.protobuf.Parser getParserForType() {
        return PARSER;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }
    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int FIELD_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List field_;
    /**
     * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
     */
    @java.lang.Override
    public java.util.List getFieldList() {
      return field_;
    }
    /**
     * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
        getFieldOrBuilderList() {
      return field_;
    }
    /**
     * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
     */
    @java.lang.Override
    public int getFieldCount() {
      return field_.size();
    }
    /**
     * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getField(int index) {
      return field_.get(index);
    }
    /**
     * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getFieldOrBuilder(
        int index) {
      return field_.get(index);
    }
    public static final int EXTENSION_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private java.util.List extension_;
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
     */
    @java.lang.Override
    public java.util.List getExtensionList() {
      return extension_;
    }
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
        getExtensionOrBuilderList() {
      return extension_;
    }
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
     */
    @java.lang.Override
    public int getExtensionCount() {
      return extension_.size();
    }
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
      return extension_.get(index);
    }
    /**
     * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
        int index) {
      return extension_.get(index);
    }
    public static final int NESTED_TYPE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private java.util.List nestedType_;
    /**
     * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
     */
    @java.lang.Override
    public java.util.List getNestedTypeList() {
      return nestedType_;
    }
    /**
     * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
        getNestedTypeOrBuilderList() {
      return nestedType_;
    }
    /**
     * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
     */
    @java.lang.Override
    public int getNestedTypeCount() {
      return nestedType_.size();
    }
    /**
     * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.DescriptorProto getNestedType(int index) {
      return nestedType_.get(index);
    }
    /**
     * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getNestedTypeOrBuilder(
        int index) {
      return nestedType_.get(index);
    }
    public static final int ENUM_TYPE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List enumType_;
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
     */
    @java.lang.Override
    public java.util.List getEnumTypeList() {
      return enumType_;
    }
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
        getEnumTypeOrBuilderList() {
      return enumType_;
    }
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
     */
    @java.lang.Override
    public int getEnumTypeCount() {
      return enumType_.size();
    }
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
      return enumType_.get(index);
    }
    /**
     * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
        int index) {
      return enumType_.get(index);
    }
    public static final int EXTENSION_RANGE_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private java.util.List extensionRange_;
    /**
     * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
     */
    @java.lang.Override
    public java.util.List getExtensionRangeList() {
      return extensionRange_;
    }
    /**
     * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> 
        getExtensionRangeOrBuilderList() {
      return extensionRange_;
    }
    /**
     * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
     */
    @java.lang.Override
    public int getExtensionRangeCount() {
      return extensionRange_.size();
    }
    /**
     * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getExtensionRange(int index) {
      return extensionRange_.get(index);
    }
    /**
     * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder getExtensionRangeOrBuilder(
        int index) {
      return extensionRange_.get(index);
    }
    public static final int ONEOF_DECL_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private java.util.List oneofDecl_;
    /**
     * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
     */
    @java.lang.Override
    public java.util.List getOneofDeclList() {
      return oneofDecl_;
    }
    /**
     * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> 
        getOneofDeclOrBuilderList() {
      return oneofDecl_;
    }
    /**
     * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
     */
    @java.lang.Override
    public int getOneofDeclCount() {
      return oneofDecl_.size();
    }
    /**
     * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getOneofDecl(int index) {
      return oneofDecl_.get(index);
    }
    /**
     * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder getOneofDeclOrBuilder(
        int index) {
      return oneofDecl_.get(index);
    }
    public static final int OPTIONS_FIELD_NUMBER = 7;
    private com.google.protobuf.DescriptorProtos.MessageOptions options_;
    /**
     * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
     * @return Whether the options field is set.
     */
    @java.lang.Override
    public boolean hasOptions() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
     * @return The options.
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.MessageOptions getOptions() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance() : options_;
    }
    /**
     * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder getOptionsOrBuilder() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance() : options_;
    }
    public static final int RESERVED_RANGE_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private java.util.List reservedRange_;
    /**
     * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
     */
    @java.lang.Override
    public java.util.List getReservedRangeList() {
      return reservedRange_;
    }
    /**
     * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder> 
        getReservedRangeOrBuilderList() {
      return reservedRange_;
    }
    /**
     * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
     */
    @java.lang.Override
    public int getReservedRangeCount() {
      return reservedRange_.size();
    }
    /**
     * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange getReservedRange(int index) {
      return reservedRange_.get(index);
    }
    /**
     * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder getReservedRangeOrBuilder(
        int index) {
      return reservedRange_.get(index);
    }
    public static final int RESERVED_NAME_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList reservedName_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * repeated string reserved_name = 10 [json_name = "reservedName"];
     * @return A list containing the reservedName.
     */
    public com.google.protobuf.ProtocolStringList
        getReservedNameList() {
      return reservedName_;
    }
    /**
     * repeated string reserved_name = 10 [json_name = "reservedName"];
     * @return The count of reservedName.
     */
    public int getReservedNameCount() {
      return reservedName_.size();
    }
    /**
     * repeated string reserved_name = 10 [json_name = "reservedName"];
     * @param index The index of the element to return.
     * @return The reservedName at the given index.
     */
    public java.lang.String getReservedName(int index) {
      return reservedName_.get(index);
    }
    /**
     * repeated string reserved_name = 10 [json_name = "reservedName"];
     * @param index The index of the value to return.
     * @return The bytes of the reservedName at the given index.
     */
    public com.google.protobuf.ByteString
        getReservedNameBytes(int index) {
      return reservedName_.getByteString(index);
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      for (int i = 0; i < getFieldCount(); i++) {
        if (!getField(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getExtensionCount(); i++) {
        if (!getExtension(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getNestedTypeCount(); i++) {
        if (!getNestedType(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getEnumTypeCount(); i++) {
        if (!getEnumType(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getExtensionRangeCount(); i++) {
        if (!getExtensionRange(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getOneofDeclCount(); i++) {
        if (!getOneofDecl(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasOptions()) {
        if (!getOptions().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      for (int i = 0; i < field_.size(); i++) {
        output.writeMessage(2, field_.get(i));
      }
      for (int i = 0; i < nestedType_.size(); i++) {
        output.writeMessage(3, nestedType_.get(i));
      }
      for (int i = 0; i < enumType_.size(); i++) {
        output.writeMessage(4, enumType_.get(i));
      }
      for (int i = 0; i < extensionRange_.size(); i++) {
        output.writeMessage(5, extensionRange_.get(i));
      }
      for (int i = 0; i < extension_.size(); i++) {
        output.writeMessage(6, extension_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(7, getOptions());
      }
      for (int i = 0; i < oneofDecl_.size(); i++) {
        output.writeMessage(8, oneofDecl_.get(i));
      }
      for (int i = 0; i < reservedRange_.size(); i++) {
        output.writeMessage(9, reservedRange_.get(i));
      }
      for (int i = 0; i < reservedName_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, reservedName_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      for (int i = 0; i < field_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, field_.get(i));
      }
      for (int i = 0; i < nestedType_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, nestedType_.get(i));
      }
      for (int i = 0; i < enumType_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, enumType_.get(i));
      }
      for (int i = 0; i < extensionRange_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, extensionRange_.get(i));
      }
      for (int i = 0; i < extension_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, extension_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getOptions());
      }
      for (int i = 0; i < oneofDecl_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, oneofDecl_.get(i));
      }
      for (int i = 0; i < reservedRange_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, reservedRange_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < reservedName_.size(); i++) {
          dataSize += computeStringSizeNoTag(reservedName_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getReservedNameList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.protobuf.DescriptorProtos.DescriptorProto)) {
        return super.equals(obj);
      }
      com.google.protobuf.DescriptorProtos.DescriptorProto other = (com.google.protobuf.DescriptorProtos.DescriptorProto) obj;
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (!getFieldList()
          .equals(other.getFieldList())) return false;
      if (!getExtensionList()
          .equals(other.getExtensionList())) return false;
      if (!getNestedTypeList()
          .equals(other.getNestedTypeList())) return false;
      if (!getEnumTypeList()
          .equals(other.getEnumTypeList())) return false;
      if (!getExtensionRangeList()
          .equals(other.getExtensionRangeList())) return false;
      if (!getOneofDeclList()
          .equals(other.getOneofDeclList())) return false;
      if (hasOptions() != other.hasOptions()) return false;
      if (hasOptions()) {
        if (!getOptions()
            .equals(other.getOptions())) return false;
      }
      if (!getReservedRangeList()
          .equals(other.getReservedRangeList())) return false;
      if (!getReservedNameList()
          .equals(other.getReservedNameList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (getFieldCount() > 0) {
        hash = (37 * hash) + FIELD_FIELD_NUMBER;
        hash = (53 * hash) + getFieldList().hashCode();
      }
      if (getExtensionCount() > 0) {
        hash = (37 * hash) + EXTENSION_FIELD_NUMBER;
        hash = (53 * hash) + getExtensionList().hashCode();
      }
      if (getNestedTypeCount() > 0) {
        hash = (37 * hash) + NESTED_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getNestedTypeList().hashCode();
      }
      if (getEnumTypeCount() > 0) {
        hash = (37 * hash) + ENUM_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getEnumTypeList().hashCode();
      }
      if (getExtensionRangeCount() > 0) {
        hash = (37 * hash) + EXTENSION_RANGE_FIELD_NUMBER;
        hash = (53 * hash) + getExtensionRangeList().hashCode();
      }
      if (getOneofDeclCount() > 0) {
        hash = (37 * hash) + ONEOF_DECL_FIELD_NUMBER;
        hash = (53 * hash) + getOneofDeclList().hashCode();
      }
      if (hasOptions()) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getOptions().hashCode();
      }
      if (getReservedRangeCount() > 0) {
        hash = (37 * hash) + RESERVED_RANGE_FIELD_NUMBER;
        hash = (53 * hash) + getReservedRangeList().hashCode();
      }
      if (getReservedNameCount() > 0) {
        hash = (37 * hash) + RESERVED_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getReservedNameList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.DescriptorProto prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.DescriptorProto}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:google.protobuf.DescriptorProto)
        com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.DescriptorProto.class, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder.class);
      }
      // Construct using com.google.protobuf.DescriptorProtos.DescriptorProto.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getFieldFieldBuilder();
          getExtensionFieldBuilder();
          getNestedTypeFieldBuilder();
          getEnumTypeFieldBuilder();
          getExtensionRangeFieldBuilder();
          getOneofDeclFieldBuilder();
          getOptionsFieldBuilder();
          getReservedRangeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        if (fieldBuilder_ == null) {
          field_ = java.util.Collections.emptyList();
        } else {
          field_ = null;
          fieldBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (extensionBuilder_ == null) {
          extension_ = java.util.Collections.emptyList();
        } else {
          extension_ = null;
          extensionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (nestedTypeBuilder_ == null) {
          nestedType_ = java.util.Collections.emptyList();
        } else {
          nestedType_ = null;
          nestedTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (enumTypeBuilder_ == null) {
          enumType_ = java.util.Collections.emptyList();
        } else {
          enumType_ = null;
          enumTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        if (extensionRangeBuilder_ == null) {
          extensionRange_ = java.util.Collections.emptyList();
        } else {
          extensionRange_ = null;
          extensionRangeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        if (oneofDeclBuilder_ == null) {
          oneofDecl_ = java.util.Collections.emptyList();
        } else {
          oneofDecl_ = null;
          oneofDeclBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        if (reservedRangeBuilder_ == null) {
          reservedRange_ = java.util.Collections.emptyList();
        } else {
          reservedRange_ = null;
          reservedRangeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        reservedName_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_descriptor;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.DescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance();
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.DescriptorProto build() {
        com.google.protobuf.DescriptorProtos.DescriptorProto result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.DescriptorProto buildPartial() {
        com.google.protobuf.DescriptorProtos.DescriptorProto result = new com.google.protobuf.DescriptorProtos.DescriptorProto(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }
      private void buildPartialRepeatedFields(com.google.protobuf.DescriptorProtos.DescriptorProto result) {
        if (fieldBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            field_ = java.util.Collections.unmodifiableList(field_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.field_ = field_;
        } else {
          result.field_ = fieldBuilder_.build();
        }
        if (extensionBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            extension_ = java.util.Collections.unmodifiableList(extension_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.extension_ = extension_;
        } else {
          result.extension_ = extensionBuilder_.build();
        }
        if (nestedTypeBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            nestedType_ = java.util.Collections.unmodifiableList(nestedType_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.nestedType_ = nestedType_;
        } else {
          result.nestedType_ = nestedTypeBuilder_.build();
        }
        if (enumTypeBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0)) {
            enumType_ = java.util.Collections.unmodifiableList(enumType_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.enumType_ = enumType_;
        } else {
          result.enumType_ = enumTypeBuilder_.build();
        }
        if (extensionRangeBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0)) {
            extensionRange_ = java.util.Collections.unmodifiableList(extensionRange_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.extensionRange_ = extensionRange_;
        } else {
          result.extensionRange_ = extensionRangeBuilder_.build();
        }
        if (oneofDeclBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            oneofDecl_ = java.util.Collections.unmodifiableList(oneofDecl_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.oneofDecl_ = oneofDecl_;
        } else {
          result.oneofDecl_ = oneofDeclBuilder_.build();
        }
        if (reservedRangeBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0)) {
            reservedRange_ = java.util.Collections.unmodifiableList(reservedRange_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.reservedRange_ = reservedRange_;
        } else {
          result.reservedRange_ = reservedRangeBuilder_.build();
        }
      }
      private void buildPartial0(com.google.protobuf.DescriptorProtos.DescriptorProto result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.options_ = optionsBuilder_ == null
              ? options_
              : optionsBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          reservedName_.makeImmutable();
          result.reservedName_ = reservedName_;
        }
        result.bitField0_ |= to_bitField0_;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.DescriptorProto) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.DescriptorProto)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.DescriptorProto other) {
        if (other == com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (fieldBuilder_ == null) {
          if (!other.field_.isEmpty()) {
            if (field_.isEmpty()) {
              field_ = other.field_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureFieldIsMutable();
              field_.addAll(other.field_);
            }
            onChanged();
          }
        } else {
          if (!other.field_.isEmpty()) {
            if (fieldBuilder_.isEmpty()) {
              fieldBuilder_.dispose();
              fieldBuilder_ = null;
              field_ = other.field_;
              bitField0_ = (bitField0_ & ~0x00000002);
              fieldBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFieldFieldBuilder() : null;
            } else {
              fieldBuilder_.addAllMessages(other.field_);
            }
          }
        }
        if (extensionBuilder_ == null) {
          if (!other.extension_.isEmpty()) {
            if (extension_.isEmpty()) {
              extension_ = other.extension_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureExtensionIsMutable();
              extension_.addAll(other.extension_);
            }
            onChanged();
          }
        } else {
          if (!other.extension_.isEmpty()) {
            if (extensionBuilder_.isEmpty()) {
              extensionBuilder_.dispose();
              extensionBuilder_ = null;
              extension_ = other.extension_;
              bitField0_ = (bitField0_ & ~0x00000004);
              extensionBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getExtensionFieldBuilder() : null;
            } else {
              extensionBuilder_.addAllMessages(other.extension_);
            }
          }
        }
        if (nestedTypeBuilder_ == null) {
          if (!other.nestedType_.isEmpty()) {
            if (nestedType_.isEmpty()) {
              nestedType_ = other.nestedType_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureNestedTypeIsMutable();
              nestedType_.addAll(other.nestedType_);
            }
            onChanged();
          }
        } else {
          if (!other.nestedType_.isEmpty()) {
            if (nestedTypeBuilder_.isEmpty()) {
              nestedTypeBuilder_.dispose();
              nestedTypeBuilder_ = null;
              nestedType_ = other.nestedType_;
              bitField0_ = (bitField0_ & ~0x00000008);
              nestedTypeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getNestedTypeFieldBuilder() : null;
            } else {
              nestedTypeBuilder_.addAllMessages(other.nestedType_);
            }
          }
        }
        if (enumTypeBuilder_ == null) {
          if (!other.enumType_.isEmpty()) {
            if (enumType_.isEmpty()) {
              enumType_ = other.enumType_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureEnumTypeIsMutable();
              enumType_.addAll(other.enumType_);
            }
            onChanged();
          }
        } else {
          if (!other.enumType_.isEmpty()) {
            if (enumTypeBuilder_.isEmpty()) {
              enumTypeBuilder_.dispose();
              enumTypeBuilder_ = null;
              enumType_ = other.enumType_;
              bitField0_ = (bitField0_ & ~0x00000010);
              enumTypeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEnumTypeFieldBuilder() : null;
            } else {
              enumTypeBuilder_.addAllMessages(other.enumType_);
            }
          }
        }
        if (extensionRangeBuilder_ == null) {
          if (!other.extensionRange_.isEmpty()) {
            if (extensionRange_.isEmpty()) {
              extensionRange_ = other.extensionRange_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureExtensionRangeIsMutable();
              extensionRange_.addAll(other.extensionRange_);
            }
            onChanged();
          }
        } else {
          if (!other.extensionRange_.isEmpty()) {
            if (extensionRangeBuilder_.isEmpty()) {
              extensionRangeBuilder_.dispose();
              extensionRangeBuilder_ = null;
              extensionRange_ = other.extensionRange_;
              bitField0_ = (bitField0_ & ~0x00000020);
              extensionRangeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getExtensionRangeFieldBuilder() : null;
            } else {
              extensionRangeBuilder_.addAllMessages(other.extensionRange_);
            }
          }
        }
        if (oneofDeclBuilder_ == null) {
          if (!other.oneofDecl_.isEmpty()) {
            if (oneofDecl_.isEmpty()) {
              oneofDecl_ = other.oneofDecl_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureOneofDeclIsMutable();
              oneofDecl_.addAll(other.oneofDecl_);
            }
            onChanged();
          }
        } else {
          if (!other.oneofDecl_.isEmpty()) {
            if (oneofDeclBuilder_.isEmpty()) {
              oneofDeclBuilder_.dispose();
              oneofDeclBuilder_ = null;
              oneofDecl_ = other.oneofDecl_;
              bitField0_ = (bitField0_ & ~0x00000040);
              oneofDeclBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getOneofDeclFieldBuilder() : null;
            } else {
              oneofDeclBuilder_.addAllMessages(other.oneofDecl_);
            }
          }
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        if (reservedRangeBuilder_ == null) {
          if (!other.reservedRange_.isEmpty()) {
            if (reservedRange_.isEmpty()) {
              reservedRange_ = other.reservedRange_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureReservedRangeIsMutable();
              reservedRange_.addAll(other.reservedRange_);
            }
            onChanged();
          }
        } else {
          if (!other.reservedRange_.isEmpty()) {
            if (reservedRangeBuilder_.isEmpty()) {
              reservedRangeBuilder_.dispose();
              reservedRangeBuilder_ = null;
              reservedRange_ = other.reservedRange_;
              bitField0_ = (bitField0_ & ~0x00000100);
              reservedRangeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getReservedRangeFieldBuilder() : null;
            } else {
              reservedRangeBuilder_.addAllMessages(other.reservedRange_);
            }
          }
        }
        if (!other.reservedName_.isEmpty()) {
          if (reservedName_.isEmpty()) {
            reservedName_ = other.reservedName_;
            bitField0_ |= 0x00000200;
          } else {
            ensureReservedNameIsMutable();
            reservedName_.addAll(other.reservedName_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getFieldCount(); i++) {
          if (!getField(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getExtensionCount(); i++) {
          if (!getExtension(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getNestedTypeCount(); i++) {
          if (!getNestedType(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getEnumTypeCount(); i++) {
          if (!getEnumType(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getExtensionRangeCount(); i++) {
          if (!getExtensionRange(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getOneofDeclCount(); i++) {
          if (!getOneofDecl(i).isInitialized()) {
            return false;
          }
        }
        if (hasOptions()) {
          if (!getOptions().isInitialized()) {
            return false;
          }
        }
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.DescriptorProtos.FieldDescriptorProto m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.FieldDescriptorProto.PARSER,
                        extensionRegistry);
                if (fieldBuilder_ == null) {
                  ensureFieldIsMutable();
                  field_.add(m);
                } else {
                  fieldBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                com.google.protobuf.DescriptorProtos.DescriptorProto m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.DescriptorProto.PARSER,
                        extensionRegistry);
                if (nestedTypeBuilder_ == null) {
                  ensureNestedTypeIsMutable();
                  nestedType_.add(m);
                } else {
                  nestedTypeBuilder_.addMessage(m);
                }
                break;
              } // case 26
              case 34: {
                com.google.protobuf.DescriptorProtos.EnumDescriptorProto m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.EnumDescriptorProto.PARSER,
                        extensionRegistry);
                if (enumTypeBuilder_ == null) {
                  ensureEnumTypeIsMutable();
                  enumType_.add(m);
                } else {
                  enumTypeBuilder_.addMessage(m);
                }
                break;
              } // case 34
              case 42: {
                com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.PARSER,
                        extensionRegistry);
                if (extensionRangeBuilder_ == null) {
                  ensureExtensionRangeIsMutable();
                  extensionRange_.add(m);
                } else {
                  extensionRangeBuilder_.addMessage(m);
                }
                break;
              } // case 42
              case 50: {
                com.google.protobuf.DescriptorProtos.FieldDescriptorProto m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.FieldDescriptorProto.PARSER,
                        extensionRegistry);
                if (extensionBuilder_ == null) {
                  ensureExtensionIsMutable();
                  extension_.add(m);
                } else {
                  extensionBuilder_.addMessage(m);
                }
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 58
              case 66: {
                com.google.protobuf.DescriptorProtos.OneofDescriptorProto m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.OneofDescriptorProto.PARSER,
                        extensionRegistry);
                if (oneofDeclBuilder_ == null) {
                  ensureOneofDeclIsMutable();
                  oneofDecl_.add(m);
                } else {
                  oneofDeclBuilder_.addMessage(m);
                }
                break;
              } // case 66
              case 74: {
                com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.PARSER,
                        extensionRegistry);
                if (reservedRangeBuilder_ == null) {
                  ensureReservedRangeIsMutable();
                  reservedRange_.add(m);
                } else {
                  reservedRangeBuilder_.addMessage(m);
                }
                break;
              } // case 74
              case 82: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureReservedNameIsMutable();
                reservedName_.add(bs);
                break;
              } // case 82
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private java.lang.Object name_ = "";
      /**
       * optional string name = 1 [json_name = "name"];
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      private java.util.List field_ =
        java.util.Collections.emptyList();
      private void ensureFieldIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          field_ = new java.util.ArrayList(field_);
          bitField0_ |= 0x00000002;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> fieldBuilder_;
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public java.util.List getFieldList() {
        if (fieldBuilder_ == null) {
          return java.util.Collections.unmodifiableList(field_);
        } else {
          return fieldBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public int getFieldCount() {
        if (fieldBuilder_ == null) {
          return field_.size();
        } else {
          return fieldBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getField(int index) {
        if (fieldBuilder_ == null) {
          return field_.get(index);
        } else {
          return fieldBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public Builder setField(
          int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (fieldBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldIsMutable();
          field_.set(index, value);
          onChanged();
        } else {
          fieldBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public Builder setField(
          int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        if (fieldBuilder_ == null) {
          ensureFieldIsMutable();
          field_.set(index, builderForValue.build());
          onChanged();
        } else {
          fieldBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public Builder addField(com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (fieldBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldIsMutable();
          field_.add(value);
          onChanged();
        } else {
          fieldBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public Builder addField(
          int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (fieldBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldIsMutable();
          field_.add(index, value);
          onChanged();
        } else {
          fieldBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public Builder addField(
          com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        if (fieldBuilder_ == null) {
          ensureFieldIsMutable();
          field_.add(builderForValue.build());
          onChanged();
        } else {
          fieldBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public Builder addField(
          int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        if (fieldBuilder_ == null) {
          ensureFieldIsMutable();
          field_.add(index, builderForValue.build());
          onChanged();
        } else {
          fieldBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public Builder addAllField(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.FieldDescriptorProto> values) {
        if (fieldBuilder_ == null) {
          ensureFieldIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, field_);
          onChanged();
        } else {
          fieldBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public Builder clearField() {
        if (fieldBuilder_ == null) {
          field_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          fieldBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public Builder removeField(int index) {
        if (fieldBuilder_ == null) {
          ensureFieldIsMutable();
          field_.remove(index);
          onChanged();
        } else {
          fieldBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder getFieldBuilder(
          int index) {
        return getFieldFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getFieldOrBuilder(
          int index) {
        if (fieldBuilder_ == null) {
          return field_.get(index);  } else {
          return fieldBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
           getFieldOrBuilderList() {
        if (fieldBuilder_ != null) {
          return fieldBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(field_);
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder addFieldBuilder() {
        return getFieldFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder addFieldBuilder(
          int index) {
        return getFieldFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto field = 2 [json_name = "field"];
       */
      public java.util.List 
           getFieldBuilderList() {
        return getFieldFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
          getFieldFieldBuilder() {
        if (fieldBuilder_ == null) {
          fieldBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>(
                  field_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          field_ = null;
        }
        return fieldBuilder_;
      }
      private java.util.List extension_ =
        java.util.Collections.emptyList();
      private void ensureExtensionIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          extension_ = new java.util.ArrayList(extension_);
          bitField0_ |= 0x00000004;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> extensionBuilder_;
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public java.util.List getExtensionList() {
        if (extensionBuilder_ == null) {
          return java.util.Collections.unmodifiableList(extension_);
        } else {
          return extensionBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public int getExtensionCount() {
        if (extensionBuilder_ == null) {
          return extension_.size();
        } else {
          return extensionBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
        if (extensionBuilder_ == null) {
          return extension_.get(index);
        } else {
          return extensionBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public Builder setExtension(
          int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (extensionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExtensionIsMutable();
          extension_.set(index, value);
          onChanged();
        } else {
          extensionBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public Builder setExtension(
          int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        if (extensionBuilder_ == null) {
          ensureExtensionIsMutable();
          extension_.set(index, builderForValue.build());
          onChanged();
        } else {
          extensionBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public Builder addExtension(com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (extensionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExtensionIsMutable();
          extension_.add(value);
          onChanged();
        } else {
          extensionBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public Builder addExtension(
          int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (extensionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExtensionIsMutable();
          extension_.add(index, value);
          onChanged();
        } else {
          extensionBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public Builder addExtension(
          com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        if (extensionBuilder_ == null) {
          ensureExtensionIsMutable();
          extension_.add(builderForValue.build());
          onChanged();
        } else {
          extensionBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public Builder addExtension(
          int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        if (extensionBuilder_ == null) {
          ensureExtensionIsMutable();
          extension_.add(index, builderForValue.build());
          onChanged();
        } else {
          extensionBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public Builder addAllExtension(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.FieldDescriptorProto> values) {
        if (extensionBuilder_ == null) {
          ensureExtensionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, extension_);
          onChanged();
        } else {
          extensionBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public Builder clearExtension() {
        if (extensionBuilder_ == null) {
          extension_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          extensionBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public Builder removeExtension(int index) {
        if (extensionBuilder_ == null) {
          ensureExtensionIsMutable();
          extension_.remove(index);
          onChanged();
        } else {
          extensionBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder getExtensionBuilder(
          int index) {
        return getExtensionFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder(
          int index) {
        if (extensionBuilder_ == null) {
          return extension_.get(index);  } else {
          return extensionBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
           getExtensionOrBuilderList() {
        if (extensionBuilder_ != null) {
          return extensionBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(extension_);
        }
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder addExtensionBuilder() {
        return getExtensionFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder addExtensionBuilder(
          int index) {
        return getExtensionFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.FieldDescriptorProto extension = 6 [json_name = "extension"];
       */
      public java.util.List 
           getExtensionBuilderList() {
        return getExtensionFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
          getExtensionFieldBuilder() {
        if (extensionBuilder_ == null) {
          extensionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>(
                  extension_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          extension_ = null;
        }
        return extensionBuilder_;
      }
      private java.util.List nestedType_ =
        java.util.Collections.emptyList();
      private void ensureNestedTypeIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          nestedType_ = new java.util.ArrayList(nestedType_);
          bitField0_ |= 0x00000008;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> nestedTypeBuilder_;
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public java.util.List getNestedTypeList() {
        if (nestedTypeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(nestedType_);
        } else {
          return nestedTypeBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public int getNestedTypeCount() {
        if (nestedTypeBuilder_ == null) {
          return nestedType_.size();
        } else {
          return nestedTypeBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto getNestedType(int index) {
        if (nestedTypeBuilder_ == null) {
          return nestedType_.get(index);
        } else {
          return nestedTypeBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public Builder setNestedType(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto value) {
        if (nestedTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNestedTypeIsMutable();
          nestedType_.set(index, value);
          onChanged();
        } else {
          nestedTypeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public Builder setNestedType(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        if (nestedTypeBuilder_ == null) {
          ensureNestedTypeIsMutable();
          nestedType_.set(index, builderForValue.build());
          onChanged();
        } else {
          nestedTypeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public Builder addNestedType(com.google.protobuf.DescriptorProtos.DescriptorProto value) {
        if (nestedTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNestedTypeIsMutable();
          nestedType_.add(value);
          onChanged();
        } else {
          nestedTypeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public Builder addNestedType(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto value) {
        if (nestedTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNestedTypeIsMutable();
          nestedType_.add(index, value);
          onChanged();
        } else {
          nestedTypeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public Builder addNestedType(
          com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        if (nestedTypeBuilder_ == null) {
          ensureNestedTypeIsMutable();
          nestedType_.add(builderForValue.build());
          onChanged();
        } else {
          nestedTypeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public Builder addNestedType(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        if (nestedTypeBuilder_ == null) {
          ensureNestedTypeIsMutable();
          nestedType_.add(index, builderForValue.build());
          onChanged();
        } else {
          nestedTypeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public Builder addAllNestedType(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.DescriptorProto> values) {
        if (nestedTypeBuilder_ == null) {
          ensureNestedTypeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, nestedType_);
          onChanged();
        } else {
          nestedTypeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public Builder clearNestedType() {
        if (nestedTypeBuilder_ == null) {
          nestedType_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          nestedTypeBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public Builder removeNestedType(int index) {
        if (nestedTypeBuilder_ == null) {
          ensureNestedTypeIsMutable();
          nestedType_.remove(index);
          onChanged();
        } else {
          nestedTypeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder getNestedTypeBuilder(
          int index) {
        return getNestedTypeFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getNestedTypeOrBuilder(
          int index) {
        if (nestedTypeBuilder_ == null) {
          return nestedType_.get(index);  } else {
          return nestedTypeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
           getNestedTypeOrBuilderList() {
        if (nestedTypeBuilder_ != null) {
          return nestedTypeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(nestedType_);
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder addNestedTypeBuilder() {
        return getNestedTypeFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder addNestedTypeBuilder(
          int index) {
        return getNestedTypeFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.DescriptorProto nested_type = 3 [json_name = "nestedType"];
       */
      public java.util.List 
           getNestedTypeBuilderList() {
        return getNestedTypeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
          getNestedTypeFieldBuilder() {
        if (nestedTypeBuilder_ == null) {
          nestedTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>(
                  nestedType_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          nestedType_ = null;
        }
        return nestedTypeBuilder_;
      }
      private java.util.List enumType_ =
        java.util.Collections.emptyList();
      private void ensureEnumTypeIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          enumType_ = new java.util.ArrayList(enumType_);
          bitField0_ |= 0x00000010;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> enumTypeBuilder_;
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public java.util.List getEnumTypeList() {
        if (enumTypeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(enumType_);
        } else {
          return enumTypeBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public int getEnumTypeCount() {
        if (enumTypeBuilder_ == null) {
          return enumType_.size();
        } else {
          return enumTypeBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
        if (enumTypeBuilder_ == null) {
          return enumType_.get(index);
        } else {
          return enumTypeBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public Builder setEnumType(
          int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) {
        if (enumTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnumTypeIsMutable();
          enumType_.set(index, value);
          onChanged();
        } else {
          enumTypeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public Builder setEnumType(
          int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        if (enumTypeBuilder_ == null) {
          ensureEnumTypeIsMutable();
          enumType_.set(index, builderForValue.build());
          onChanged();
        } else {
          enumTypeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public Builder addEnumType(com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) {
        if (enumTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnumTypeIsMutable();
          enumType_.add(value);
          onChanged();
        } else {
          enumTypeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public Builder addEnumType(
          int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) {
        if (enumTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnumTypeIsMutable();
          enumType_.add(index, value);
          onChanged();
        } else {
          enumTypeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public Builder addEnumType(
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        if (enumTypeBuilder_ == null) {
          ensureEnumTypeIsMutable();
          enumType_.add(builderForValue.build());
          onChanged();
        } else {
          enumTypeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public Builder addEnumType(
          int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        if (enumTypeBuilder_ == null) {
          ensureEnumTypeIsMutable();
          enumType_.add(index, builderForValue.build());
          onChanged();
        } else {
          enumTypeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public Builder addAllEnumType(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.EnumDescriptorProto> values) {
        if (enumTypeBuilder_ == null) {
          ensureEnumTypeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, enumType_);
          onChanged();
        } else {
          enumTypeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public Builder clearEnumType() {
        if (enumTypeBuilder_ == null) {
          enumType_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          enumTypeBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public Builder removeEnumType(int index) {
        if (enumTypeBuilder_ == null) {
          ensureEnumTypeIsMutable();
          enumType_.remove(index);
          onChanged();
        } else {
          enumTypeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder getEnumTypeBuilder(
          int index) {
        return getEnumTypeFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder(
          int index) {
        if (enumTypeBuilder_ == null) {
          return enumType_.get(index);  } else {
          return enumTypeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
           getEnumTypeOrBuilderList() {
        if (enumTypeBuilder_ != null) {
          return enumTypeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(enumType_);
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder addEnumTypeBuilder() {
        return getEnumTypeFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder addEnumTypeBuilder(
          int index) {
        return getEnumTypeFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto enum_type = 4 [json_name = "enumType"];
       */
      public java.util.List 
           getEnumTypeBuilderList() {
        return getEnumTypeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
          getEnumTypeFieldBuilder() {
        if (enumTypeBuilder_ == null) {
          enumTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>(
                  enumType_,
                  ((bitField0_ & 0x00000010) != 0),
                  getParentForChildren(),
                  isClean());
          enumType_ = null;
        }
        return enumTypeBuilder_;
      }
      private java.util.List extensionRange_ =
        java.util.Collections.emptyList();
      private void ensureExtensionRangeIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          extensionRange_ = new java.util.ArrayList(extensionRange_);
          bitField0_ |= 0x00000020;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> extensionRangeBuilder_;
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public java.util.List getExtensionRangeList() {
        if (extensionRangeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(extensionRange_);
        } else {
          return extensionRangeBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public int getExtensionRangeCount() {
        if (extensionRangeBuilder_ == null) {
          return extensionRange_.size();
        } else {
          return extensionRangeBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getExtensionRange(int index) {
        if (extensionRangeBuilder_ == null) {
          return extensionRange_.get(index);
        } else {
          return extensionRangeBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public Builder setExtensionRange(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange value) {
        if (extensionRangeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExtensionRangeIsMutable();
          extensionRange_.set(index, value);
          onChanged();
        } else {
          extensionRangeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public Builder setExtensionRange(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder builderForValue) {
        if (extensionRangeBuilder_ == null) {
          ensureExtensionRangeIsMutable();
          extensionRange_.set(index, builderForValue.build());
          onChanged();
        } else {
          extensionRangeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public Builder addExtensionRange(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange value) {
        if (extensionRangeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExtensionRangeIsMutable();
          extensionRange_.add(value);
          onChanged();
        } else {
          extensionRangeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public Builder addExtensionRange(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange value) {
        if (extensionRangeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExtensionRangeIsMutable();
          extensionRange_.add(index, value);
          onChanged();
        } else {
          extensionRangeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public Builder addExtensionRange(
          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder builderForValue) {
        if (extensionRangeBuilder_ == null) {
          ensureExtensionRangeIsMutable();
          extensionRange_.add(builderForValue.build());
          onChanged();
        } else {
          extensionRangeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public Builder addExtensionRange(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder builderForValue) {
        if (extensionRangeBuilder_ == null) {
          ensureExtensionRangeIsMutable();
          extensionRange_.add(index, builderForValue.build());
          onChanged();
        } else {
          extensionRangeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public Builder addAllExtensionRange(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> values) {
        if (extensionRangeBuilder_ == null) {
          ensureExtensionRangeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, extensionRange_);
          onChanged();
        } else {
          extensionRangeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public Builder clearExtensionRange() {
        if (extensionRangeBuilder_ == null) {
          extensionRange_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          extensionRangeBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public Builder removeExtensionRange(int index) {
        if (extensionRangeBuilder_ == null) {
          ensureExtensionRangeIsMutable();
          extensionRange_.remove(index);
          onChanged();
        } else {
          extensionRangeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder getExtensionRangeBuilder(
          int index) {
        return getExtensionRangeFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder getExtensionRangeOrBuilder(
          int index) {
        if (extensionRangeBuilder_ == null) {
          return extensionRange_.get(index);  } else {
          return extensionRangeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> 
           getExtensionRangeOrBuilderList() {
        if (extensionRangeBuilder_ != null) {
          return extensionRangeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(extensionRange_);
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder addExtensionRangeBuilder() {
        return getExtensionRangeFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder addExtensionRangeBuilder(
          int index) {
        return getExtensionRangeFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5 [json_name = "extensionRange"];
       */
      public java.util.List 
           getExtensionRangeBuilderList() {
        return getExtensionRangeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> 
          getExtensionRangeFieldBuilder() {
        if (extensionRangeBuilder_ == null) {
          extensionRangeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder>(
                  extensionRange_,
                  ((bitField0_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          extensionRange_ = null;
        }
        return extensionRangeBuilder_;
      }
      private java.util.List oneofDecl_ =
        java.util.Collections.emptyList();
      private void ensureOneofDeclIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          oneofDecl_ = new java.util.ArrayList(oneofDecl_);
          bitField0_ |= 0x00000040;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.OneofDescriptorProto, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> oneofDeclBuilder_;
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public java.util.List getOneofDeclList() {
        if (oneofDeclBuilder_ == null) {
          return java.util.Collections.unmodifiableList(oneofDecl_);
        } else {
          return oneofDeclBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public int getOneofDeclCount() {
        if (oneofDeclBuilder_ == null) {
          return oneofDecl_.size();
        } else {
          return oneofDeclBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getOneofDecl(int index) {
        if (oneofDeclBuilder_ == null) {
          return oneofDecl_.get(index);
        } else {
          return oneofDeclBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public Builder setOneofDecl(
          int index, com.google.protobuf.DescriptorProtos.OneofDescriptorProto value) {
        if (oneofDeclBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOneofDeclIsMutable();
          oneofDecl_.set(index, value);
          onChanged();
        } else {
          oneofDeclBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public Builder setOneofDecl(
          int index, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder builderForValue) {
        if (oneofDeclBuilder_ == null) {
          ensureOneofDeclIsMutable();
          oneofDecl_.set(index, builderForValue.build());
          onChanged();
        } else {
          oneofDeclBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public Builder addOneofDecl(com.google.protobuf.DescriptorProtos.OneofDescriptorProto value) {
        if (oneofDeclBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOneofDeclIsMutable();
          oneofDecl_.add(value);
          onChanged();
        } else {
          oneofDeclBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public Builder addOneofDecl(
          int index, com.google.protobuf.DescriptorProtos.OneofDescriptorProto value) {
        if (oneofDeclBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOneofDeclIsMutable();
          oneofDecl_.add(index, value);
          onChanged();
        } else {
          oneofDeclBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public Builder addOneofDecl(
          com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder builderForValue) {
        if (oneofDeclBuilder_ == null) {
          ensureOneofDeclIsMutable();
          oneofDecl_.add(builderForValue.build());
          onChanged();
        } else {
          oneofDeclBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public Builder addOneofDecl(
          int index, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder builderForValue) {
        if (oneofDeclBuilder_ == null) {
          ensureOneofDeclIsMutable();
          oneofDecl_.add(index, builderForValue.build());
          onChanged();
        } else {
          oneofDeclBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public Builder addAllOneofDecl(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.OneofDescriptorProto> values) {
        if (oneofDeclBuilder_ == null) {
          ensureOneofDeclIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, oneofDecl_);
          onChanged();
        } else {
          oneofDeclBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public Builder clearOneofDecl() {
        if (oneofDeclBuilder_ == null) {
          oneofDecl_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          oneofDeclBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public Builder removeOneofDecl(int index) {
        if (oneofDeclBuilder_ == null) {
          ensureOneofDeclIsMutable();
          oneofDecl_.remove(index);
          onChanged();
        } else {
          oneofDeclBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder getOneofDeclBuilder(
          int index) {
        return getOneofDeclFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder getOneofDeclOrBuilder(
          int index) {
        if (oneofDeclBuilder_ == null) {
          return oneofDecl_.get(index);  } else {
          return oneofDeclBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> 
           getOneofDeclOrBuilderList() {
        if (oneofDeclBuilder_ != null) {
          return oneofDeclBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(oneofDecl_);
        }
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder addOneofDeclBuilder() {
        return getOneofDeclFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.OneofDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder addOneofDeclBuilder(
          int index) {
        return getOneofDeclFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8 [json_name = "oneofDecl"];
       */
      public java.util.List 
           getOneofDeclBuilderList() {
        return getOneofDeclFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.OneofDescriptorProto, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> 
          getOneofDeclFieldBuilder() {
        if (oneofDeclBuilder_ == null) {
          oneofDeclBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.OneofDescriptorProto, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder>(
                  oneofDecl_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          oneofDecl_ = null;
        }
        return oneofDeclBuilder_;
      }
      private com.google.protobuf.DescriptorProtos.MessageOptions options_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.MessageOptions, com.google.protobuf.DescriptorProtos.MessageOptions.Builder, com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder> optionsBuilder_;
      /**
       * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
       * @return Whether the options field is set.
       */
      public boolean hasOptions() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
       * @return The options.
       */
      public com.google.protobuf.DescriptorProtos.MessageOptions getOptions() {
        if (optionsBuilder_ == null) {
          return options_ == null ? com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance() : options_;
        } else {
          return optionsBuilder_.getMessage();
        }
      }
      /**
       * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
       */
      public Builder setOptions(com.google.protobuf.DescriptorProtos.MessageOptions value) {
        if (optionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          options_ = value;
        } else {
          optionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
       */
      public Builder setOptions(
          com.google.protobuf.DescriptorProtos.MessageOptions.Builder builderForValue) {
        if (optionsBuilder_ == null) {
          options_ = builderForValue.build();
        } else {
          optionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
       */
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.MessageOptions value) {
        if (optionsBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
            options_ != null &&
            options_ != com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance()) {
            getOptionsBuilder().mergeFrom(value);
          } else {
            options_ = value;
          }
        } else {
          optionsBuilder_.mergeFrom(value);
        }
        if (options_ != null) {
          bitField0_ |= 0x00000080;
          onChanged();
        }
        return this;
      }
      /**
       * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
       */
      public Builder clearOptions() {
        bitField0_ = (bitField0_ & ~0x00000080);
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.MessageOptions.Builder getOptionsBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getOptionsFieldBuilder().getBuilder();
      }
      /**
       * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder getOptionsOrBuilder() {
        if (optionsBuilder_ != null) {
          return optionsBuilder_.getMessageOrBuilder();
        } else {
          return options_ == null ?
              com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance() : options_;
        }
      }
      /**
       * optional .google.protobuf.MessageOptions options = 7 [json_name = "options"];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.MessageOptions, com.google.protobuf.DescriptorProtos.MessageOptions.Builder, com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder> 
          getOptionsFieldBuilder() {
        if (optionsBuilder_ == null) {
          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.MessageOptions, com.google.protobuf.DescriptorProtos.MessageOptions.Builder, com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder>(
                  getOptions(),
                  getParentForChildren(),
                  isClean());
          options_ = null;
        }
        return optionsBuilder_;
      }
      private java.util.List reservedRange_ =
        java.util.Collections.emptyList();
      private void ensureReservedRangeIsMutable() {
        if (!((bitField0_ & 0x00000100) != 0)) {
          reservedRange_ = new java.util.ArrayList(reservedRange_);
          bitField0_ |= 0x00000100;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder> reservedRangeBuilder_;
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public java.util.List getReservedRangeList() {
        if (reservedRangeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(reservedRange_);
        } else {
          return reservedRangeBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public int getReservedRangeCount() {
        if (reservedRangeBuilder_ == null) {
          return reservedRange_.size();
        } else {
          return reservedRangeBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange getReservedRange(int index) {
        if (reservedRangeBuilder_ == null) {
          return reservedRange_.get(index);
        } else {
          return reservedRangeBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public Builder setReservedRange(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange value) {
        if (reservedRangeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReservedRangeIsMutable();
          reservedRange_.set(index, value);
          onChanged();
        } else {
          reservedRangeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public Builder setReservedRange(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder builderForValue) {
        if (reservedRangeBuilder_ == null) {
          ensureReservedRangeIsMutable();
          reservedRange_.set(index, builderForValue.build());
          onChanged();
        } else {
          reservedRangeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public Builder addReservedRange(com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange value) {
        if (reservedRangeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReservedRangeIsMutable();
          reservedRange_.add(value);
          onChanged();
        } else {
          reservedRangeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public Builder addReservedRange(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange value) {
        if (reservedRangeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReservedRangeIsMutable();
          reservedRange_.add(index, value);
          onChanged();
        } else {
          reservedRangeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public Builder addReservedRange(
          com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder builderForValue) {
        if (reservedRangeBuilder_ == null) {
          ensureReservedRangeIsMutable();
          reservedRange_.add(builderForValue.build());
          onChanged();
        } else {
          reservedRangeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public Builder addReservedRange(
          int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder builderForValue) {
        if (reservedRangeBuilder_ == null) {
          ensureReservedRangeIsMutable();
          reservedRange_.add(index, builderForValue.build());
          onChanged();
        } else {
          reservedRangeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public Builder addAllReservedRange(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange> values) {
        if (reservedRangeBuilder_ == null) {
          ensureReservedRangeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, reservedRange_);
          onChanged();
        } else {
          reservedRangeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public Builder clearReservedRange() {
        if (reservedRangeBuilder_ == null) {
          reservedRange_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          reservedRangeBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public Builder removeReservedRange(int index) {
        if (reservedRangeBuilder_ == null) {
          ensureReservedRangeIsMutable();
          reservedRange_.remove(index);
          onChanged();
        } else {
          reservedRangeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder getReservedRangeBuilder(
          int index) {
        return getReservedRangeFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder getReservedRangeOrBuilder(
          int index) {
        if (reservedRangeBuilder_ == null) {
          return reservedRange_.get(index);  } else {
          return reservedRangeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder> 
           getReservedRangeOrBuilderList() {
        if (reservedRangeBuilder_ != null) {
          return reservedRangeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(reservedRange_);
        }
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder addReservedRangeBuilder() {
        return getReservedRangeFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder addReservedRangeBuilder(
          int index) {
        return getReservedRangeFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9 [json_name = "reservedRange"];
       */
      public java.util.List 
           getReservedRangeBuilderList() {
        return getReservedRangeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder> 
          getReservedRangeFieldBuilder() {
        if (reservedRangeBuilder_ == null) {
          reservedRangeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ReservedRangeOrBuilder>(
                  reservedRange_,
                  ((bitField0_ & 0x00000100) != 0),
                  getParentForChildren(),
                  isClean());
          reservedRange_ = null;
        }
        return reservedRangeBuilder_;
      }
      private com.google.protobuf.LazyStringArrayList reservedName_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureReservedNameIsMutable() {
        if (!reservedName_.isModifiable()) {
          reservedName_ = new com.google.protobuf.LazyStringArrayList(reservedName_);
        }
        bitField0_ |= 0x00000200;
      }
      /**
       * repeated string reserved_name = 10 [json_name = "reservedName"];
       * @return A list containing the reservedName.
       */
      public com.google.protobuf.ProtocolStringList
          getReservedNameList() {
        reservedName_.makeImmutable();
        return reservedName_;
      }
      /**
       * repeated string reserved_name = 10 [json_name = "reservedName"];
       * @return The count of reservedName.
       */
      public int getReservedNameCount() {
        return reservedName_.size();
      }
      /**
       * repeated string reserved_name = 10 [json_name = "reservedName"];
       * @param index The index of the element to return.
       * @return The reservedName at the given index.
       */
      public java.lang.String getReservedName(int index) {
        return reservedName_.get(index);
      }
      /**
       * repeated string reserved_name = 10 [json_name = "reservedName"];
       * @param index The index of the value to return.
       * @return The bytes of the reservedName at the given index.
       */
      public com.google.protobuf.ByteString
          getReservedNameBytes(int index) {
        return reservedName_.getByteString(index);
      }
      /**
       * repeated string reserved_name = 10 [json_name = "reservedName"];
       * @param index The index to set the value at.
       * @param value The reservedName to set.
       * @return This builder for chaining.
       */
      public Builder setReservedName(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureReservedNameIsMutable();
        reservedName_.set(index, value);
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * repeated string reserved_name = 10 [json_name = "reservedName"];
       * @param value The reservedName to add.
       * @return This builder for chaining.
       */
      public Builder addReservedName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureReservedNameIsMutable();
        reservedName_.add(value);
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * repeated string reserved_name = 10 [json_name = "reservedName"];
       * @param values The reservedName to add.
       * @return This builder for chaining.
       */
      public Builder addAllReservedName(
          java.lang.Iterable values) {
        ensureReservedNameIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, reservedName_);
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * repeated string reserved_name = 10 [json_name = "reservedName"];
       * @return This builder for chaining.
       */
      public Builder clearReservedName() {
        reservedName_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000200);;
        onChanged();
        return this;
      }
      /**
       * repeated string reserved_name = 10 [json_name = "reservedName"];
       * @param value The bytes of the reservedName to add.
       * @return This builder for chaining.
       */
      public Builder addReservedNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureReservedNameIsMutable();
        reservedName_.add(value);
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:google.protobuf.DescriptorProto)
    }
    // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto)
    private static final com.google.protobuf.DescriptorProtos.DescriptorProto DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.DescriptorProto();
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    @java.lang.Deprecated public static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public DescriptorProto parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.DescriptorProto getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ExtensionRangeOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.protobuf.ExtensionRangeOptions)
      com.google.protobuf.GeneratedMessageV3.
          ExtendableMessageOrBuilder {
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    java.util.List 
        getUninterpretedOptionList();
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    int getUninterpretedOptionCount();
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
        getUninterpretedOptionOrBuilderList();
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
        int index);
    /**
     * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
     */
    java.util.List 
        getDeclarationList();
    /**
     * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
     */
    com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration getDeclaration(int index);
    /**
     * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
     */
    int getDeclarationCount();
    /**
     * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.DeclarationOrBuilder> 
        getDeclarationOrBuilderList();
    /**
     * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
     */
    com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.DeclarationOrBuilder getDeclarationOrBuilder(
        int index);
    /**
     * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
     * @return Whether the features field is set.
     */
    boolean hasFeatures();
    /**
     * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
     * @return The features.
     */
    com.google.protobuf.DescriptorProtos.FeatureSet getFeatures();
    /**
     * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
     */
    com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder getFeaturesOrBuilder();
    /**
     * optional .google.protobuf.ExtensionRangeOptions.VerificationState verification = 3 [default = UNVERIFIED, json_name = "verification"];
     * @return Whether the verification field is set.
     */
    boolean hasVerification();
    /**
     * optional .google.protobuf.ExtensionRangeOptions.VerificationState verification = 3 [default = UNVERIFIED, json_name = "verification"];
     * @return The verification.
     */
    com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.VerificationState getVerification();
  }
  /**
   * Protobuf type {@code google.protobuf.ExtensionRangeOptions}
   */
  public static final class ExtensionRangeOptions extends
      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
        ExtensionRangeOptions> implements
      // @@protoc_insertion_point(message_implements:google.protobuf.ExtensionRangeOptions)
      ExtensionRangeOptionsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExtensionRangeOptions.newBuilder() to construct.
    private ExtensionRangeOptions(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder builder) {
      super(builder);
    }
    private ExtensionRangeOptions() {
      uninterpretedOption_ = java.util.Collections.emptyList();
      declaration_ = java.util.Collections.emptyList();
      verification_ = 1;
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExtensionRangeOptions();
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.class, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder.class);
    }
    /**
     * Protobuf enum {@code google.protobuf.ExtensionRangeOptions.VerificationState}
     */
    public enum VerificationState
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * DECLARATION = 0;
       */
      DECLARATION(0),
      /**
       * UNVERIFIED = 1;
       */
      UNVERIFIED(1),
      ;
      /**
       * DECLARATION = 0;
       */
      public static final int DECLARATION_VALUE = 0;
      /**
       * UNVERIFIED = 1;
       */
      public static final int UNVERIFIED_VALUE = 1;
      public final int getNumber() {
        return value;
      }
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static VerificationState valueOf(int value) {
        return forNumber(value);
      }
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static VerificationState forNumber(int value) {
        switch (value) {
          case 0: return DECLARATION;
          case 1: return UNVERIFIED;
          default: return null;
        }
      }
      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          VerificationState> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public VerificationState findValueByNumber(int number) {
                return VerificationState.forNumber(number);
              }
            };
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDescriptor().getEnumTypes().get(0);
      }
      private static final VerificationState[] VALUES = values();
      public static VerificationState valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
      private final int value;
      private VerificationState(int value) {
        this.value = value;
      }
      // @@protoc_insertion_point(enum_scope:google.protobuf.ExtensionRangeOptions.VerificationState)
    }
    public interface DeclarationOrBuilder extends
        // @@protoc_insertion_point(interface_extends:google.protobuf.ExtensionRangeOptions.Declaration)
        com.google.protobuf.MessageOrBuilder {
      /**
       * optional int32 number = 1 [json_name = "number"];
       * @return Whether the number field is set.
       */
      boolean hasNumber();
      /**
       * optional int32 number = 1 [json_name = "number"];
       * @return The number.
       */
      int getNumber();
      /**
       * optional string full_name = 2 [json_name = "fullName"];
       * @return Whether the fullName field is set.
       */
      boolean hasFullName();
      /**
       * optional string full_name = 2 [json_name = "fullName"];
       * @return The fullName.
       */
      java.lang.String getFullName();
      /**
       * optional string full_name = 2 [json_name = "fullName"];
       * @return The bytes for fullName.
       */
      com.google.protobuf.ByteString
          getFullNameBytes();
      /**
       * optional string type = 3 [json_name = "type"];
       * @return Whether the type field is set.
       */
      boolean hasType();
      /**
       * optional string type = 3 [json_name = "type"];
       * @return The type.
       */
      java.lang.String getType();
      /**
       * optional string type = 3 [json_name = "type"];
       * @return The bytes for type.
       */
      com.google.protobuf.ByteString
          getTypeBytes();
      /**
       * optional bool reserved = 5 [json_name = "reserved"];
       * @return Whether the reserved field is set.
       */
      boolean hasReserved();
      /**
       * optional bool reserved = 5 [json_name = "reserved"];
       * @return The reserved.
       */
      boolean getReserved();
      /**
       * optional bool repeated = 6 [json_name = "repeated"];
       * @return Whether the repeated field is set.
       */
      boolean hasRepeated();
      /**
       * optional bool repeated = 6 [json_name = "repeated"];
       * @return The repeated.
       */
      boolean getRepeated();
    }
    /**
     * Protobuf type {@code google.protobuf.ExtensionRangeOptions.Declaration}
     */
    public static final class Declaration extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:google.protobuf.ExtensionRangeOptions.Declaration)
        DeclarationOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Declaration.newBuilder() to construct.
      private Declaration(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
        super(builder);
      }
      private Declaration() {
        fullName_ = "";
        type_ = "";
      }
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Declaration();
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_Declaration_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_Declaration_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.class, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.Builder.class);
      }
      private int bitField0_;
      public static final int NUMBER_FIELD_NUMBER = 1;
      private int number_ = 0;
      /**
       * optional int32 number = 1 [json_name = "number"];
       * @return Whether the number field is set.
       */
      @java.lang.Override
      public boolean hasNumber() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional int32 number = 1 [json_name = "number"];
       * @return The number.
       */
      @java.lang.Override
      public int getNumber() {
        return number_;
      }
      public static final int FULL_NAME_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object fullName_ = "";
      /**
       * optional string full_name = 2 [json_name = "fullName"];
       * @return Whether the fullName field is set.
       */
      @java.lang.Override
      public boolean hasFullName() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * optional string full_name = 2 [json_name = "fullName"];
       * @return The fullName.
       */
      @java.lang.Override
      public java.lang.String getFullName() {
        java.lang.Object ref = fullName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            fullName_ = s;
          }
          return s;
        }
      }
      /**
       * optional string full_name = 2 [json_name = "fullName"];
       * @return The bytes for fullName.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getFullNameBytes() {
        java.lang.Object ref = fullName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fullName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      public static final int TYPE_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private volatile java.lang.Object type_ = "";
      /**
       * optional string type = 3 [json_name = "type"];
       * @return Whether the type field is set.
       */
      @java.lang.Override
      public boolean hasType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * optional string type = 3 [json_name = "type"];
       * @return The type.
       */
      @java.lang.Override
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            type_ = s;
          }
          return s;
        }
      }
      /**
       * optional string type = 3 [json_name = "type"];
       * @return The bytes for type.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      public static final int RESERVED_FIELD_NUMBER = 5;
      private boolean reserved_ = false;
      /**
       * optional bool reserved = 5 [json_name = "reserved"];
       * @return Whether the reserved field is set.
       */
      @java.lang.Override
      public boolean hasReserved() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * optional bool reserved = 5 [json_name = "reserved"];
       * @return The reserved.
       */
      @java.lang.Override
      public boolean getReserved() {
        return reserved_;
      }
      public static final int REPEATED_FIELD_NUMBER = 6;
      private boolean repeated_ = false;
      /**
       * optional bool repeated = 6 [json_name = "repeated"];
       * @return Whether the repeated field is set.
       */
      @java.lang.Override
      public boolean hasRepeated() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * optional bool repeated = 6 [json_name = "repeated"];
       * @return The repeated.
       */
      @java.lang.Override
      public boolean getRepeated() {
        return repeated_;
      }
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
        memoizedIsInitialized = 1;
        return true;
      }
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, number_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, fullName_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, type_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeBool(5, reserved_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          output.writeBool(6, repeated_);
        }
        getUnknownFields().writeTo(output);
      }
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, number_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, fullName_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, type_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(5, reserved_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(6, repeated_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration)) {
          return super.equals(obj);
        }
        com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration other = (com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration) obj;
        if (hasNumber() != other.hasNumber()) return false;
        if (hasNumber()) {
          if (getNumber()
              != other.getNumber()) return false;
        }
        if (hasFullName() != other.hasFullName()) return false;
        if (hasFullName()) {
          if (!getFullName()
              .equals(other.getFullName())) return false;
        }
        if (hasType() != other.hasType()) return false;
        if (hasType()) {
          if (!getType()
              .equals(other.getType())) return false;
        }
        if (hasReserved() != other.hasReserved()) return false;
        if (hasReserved()) {
          if (getReserved()
              != other.getReserved()) return false;
        }
        if (hasRepeated() != other.hasRepeated()) return false;
        if (hasRepeated()) {
          if (getRepeated()
              != other.getRepeated()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasNumber()) {
          hash = (37 * hash) + NUMBER_FIELD_NUMBER;
          hash = (53 * hash) + getNumber();
        }
        if (hasFullName()) {
          hash = (37 * hash) + FULL_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getFullName().hashCode();
        }
        if (hasType()) {
          hash = (37 * hash) + TYPE_FIELD_NUMBER;
          hash = (53 * hash) + getType().hashCode();
        }
        if (hasReserved()) {
          hash = (37 * hash) + RESERVED_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getReserved());
        }
        if (hasRepeated()) {
          hash = (37 * hash) + REPEATED_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getRepeated());
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
      public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code google.protobuf.ExtensionRangeOptions.Declaration}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder implements
          // @@protoc_insertion_point(builder_implements:google.protobuf.ExtensionRangeOptions.Declaration)
          com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.DeclarationOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_Declaration_descriptor;
        }
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_Declaration_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.class, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.Builder.class);
        }
        // Construct using com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.newBuilder()
        private Builder() {
        }
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          number_ = 0;
          fullName_ = "";
          type_ = "";
          reserved_ = false;
          repeated_ = false;
          return this;
        }
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_Declaration_descriptor;
        }
        @java.lang.Override
        public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration getDefaultInstanceForType() {
          return com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.getDefaultInstance();
        }
        @java.lang.Override
        public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration build() {
          com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        @java.lang.Override
        public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration buildPartial() {
          com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration result = new com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
        private void buildPartial0(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.number_ = number_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.fullName_ = fullName_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.type_ = type_;
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.reserved_ = reserved_;
            to_bitField0_ |= 0x00000008;
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.repeated_ = repeated_;
            to_bitField0_ |= 0x00000010;
          }
          result.bitField0_ |= to_bitField0_;
        }
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration) {
            return mergeFrom((com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        public Builder mergeFrom(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration other) {
          if (other == com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.getDefaultInstance()) return this;
          if (other.hasNumber()) {
            setNumber(other.getNumber());
          }
          if (other.hasFullName()) {
            fullName_ = other.fullName_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasType()) {
            type_ = other.type_;
            bitField0_ |= 0x00000004;
            onChanged();
          }
          if (other.hasReserved()) {
            setReserved(other.getReserved());
          }
          if (other.hasRepeated()) {
            setRepeated(other.getRepeated());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  number_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 18: {
                  fullName_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  type_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                case 40: {
                  reserved_ = input.readBool();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 40
                case 48: {
                  repeated_ = input.readBool();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 48
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
        private int number_ ;
        /**
         * optional int32 number = 1 [json_name = "number"];
         * @return Whether the number field is set.
         */
        @java.lang.Override
        public boolean hasNumber() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * optional int32 number = 1 [json_name = "number"];
         * @return The number.
         */
        @java.lang.Override
        public int getNumber() {
          return number_;
        }
        /**
         * optional int32 number = 1 [json_name = "number"];
         * @param value The number to set.
         * @return This builder for chaining.
         */
        public Builder setNumber(int value) {
          number_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * optional int32 number = 1 [json_name = "number"];
         * @return This builder for chaining.
         */
        public Builder clearNumber() {
          bitField0_ = (bitField0_ & ~0x00000001);
          number_ = 0;
          onChanged();
          return this;
        }
        private java.lang.Object fullName_ = "";
        /**
         * optional string full_name = 2 [json_name = "fullName"];
         * @return Whether the fullName field is set.
         */
        public boolean hasFullName() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * optional string full_name = 2 [json_name = "fullName"];
         * @return The fullName.
         */
        public java.lang.String getFullName() {
          java.lang.Object ref = fullName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              fullName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * optional string full_name = 2 [json_name = "fullName"];
         * @return The bytes for fullName.
         */
        public com.google.protobuf.ByteString
            getFullNameBytes() {
          java.lang.Object ref = fullName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            fullName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * optional string full_name = 2 [json_name = "fullName"];
         * @param value The fullName to set.
         * @return This builder for chaining.
         */
        public Builder setFullName(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          fullName_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * optional string full_name = 2 [json_name = "fullName"];
         * @return This builder for chaining.
         */
        public Builder clearFullName() {
          fullName_ = getDefaultInstance().getFullName();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * optional string full_name = 2 [json_name = "fullName"];
         * @param value The bytes for fullName to set.
         * @return This builder for chaining.
         */
        public Builder setFullNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          fullName_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        private java.lang.Object type_ = "";
        /**
         * optional string type = 3 [json_name = "type"];
         * @return Whether the type field is set.
         */
        public boolean hasType() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * optional string type = 3 [json_name = "type"];
         * @return The type.
         */
        public java.lang.String getType() {
          java.lang.Object ref = type_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              type_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * optional string type = 3 [json_name = "type"];
         * @return The bytes for type.
         */
        public com.google.protobuf.ByteString
            getTypeBytes() {
          java.lang.Object ref = type_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            type_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * optional string type = 3 [json_name = "type"];
         * @param value The type to set.
         * @return This builder for chaining.
         */
        public Builder setType(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          type_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * optional string type = 3 [json_name = "type"];
         * @return This builder for chaining.
         */
        public Builder clearType() {
          type_ = getDefaultInstance().getType();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         * optional string type = 3 [json_name = "type"];
         * @param value The bytes for type to set.
         * @return This builder for chaining.
         */
        public Builder setTypeBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          type_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        private boolean reserved_ ;
        /**
         * optional bool reserved = 5 [json_name = "reserved"];
         * @return Whether the reserved field is set.
         */
        @java.lang.Override
        public boolean hasReserved() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * optional bool reserved = 5 [json_name = "reserved"];
         * @return The reserved.
         */
        @java.lang.Override
        public boolean getReserved() {
          return reserved_;
        }
        /**
         * optional bool reserved = 5 [json_name = "reserved"];
         * @param value The reserved to set.
         * @return This builder for chaining.
         */
        public Builder setReserved(boolean value) {
          reserved_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * optional bool reserved = 5 [json_name = "reserved"];
         * @return This builder for chaining.
         */
        public Builder clearReserved() {
          bitField0_ = (bitField0_ & ~0x00000008);
          reserved_ = false;
          onChanged();
          return this;
        }
        private boolean repeated_ ;
        /**
         * optional bool repeated = 6 [json_name = "repeated"];
         * @return Whether the repeated field is set.
         */
        @java.lang.Override
        public boolean hasRepeated() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * optional bool repeated = 6 [json_name = "repeated"];
         * @return The repeated.
         */
        @java.lang.Override
        public boolean getRepeated() {
          return repeated_;
        }
        /**
         * optional bool repeated = 6 [json_name = "repeated"];
         * @param value The repeated to set.
         * @return This builder for chaining.
         */
        public Builder setRepeated(boolean value) {
          repeated_ = value;
          bitField0_ |= 0x00000010;
          onChanged();
          return this;
        }
        /**
         * optional bool repeated = 6 [json_name = "repeated"];
         * @return This builder for chaining.
         */
        public Builder clearRepeated() {
          bitField0_ = (bitField0_ & ~0x00000010);
          repeated_ = false;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
        // @@protoc_insertion_point(builder_scope:google.protobuf.ExtensionRangeOptions.Declaration)
      }
      // @@protoc_insertion_point(class_scope:google.protobuf.ExtensionRangeOptions.Declaration)
      private static final com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration();
      }
      public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
      @java.lang.Deprecated public static final com.google.protobuf.Parser
          PARSER = new com.google.protobuf.AbstractParser() {
        @java.lang.Override
        public Declaration parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
      public static com.google.protobuf.Parser parser() {
        return PARSER;
      }
      @java.lang.Override
      public com.google.protobuf.Parser getParserForType() {
        return PARSER;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }
    private int bitField0_;
    public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
    @SuppressWarnings("serial")
    private java.util.List uninterpretedOption_;
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public java.util.List getUninterpretedOptionList() {
      return uninterpretedOption_;
    }
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
        getUninterpretedOptionOrBuilderList() {
      return uninterpretedOption_;
    }
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public int getUninterpretedOptionCount() {
      return uninterpretedOption_.size();
    }
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
      return uninterpretedOption_.get(index);
    }
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
        int index) {
      return uninterpretedOption_.get(index);
    }
    public static final int DECLARATION_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List declaration_;
    /**
     * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
     */
    @java.lang.Override
    public java.util.List getDeclarationList() {
      return declaration_;
    }
    /**
     * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.DeclarationOrBuilder> 
        getDeclarationOrBuilderList() {
      return declaration_;
    }
    /**
     * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
     */
    @java.lang.Override
    public int getDeclarationCount() {
      return declaration_.size();
    }
    /**
     * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration getDeclaration(int index) {
      return declaration_.get(index);
    }
    /**
     * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.DeclarationOrBuilder getDeclarationOrBuilder(
        int index) {
      return declaration_.get(index);
    }
    public static final int FEATURES_FIELD_NUMBER = 50;
    private com.google.protobuf.DescriptorProtos.FeatureSet features_;
    /**
     * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
     * @return Whether the features field is set.
     */
    @java.lang.Override
    public boolean hasFeatures() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
     * @return The features.
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FeatureSet getFeatures() {
      return features_ == null ? com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance() : features_;
    }
    /**
     * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder getFeaturesOrBuilder() {
      return features_ == null ? com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance() : features_;
    }
    public static final int VERIFICATION_FIELD_NUMBER = 3;
    private int verification_ = 1;
    /**
     * optional .google.protobuf.ExtensionRangeOptions.VerificationState verification = 3 [default = UNVERIFIED, json_name = "verification"];
     * @return Whether the verification field is set.
     */
    @java.lang.Override public boolean hasVerification() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * optional .google.protobuf.ExtensionRangeOptions.VerificationState verification = 3 [default = UNVERIFIED, json_name = "verification"];
     * @return The verification.
     */
    @java.lang.Override public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.VerificationState getVerification() {
      com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.VerificationState result = com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.VerificationState.forNumber(verification_);
      return result == null ? com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.VerificationState.UNVERIFIED : result;
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      for (int i = 0; i < getUninterpretedOptionCount(); i++) {
        if (!getUninterpretedOption(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasFeatures()) {
        if (!getFeatures().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .ExtendableMessage.ExtensionWriter
          extensionWriter = newExtensionWriter();
      for (int i = 0; i < declaration_.size(); i++) {
        output.writeMessage(2, declaration_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeEnum(3, verification_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(50, getFeatures());
      }
      for (int i = 0; i < uninterpretedOption_.size(); i++) {
        output.writeMessage(999, uninterpretedOption_.get(i));
      }
      extensionWriter.writeUntil(536870912, output);
      getUnknownFields().writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      for (int i = 0; i < declaration_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, declaration_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, verification_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(50, getFeatures());
      }
      for (int i = 0; i < uninterpretedOption_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(999, uninterpretedOption_.get(i));
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.protobuf.DescriptorProtos.ExtensionRangeOptions)) {
        return super.equals(obj);
      }
      com.google.protobuf.DescriptorProtos.ExtensionRangeOptions other = (com.google.protobuf.DescriptorProtos.ExtensionRangeOptions) obj;
      if (!getUninterpretedOptionList()
          .equals(other.getUninterpretedOptionList())) return false;
      if (!getDeclarationList()
          .equals(other.getDeclarationList())) return false;
      if (hasFeatures() != other.hasFeatures()) return false;
      if (hasFeatures()) {
        if (!getFeatures()
            .equals(other.getFeatures())) return false;
      }
      if (hasVerification() != other.hasVerification()) return false;
      if (hasVerification()) {
        if (verification_ != other.verification_) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      if (!getExtensionFields().equals(other.getExtensionFields()))
        return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getUninterpretedOptionCount() > 0) {
        hash = (37 * hash) + UNINTERPRETED_OPTION_FIELD_NUMBER;
        hash = (53 * hash) + getUninterpretedOptionList().hashCode();
      }
      if (getDeclarationCount() > 0) {
        hash = (37 * hash) + DECLARATION_FIELD_NUMBER;
        hash = (53 * hash) + getDeclarationList().hashCode();
      }
      if (hasFeatures()) {
        hash = (37 * hash) + FEATURES_FIELD_NUMBER;
        hash = (53 * hash) + getFeatures().hashCode();
      }
      if (hasVerification()) {
        hash = (37 * hash) + VERIFICATION_FIELD_NUMBER;
        hash = (53 * hash) + verification_;
      }
      hash = hashFields(hash, getExtensionFields());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.ExtensionRangeOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
          com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, Builder> implements
        // @@protoc_insertion_point(builder_implements:google.protobuf.ExtensionRangeOptions)
        com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.class, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder.class);
      }
      // Construct using com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getUninterpretedOptionFieldBuilder();
          getDeclarationFieldBuilder();
          getFeaturesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (uninterpretedOptionBuilder_ == null) {
          uninterpretedOption_ = java.util.Collections.emptyList();
        } else {
          uninterpretedOption_ = null;
          uninterpretedOptionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (declarationBuilder_ == null) {
          declaration_ = java.util.Collections.emptyList();
        } else {
          declaration_ = null;
          declarationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        features_ = null;
        if (featuresBuilder_ != null) {
          featuresBuilder_.dispose();
          featuresBuilder_ = null;
        }
        verification_ = 1;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ExtensionRangeOptions_descriptor;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance();
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions build() {
        com.google.protobuf.DescriptorProtos.ExtensionRangeOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions buildPartial() {
        com.google.protobuf.DescriptorProtos.ExtensionRangeOptions result = new com.google.protobuf.DescriptorProtos.ExtensionRangeOptions(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }
      private void buildPartialRepeatedFields(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions result) {
        if (uninterpretedOptionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.uninterpretedOption_ = uninterpretedOption_;
        } else {
          result.uninterpretedOption_ = uninterpretedOptionBuilder_.build();
        }
        if (declarationBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            declaration_ = java.util.Collections.unmodifiableList(declaration_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.declaration_ = declaration_;
        } else {
          result.declaration_ = declarationBuilder_.build();
        }
      }
      private void buildPartial0(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.features_ = featuresBuilder_ == null
              ? features_
              : featuresBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.verification_ = verification_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public  Builder setExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, Type> extension,
          Type value) {
        return super.setExtension(extension, value);
      }
      @java.lang.Override
      public  Builder setExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, java.util.List> extension,
          int index, Type value) {
        return super.setExtension(extension, index, value);
      }
      @java.lang.Override
      public  Builder addExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, java.util.List> extension,
          Type value) {
        return super.addExtension(extension, value);
      }
      @java.lang.Override
      public  Builder clearExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, T> extension) {
        return super.clearExtension(extension);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.ExtensionRangeOptions) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.ExtensionRangeOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions other) {
        if (other == com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.getDefaultInstance()) return this;
        if (uninterpretedOptionBuilder_ == null) {
          if (!other.uninterpretedOption_.isEmpty()) {
            if (uninterpretedOption_.isEmpty()) {
              uninterpretedOption_ = other.uninterpretedOption_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureUninterpretedOptionIsMutable();
              uninterpretedOption_.addAll(other.uninterpretedOption_);
            }
            onChanged();
          }
        } else {
          if (!other.uninterpretedOption_.isEmpty()) {
            if (uninterpretedOptionBuilder_.isEmpty()) {
              uninterpretedOptionBuilder_.dispose();
              uninterpretedOptionBuilder_ = null;
              uninterpretedOption_ = other.uninterpretedOption_;
              bitField0_ = (bitField0_ & ~0x00000001);
              uninterpretedOptionBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getUninterpretedOptionFieldBuilder() : null;
            } else {
              uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_);
            }
          }
        }
        if (declarationBuilder_ == null) {
          if (!other.declaration_.isEmpty()) {
            if (declaration_.isEmpty()) {
              declaration_ = other.declaration_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureDeclarationIsMutable();
              declaration_.addAll(other.declaration_);
            }
            onChanged();
          }
        } else {
          if (!other.declaration_.isEmpty()) {
            if (declarationBuilder_.isEmpty()) {
              declarationBuilder_.dispose();
              declarationBuilder_ = null;
              declaration_ = other.declaration_;
              bitField0_ = (bitField0_ & ~0x00000002);
              declarationBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDeclarationFieldBuilder() : null;
            } else {
              declarationBuilder_.addAllMessages(other.declaration_);
            }
          }
        }
        if (other.hasFeatures()) {
          mergeFeatures(other.getFeatures());
        }
        if (other.hasVerification()) {
          setVerification(other.getVerification());
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getUninterpretedOptionCount(); i++) {
          if (!getUninterpretedOption(i).isInitialized()) {
            return false;
          }
        }
        if (hasFeatures()) {
          if (!getFeatures().isInitialized()) {
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          return false;
        }
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 18: {
                com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.PARSER,
                        extensionRegistry);
                if (declarationBuilder_ == null) {
                  ensureDeclarationIsMutable();
                  declaration_.add(m);
                } else {
                  declarationBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 24: {
                int tmpRaw = input.readEnum();
                com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.VerificationState tmpValue =
                    com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.VerificationState.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(3, tmpRaw);
                } else {
                  verification_ = tmpRaw;
                  bitField0_ |= 0x00000008;
                }
                break;
              } // case 24
              case 402: {
                input.readMessage(
                    getFeaturesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 402
              case 7994: {
                com.google.protobuf.DescriptorProtos.UninterpretedOption m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER,
                        extensionRegistry);
                if (uninterpretedOptionBuilder_ == null) {
                  ensureUninterpretedOptionIsMutable();
                  uninterpretedOption_.add(m);
                } else {
                  uninterpretedOptionBuilder_.addMessage(m);
                }
                break;
              } // case 7994
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private java.util.List uninterpretedOption_ =
        java.util.Collections.emptyList();
      private void ensureUninterpretedOptionIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          uninterpretedOption_ = new java.util.ArrayList(uninterpretedOption_);
          bitField0_ |= 0x00000001;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_;
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public java.util.List getUninterpretedOptionList() {
        if (uninterpretedOptionBuilder_ == null) {
          return java.util.Collections.unmodifiableList(uninterpretedOption_);
        } else {
          return uninterpretedOptionBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public int getUninterpretedOptionCount() {
        if (uninterpretedOptionBuilder_ == null) {
          return uninterpretedOption_.size();
        } else {
          return uninterpretedOptionBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
        if (uninterpretedOptionBuilder_ == null) {
          return uninterpretedOption_.get(index);
        } else {
          return uninterpretedOptionBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      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;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      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;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      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;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      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;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      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;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      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;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public Builder addAllUninterpretedOption(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) {
        if (uninterpretedOptionBuilder_ == null) {
          ensureUninterpretedOptionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, uninterpretedOption_);
          onChanged();
        } else {
          uninterpretedOptionBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public Builder clearUninterpretedOption() {
        if (uninterpretedOptionBuilder_ == null) {
          uninterpretedOption_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          uninterpretedOptionBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public Builder removeUninterpretedOption(int index) {
        if (uninterpretedOptionBuilder_ == null) {
          ensureUninterpretedOptionIsMutable();
          uninterpretedOption_.remove(index);
          onChanged();
        } else {
          uninterpretedOptionBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder(
          int index) {
        return getUninterpretedOptionFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
          int index) {
        if (uninterpretedOptionBuilder_ == null) {
          return uninterpretedOption_.get(index);  } else {
          return uninterpretedOptionBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
           getUninterpretedOptionOrBuilderList() {
        if (uninterpretedOptionBuilder_ != null) {
          return uninterpretedOptionBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(uninterpretedOption_);
        }
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() {
        return getUninterpretedOptionFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder(
          int index) {
        return getUninterpretedOptionFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public java.util.List 
           getUninterpretedOptionBuilderList() {
        return getUninterpretedOptionFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
          getUninterpretedOptionFieldBuilder() {
        if (uninterpretedOptionBuilder_ == null) {
          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                  uninterpretedOption_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          uninterpretedOption_ = null;
        }
        return uninterpretedOptionBuilder_;
      }
      private java.util.List declaration_ =
        java.util.Collections.emptyList();
      private void ensureDeclarationIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          declaration_ = new java.util.ArrayList(declaration_);
          bitField0_ |= 0x00000002;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.Builder, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.DeclarationOrBuilder> declarationBuilder_;
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public java.util.List getDeclarationList() {
        if (declarationBuilder_ == null) {
          return java.util.Collections.unmodifiableList(declaration_);
        } else {
          return declarationBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public int getDeclarationCount() {
        if (declarationBuilder_ == null) {
          return declaration_.size();
        } else {
          return declarationBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration getDeclaration(int index) {
        if (declarationBuilder_ == null) {
          return declaration_.get(index);
        } else {
          return declarationBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public Builder setDeclaration(
          int index, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration value) {
        if (declarationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeclarationIsMutable();
          declaration_.set(index, value);
          onChanged();
        } else {
          declarationBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public Builder setDeclaration(
          int index, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.Builder builderForValue) {
        if (declarationBuilder_ == null) {
          ensureDeclarationIsMutable();
          declaration_.set(index, builderForValue.build());
          onChanged();
        } else {
          declarationBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public Builder addDeclaration(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration value) {
        if (declarationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeclarationIsMutable();
          declaration_.add(value);
          onChanged();
        } else {
          declarationBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public Builder addDeclaration(
          int index, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration value) {
        if (declarationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeclarationIsMutable();
          declaration_.add(index, value);
          onChanged();
        } else {
          declarationBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public Builder addDeclaration(
          com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.Builder builderForValue) {
        if (declarationBuilder_ == null) {
          ensureDeclarationIsMutable();
          declaration_.add(builderForValue.build());
          onChanged();
        } else {
          declarationBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public Builder addDeclaration(
          int index, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.Builder builderForValue) {
        if (declarationBuilder_ == null) {
          ensureDeclarationIsMutable();
          declaration_.add(index, builderForValue.build());
          onChanged();
        } else {
          declarationBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public Builder addAllDeclaration(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration> values) {
        if (declarationBuilder_ == null) {
          ensureDeclarationIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, declaration_);
          onChanged();
        } else {
          declarationBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public Builder clearDeclaration() {
        if (declarationBuilder_ == null) {
          declaration_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          declarationBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public Builder removeDeclaration(int index) {
        if (declarationBuilder_ == null) {
          ensureDeclarationIsMutable();
          declaration_.remove(index);
          onChanged();
        } else {
          declarationBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.Builder getDeclarationBuilder(
          int index) {
        return getDeclarationFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.DeclarationOrBuilder getDeclarationOrBuilder(
          int index) {
        if (declarationBuilder_ == null) {
          return declaration_.get(index);  } else {
          return declarationBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.DeclarationOrBuilder> 
           getDeclarationOrBuilderList() {
        if (declarationBuilder_ != null) {
          return declarationBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(declaration_);
        }
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.Builder addDeclarationBuilder() {
        return getDeclarationFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.Builder addDeclarationBuilder(
          int index) {
        return getDeclarationFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.ExtensionRangeOptions.Declaration declaration = 2 [json_name = "declaration", retention = RETENTION_SOURCE];
       */
      public java.util.List 
           getDeclarationBuilderList() {
        return getDeclarationFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.Builder, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.DeclarationOrBuilder> 
          getDeclarationFieldBuilder() {
        if (declarationBuilder_ == null) {
          declarationBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Declaration.Builder, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.DeclarationOrBuilder>(
                  declaration_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          declaration_ = null;
        }
        return declarationBuilder_;
      }
      private com.google.protobuf.DescriptorProtos.FeatureSet features_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FeatureSet, com.google.protobuf.DescriptorProtos.FeatureSet.Builder, com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder> featuresBuilder_;
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       * @return Whether the features field is set.
       */
      public boolean hasFeatures() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       * @return The features.
       */
      public com.google.protobuf.DescriptorProtos.FeatureSet getFeatures() {
        if (featuresBuilder_ == null) {
          return features_ == null ? com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance() : features_;
        } else {
          return featuresBuilder_.getMessage();
        }
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      public Builder setFeatures(com.google.protobuf.DescriptorProtos.FeatureSet value) {
        if (featuresBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          features_ = value;
        } else {
          featuresBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      public Builder setFeatures(
          com.google.protobuf.DescriptorProtos.FeatureSet.Builder builderForValue) {
        if (featuresBuilder_ == null) {
          features_ = builderForValue.build();
        } else {
          featuresBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      public Builder mergeFeatures(com.google.protobuf.DescriptorProtos.FeatureSet value) {
        if (featuresBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            features_ != null &&
            features_ != com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance()) {
            getFeaturesBuilder().mergeFrom(value);
          } else {
            features_ = value;
          }
        } else {
          featuresBuilder_.mergeFrom(value);
        }
        if (features_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      public Builder clearFeatures() {
        bitField0_ = (bitField0_ & ~0x00000004);
        features_ = null;
        if (featuresBuilder_ != null) {
          featuresBuilder_.dispose();
          featuresBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      public com.google.protobuf.DescriptorProtos.FeatureSet.Builder getFeaturesBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getFeaturesFieldBuilder().getBuilder();
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      public com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder getFeaturesOrBuilder() {
        if (featuresBuilder_ != null) {
          return featuresBuilder_.getMessageOrBuilder();
        } else {
          return features_ == null ?
              com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance() : features_;
        }
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FeatureSet, com.google.protobuf.DescriptorProtos.FeatureSet.Builder, com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder> 
          getFeaturesFieldBuilder() {
        if (featuresBuilder_ == null) {
          featuresBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.FeatureSet, com.google.protobuf.DescriptorProtos.FeatureSet.Builder, com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder>(
                  getFeatures(),
                  getParentForChildren(),
                  isClean());
          features_ = null;
        }
        return featuresBuilder_;
      }
      private int verification_ = 1;
      /**
       * optional .google.protobuf.ExtensionRangeOptions.VerificationState verification = 3 [default = UNVERIFIED, json_name = "verification"];
       * @return Whether the verification field is set.
       */
      @java.lang.Override public boolean hasVerification() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * optional .google.protobuf.ExtensionRangeOptions.VerificationState verification = 3 [default = UNVERIFIED, json_name = "verification"];
       * @return The verification.
       */
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.VerificationState getVerification() {
        com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.VerificationState result = com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.VerificationState.forNumber(verification_);
        return result == null ? com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.VerificationState.UNVERIFIED : result;
      }
      /**
       * optional .google.protobuf.ExtensionRangeOptions.VerificationState verification = 3 [default = UNVERIFIED, json_name = "verification"];
       * @param value The verification to set.
       * @return This builder for chaining.
       */
      public Builder setVerification(com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.VerificationState value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000008;
        verification_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.ExtensionRangeOptions.VerificationState verification = 3 [default = UNVERIFIED, json_name = "verification"];
       * @return This builder for chaining.
       */
      public Builder clearVerification() {
        bitField0_ = (bitField0_ & ~0x00000008);
        verification_ = 1;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:google.protobuf.ExtensionRangeOptions)
    }
    // @@protoc_insertion_point(class_scope:google.protobuf.ExtensionRangeOptions)
    private static final com.google.protobuf.DescriptorProtos.ExtensionRangeOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.ExtensionRangeOptions();
    }
    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    @java.lang.Deprecated public static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExtensionRangeOptions parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.ExtensionRangeOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface FieldDescriptorProtoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.protobuf.FieldDescriptorProto)
      com.google.protobuf.MessageOrBuilder {
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    java.lang.String getName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * optional int32 number = 3 [json_name = "number"];
     * @return Whether the number field is set.
     */
    boolean hasNumber();
    /**
     * optional int32 number = 3 [json_name = "number"];
     * @return The number.
     */
    int getNumber();
    /**
     * optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];
     * @return Whether the label field is set.
     */
    boolean hasLabel();
    /**
     * optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];
     * @return The label.
     */
    com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel();
    /**
     * optional .google.protobuf.FieldDescriptorProto.Type type = 5 [json_name = "type"];
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * optional .google.protobuf.FieldDescriptorProto.Type type = 5 [json_name = "type"];
     * @return The type.
     */
    com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType();
    /**
     * optional string type_name = 6 [json_name = "typeName"];
     * @return Whether the typeName field is set.
     */
    boolean hasTypeName();
    /**
     * optional string type_name = 6 [json_name = "typeName"];
     * @return The typeName.
     */
    java.lang.String getTypeName();
    /**
     * optional string type_name = 6 [json_name = "typeName"];
     * @return The bytes for typeName.
     */
    com.google.protobuf.ByteString
        getTypeNameBytes();
    /**
     * optional string extendee = 2 [json_name = "extendee"];
     * @return Whether the extendee field is set.
     */
    boolean hasExtendee();
    /**
     * optional string extendee = 2 [json_name = "extendee"];
     * @return The extendee.
     */
    java.lang.String getExtendee();
    /**
     * optional string extendee = 2 [json_name = "extendee"];
     * @return The bytes for extendee.
     */
    com.google.protobuf.ByteString
        getExtendeeBytes();
    /**
     * optional string default_value = 7 [json_name = "defaultValue"];
     * @return Whether the defaultValue field is set.
     */
    boolean hasDefaultValue();
    /**
     * optional string default_value = 7 [json_name = "defaultValue"];
     * @return The defaultValue.
     */
    java.lang.String getDefaultValue();
    /**
     * optional string default_value = 7 [json_name = "defaultValue"];
     * @return The bytes for defaultValue.
     */
    com.google.protobuf.ByteString
        getDefaultValueBytes();
    /**
     * optional int32 oneof_index = 9 [json_name = "oneofIndex"];
     * @return Whether the oneofIndex field is set.
     */
    boolean hasOneofIndex();
    /**
     * optional int32 oneof_index = 9 [json_name = "oneofIndex"];
     * @return The oneofIndex.
     */
    int getOneofIndex();
    /**
     * optional string json_name = 10 [json_name = "jsonName"];
     * @return Whether the jsonName field is set.
     */
    boolean hasJsonName();
    /**
     * optional string json_name = 10 [json_name = "jsonName"];
     * @return The jsonName.
     */
    java.lang.String getJsonName();
    /**
     * optional string json_name = 10 [json_name = "jsonName"];
     * @return The bytes for jsonName.
     */
    com.google.protobuf.ByteString
        getJsonNameBytes();
    /**
     * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
     * @return Whether the options field is set.
     */
    boolean hasOptions();
    /**
     * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
     * @return The options.
     */
    com.google.protobuf.DescriptorProtos.FieldOptions getOptions();
    /**
     * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
     */
    com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder getOptionsOrBuilder();
    /**
     * optional bool proto3_optional = 17 [json_name = "proto3Optional"];
     * @return Whether the proto3Optional field is set.
     */
    boolean hasProto3Optional();
    /**
     * optional bool proto3_optional = 17 [json_name = "proto3Optional"];
     * @return The proto3Optional.
     */
    boolean getProto3Optional();
  }
  /**
   * Protobuf type {@code google.protobuf.FieldDescriptorProto}
   */
  public static final class FieldDescriptorProto extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.protobuf.FieldDescriptorProto)
      FieldDescriptorProtoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FieldDescriptorProto.newBuilder() to construct.
    private FieldDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private FieldDescriptorProto() {
      name_ = "";
      label_ = 1;
      type_ = 1;
      typeName_ = "";
      extendee_ = "";
      defaultValue_ = "";
      jsonName_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new FieldDescriptorProto();
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.protobuf.DescriptorProtos.FieldDescriptorProto.class, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder.class);
    }
    /**
     * Protobuf enum {@code google.protobuf.FieldDescriptorProto.Type}
     */
    public enum Type
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * TYPE_DOUBLE = 1;
       */
      TYPE_DOUBLE(1),
      /**
       * TYPE_FLOAT = 2;
       */
      TYPE_FLOAT(2),
      /**
       * TYPE_INT64 = 3;
       */
      TYPE_INT64(3),
      /**
       * TYPE_UINT64 = 4;
       */
      TYPE_UINT64(4),
      /**
       * TYPE_INT32 = 5;
       */
      TYPE_INT32(5),
      /**
       * TYPE_FIXED64 = 6;
       */
      TYPE_FIXED64(6),
      /**
       * TYPE_FIXED32 = 7;
       */
      TYPE_FIXED32(7),
      /**
       * TYPE_BOOL = 8;
       */
      TYPE_BOOL(8),
      /**
       * TYPE_STRING = 9;
       */
      TYPE_STRING(9),
      /**
       * TYPE_GROUP = 10;
       */
      TYPE_GROUP(10),
      /**
       * TYPE_MESSAGE = 11;
       */
      TYPE_MESSAGE(11),
      /**
       * TYPE_BYTES = 12;
       */
      TYPE_BYTES(12),
      /**
       * TYPE_UINT32 = 13;
       */
      TYPE_UINT32(13),
      /**
       * TYPE_ENUM = 14;
       */
      TYPE_ENUM(14),
      /**
       * TYPE_SFIXED32 = 15;
       */
      TYPE_SFIXED32(15),
      /**
       * TYPE_SFIXED64 = 16;
       */
      TYPE_SFIXED64(16),
      /**
       * TYPE_SINT32 = 17;
       */
      TYPE_SINT32(17),
      /**
       * TYPE_SINT64 = 18;
       */
      TYPE_SINT64(18),
      ;
      /**
       * TYPE_DOUBLE = 1;
       */
      public static final int TYPE_DOUBLE_VALUE = 1;
      /**
       * TYPE_FLOAT = 2;
       */
      public static final int TYPE_FLOAT_VALUE = 2;
      /**
       * TYPE_INT64 = 3;
       */
      public static final int TYPE_INT64_VALUE = 3;
      /**
       * TYPE_UINT64 = 4;
       */
      public static final int TYPE_UINT64_VALUE = 4;
      /**
       * TYPE_INT32 = 5;
       */
      public static final int TYPE_INT32_VALUE = 5;
      /**
       * TYPE_FIXED64 = 6;
       */
      public static final int TYPE_FIXED64_VALUE = 6;
      /**
       * TYPE_FIXED32 = 7;
       */
      public static final int TYPE_FIXED32_VALUE = 7;
      /**
       * TYPE_BOOL = 8;
       */
      public static final int TYPE_BOOL_VALUE = 8;
      /**
       * TYPE_STRING = 9;
       */
      public static final int TYPE_STRING_VALUE = 9;
      /**
       * TYPE_GROUP = 10;
       */
      public static final int TYPE_GROUP_VALUE = 10;
      /**
       * TYPE_MESSAGE = 11;
       */
      public static final int TYPE_MESSAGE_VALUE = 11;
      /**
       * TYPE_BYTES = 12;
       */
      public static final int TYPE_BYTES_VALUE = 12;
      /**
       * TYPE_UINT32 = 13;
       */
      public static final int TYPE_UINT32_VALUE = 13;
      /**
       * TYPE_ENUM = 14;
       */
      public static final int TYPE_ENUM_VALUE = 14;
      /**
       * TYPE_SFIXED32 = 15;
       */
      public static final int TYPE_SFIXED32_VALUE = 15;
      /**
       * TYPE_SFIXED64 = 16;
       */
      public static final int TYPE_SFIXED64_VALUE = 16;
      /**
       * TYPE_SINT32 = 17;
       */
      public static final int TYPE_SINT32_VALUE = 17;
      /**
       * TYPE_SINT64 = 18;
       */
      public static final int TYPE_SINT64_VALUE = 18;
      public final int getNumber() {
        return value;
      }
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Type valueOf(int value) {
        return forNumber(value);
      }
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Type forNumber(int value) {
        switch (value) {
          case 1: return TYPE_DOUBLE;
          case 2: return TYPE_FLOAT;
          case 3: return TYPE_INT64;
          case 4: return TYPE_UINT64;
          case 5: return TYPE_INT32;
          case 6: return TYPE_FIXED64;
          case 7: return TYPE_FIXED32;
          case 8: return TYPE_BOOL;
          case 9: return TYPE_STRING;
          case 10: return TYPE_GROUP;
          case 11: return TYPE_MESSAGE;
          case 12: return TYPE_BYTES;
          case 13: return TYPE_UINT32;
          case 14: return TYPE_ENUM;
          case 15: return TYPE_SFIXED32;
          case 16: return TYPE_SFIXED64;
          case 17: return TYPE_SINT32;
          case 18: return TYPE_SINT64;
          default: return null;
        }
      }
      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Type> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public Type findValueByNumber(int number) {
                return Type.forNumber(number);
              }
            };
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDescriptor().getEnumTypes().get(0);
      }
      private static final Type[] VALUES = values();
      public static Type valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
      private final int value;
      private Type(int value) {
        this.value = value;
      }
      // @@protoc_insertion_point(enum_scope:google.protobuf.FieldDescriptorProto.Type)
    }
    /**
     * Protobuf enum {@code google.protobuf.FieldDescriptorProto.Label}
     */
    public enum Label
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * LABEL_OPTIONAL = 1;
       */
      LABEL_OPTIONAL(1),
      /**
       * LABEL_REQUIRED = 2;
       */
      LABEL_REQUIRED(2),
      /**
       * LABEL_REPEATED = 3;
       */
      LABEL_REPEATED(3),
      ;
      /**
       * LABEL_OPTIONAL = 1;
       */
      public static final int LABEL_OPTIONAL_VALUE = 1;
      /**
       * LABEL_REQUIRED = 2;
       */
      public static final int LABEL_REQUIRED_VALUE = 2;
      /**
       * LABEL_REPEATED = 3;
       */
      public static final int LABEL_REPEATED_VALUE = 3;
      public final int getNumber() {
        return value;
      }
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Label valueOf(int value) {
        return forNumber(value);
      }
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Label forNumber(int value) {
        switch (value) {
          case 1: return LABEL_OPTIONAL;
          case 2: return LABEL_REQUIRED;
          case 3: return LABEL_REPEATED;
          default: return null;
        }
      }
      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Label> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public Label findValueByNumber(int number) {
                return Label.forNumber(number);
              }
            };
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDescriptor().getEnumTypes().get(1);
      }
      private static final Label[] VALUES = values();
      public static Label valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
      private final int value;
      private Label(int value) {
        this.value = value;
      }
      // @@protoc_insertion_point(enum_scope:google.protobuf.FieldDescriptorProto.Label)
    }
    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int NUMBER_FIELD_NUMBER = 3;
    private int number_ = 0;
    /**
     * optional int32 number = 3 [json_name = "number"];
     * @return Whether the number field is set.
     */
    @java.lang.Override
    public boolean hasNumber() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * optional int32 number = 3 [json_name = "number"];
     * @return The number.
     */
    @java.lang.Override
    public int getNumber() {
      return number_;
    }
    public static final int LABEL_FIELD_NUMBER = 4;
    private int label_ = 1;
    /**
     * optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];
     * @return Whether the label field is set.
     */
    @java.lang.Override public boolean hasLabel() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];
     * @return The label.
     */
    @java.lang.Override public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel() {
      com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label result = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.forNumber(label_);
      return result == null ? com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL : result;
    }
    public static final int TYPE_FIELD_NUMBER = 5;
    private int type_ = 1;
    /**
     * optional .google.protobuf.FieldDescriptorProto.Type type = 5 [json_name = "type"];
     * @return Whether the type field is set.
     */
    @java.lang.Override public boolean hasType() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * optional .google.protobuf.FieldDescriptorProto.Type type = 5 [json_name = "type"];
     * @return The type.
     */
    @java.lang.Override public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType() {
      com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type result = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.forNumber(type_);
      return result == null ? com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE : result;
    }
    public static final int TYPE_NAME_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object typeName_ = "";
    /**
     * optional string type_name = 6 [json_name = "typeName"];
     * @return Whether the typeName field is set.
     */
    @java.lang.Override
    public boolean hasTypeName() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * optional string type_name = 6 [json_name = "typeName"];
     * @return The typeName.
     */
    @java.lang.Override
    public java.lang.String getTypeName() {
      java.lang.Object ref = typeName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          typeName_ = s;
        }
        return s;
      }
    }
    /**
     * optional string type_name = 6 [json_name = "typeName"];
     * @return The bytes for typeName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTypeNameBytes() {
      java.lang.Object ref = typeName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        typeName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int EXTENDEE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object extendee_ = "";
    /**
     * optional string extendee = 2 [json_name = "extendee"];
     * @return Whether the extendee field is set.
     */
    @java.lang.Override
    public boolean hasExtendee() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * optional string extendee = 2 [json_name = "extendee"];
     * @return The extendee.
     */
    @java.lang.Override
    public java.lang.String getExtendee() {
      java.lang.Object ref = extendee_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          extendee_ = s;
        }
        return s;
      }
    }
    /**
     * optional string extendee = 2 [json_name = "extendee"];
     * @return The bytes for extendee.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getExtendeeBytes() {
      java.lang.Object ref = extendee_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        extendee_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int DEFAULT_VALUE_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object defaultValue_ = "";
    /**
     * optional string default_value = 7 [json_name = "defaultValue"];
     * @return Whether the defaultValue field is set.
     */
    @java.lang.Override
    public boolean hasDefaultValue() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * optional string default_value = 7 [json_name = "defaultValue"];
     * @return The defaultValue.
     */
    @java.lang.Override
    public java.lang.String getDefaultValue() {
      java.lang.Object ref = defaultValue_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          defaultValue_ = s;
        }
        return s;
      }
    }
    /**
     * optional string default_value = 7 [json_name = "defaultValue"];
     * @return The bytes for defaultValue.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDefaultValueBytes() {
      java.lang.Object ref = defaultValue_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        defaultValue_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int ONEOF_INDEX_FIELD_NUMBER = 9;
    private int oneofIndex_ = 0;
    /**
     * optional int32 oneof_index = 9 [json_name = "oneofIndex"];
     * @return Whether the oneofIndex field is set.
     */
    @java.lang.Override
    public boolean hasOneofIndex() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * optional int32 oneof_index = 9 [json_name = "oneofIndex"];
     * @return The oneofIndex.
     */
    @java.lang.Override
    public int getOneofIndex() {
      return oneofIndex_;
    }
    public static final int JSON_NAME_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private volatile java.lang.Object jsonName_ = "";
    /**
     * optional string json_name = 10 [json_name = "jsonName"];
     * @return Whether the jsonName field is set.
     */
    @java.lang.Override
    public boolean hasJsonName() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * optional string json_name = 10 [json_name = "jsonName"];
     * @return The jsonName.
     */
    @java.lang.Override
    public java.lang.String getJsonName() {
      java.lang.Object ref = jsonName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          jsonName_ = s;
        }
        return s;
      }
    }
    /**
     * optional string json_name = 10 [json_name = "jsonName"];
     * @return The bytes for jsonName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getJsonNameBytes() {
      java.lang.Object ref = jsonName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        jsonName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int OPTIONS_FIELD_NUMBER = 8;
    private com.google.protobuf.DescriptorProtos.FieldOptions options_;
    /**
     * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
     * @return Whether the options field is set.
     */
    @java.lang.Override
    public boolean hasOptions() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
     * @return The options.
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FieldOptions getOptions() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance() : options_;
    }
    /**
     * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder getOptionsOrBuilder() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance() : options_;
    }
    public static final int PROTO3_OPTIONAL_FIELD_NUMBER = 17;
    private boolean proto3Optional_ = false;
    /**
     * optional bool proto3_optional = 17 [json_name = "proto3Optional"];
     * @return Whether the proto3Optional field is set.
     */
    @java.lang.Override
    public boolean hasProto3Optional() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * optional bool proto3_optional = 17 [json_name = "proto3Optional"];
     * @return The proto3Optional.
     */
    @java.lang.Override
    public boolean getProto3Optional() {
      return proto3Optional_;
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      if (hasOptions()) {
        if (!getOptions().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, extendee_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(3, number_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeEnum(4, label_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeEnum(5, type_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, typeName_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, defaultValue_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeMessage(8, getOptions());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeInt32(9, oneofIndex_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, jsonName_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeBool(17, proto3Optional_);
      }
      getUnknownFields().writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, extendee_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, number_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(4, label_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, type_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, typeName_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, defaultValue_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getOptions());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(9, oneofIndex_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, jsonName_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(17, proto3Optional_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.protobuf.DescriptorProtos.FieldDescriptorProto)) {
        return super.equals(obj);
      }
      com.google.protobuf.DescriptorProtos.FieldDescriptorProto other = (com.google.protobuf.DescriptorProtos.FieldDescriptorProto) obj;
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasNumber() != other.hasNumber()) return false;
      if (hasNumber()) {
        if (getNumber()
            != other.getNumber()) return false;
      }
      if (hasLabel() != other.hasLabel()) return false;
      if (hasLabel()) {
        if (label_ != other.label_) return false;
      }
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (type_ != other.type_) return false;
      }
      if (hasTypeName() != other.hasTypeName()) return false;
      if (hasTypeName()) {
        if (!getTypeName()
            .equals(other.getTypeName())) return false;
      }
      if (hasExtendee() != other.hasExtendee()) return false;
      if (hasExtendee()) {
        if (!getExtendee()
            .equals(other.getExtendee())) return false;
      }
      if (hasDefaultValue() != other.hasDefaultValue()) return false;
      if (hasDefaultValue()) {
        if (!getDefaultValue()
            .equals(other.getDefaultValue())) return false;
      }
      if (hasOneofIndex() != other.hasOneofIndex()) return false;
      if (hasOneofIndex()) {
        if (getOneofIndex()
            != other.getOneofIndex()) return false;
      }
      if (hasJsonName() != other.hasJsonName()) return false;
      if (hasJsonName()) {
        if (!getJsonName()
            .equals(other.getJsonName())) return false;
      }
      if (hasOptions() != other.hasOptions()) return false;
      if (hasOptions()) {
        if (!getOptions()
            .equals(other.getOptions())) return false;
      }
      if (hasProto3Optional() != other.hasProto3Optional()) return false;
      if (hasProto3Optional()) {
        if (getProto3Optional()
            != other.getProto3Optional()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasNumber()) {
        hash = (37 * hash) + NUMBER_FIELD_NUMBER;
        hash = (53 * hash) + getNumber();
      }
      if (hasLabel()) {
        hash = (37 * hash) + LABEL_FIELD_NUMBER;
        hash = (53 * hash) + label_;
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + type_;
      }
      if (hasTypeName()) {
        hash = (37 * hash) + TYPE_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getTypeName().hashCode();
      }
      if (hasExtendee()) {
        hash = (37 * hash) + EXTENDEE_FIELD_NUMBER;
        hash = (53 * hash) + getExtendee().hashCode();
      }
      if (hasDefaultValue()) {
        hash = (37 * hash) + DEFAULT_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getDefaultValue().hashCode();
      }
      if (hasOneofIndex()) {
        hash = (37 * hash) + ONEOF_INDEX_FIELD_NUMBER;
        hash = (53 * hash) + getOneofIndex();
      }
      if (hasJsonName()) {
        hash = (37 * hash) + JSON_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getJsonName().hashCode();
      }
      if (hasOptions()) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getOptions().hashCode();
      }
      if (hasProto3Optional()) {
        hash = (37 * hash) + PROTO3_OPTIONAL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getProto3Optional());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FieldDescriptorProto prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.FieldDescriptorProto}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:google.protobuf.FieldDescriptorProto)
        com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.FieldDescriptorProto.class, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder.class);
      }
      // Construct using com.google.protobuf.DescriptorProtos.FieldDescriptorProto.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getOptionsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        number_ = 0;
        label_ = 1;
        type_ = 1;
        typeName_ = "";
        extendee_ = "";
        defaultValue_ = "";
        oneofIndex_ = 0;
        jsonName_ = "";
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        proto3Optional_ = false;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_descriptor;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance();
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto build() {
        com.google.protobuf.DescriptorProtos.FieldDescriptorProto result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto buildPartial() {
        com.google.protobuf.DescriptorProtos.FieldDescriptorProto result = new com.google.protobuf.DescriptorProtos.FieldDescriptorProto(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }
      private void buildPartial0(com.google.protobuf.DescriptorProtos.FieldDescriptorProto result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.number_ = number_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.label_ = label_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.type_ = type_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.typeName_ = typeName_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.extendee_ = extendee_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.defaultValue_ = defaultValue_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.oneofIndex_ = oneofIndex_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.jsonName_ = jsonName_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.options_ = optionsBuilder_ == null
              ? options_
              : optionsBuilder_.build();
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.proto3Optional_ = proto3Optional_;
          to_bitField0_ |= 0x00000400;
        }
        result.bitField0_ |= to_bitField0_;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.FieldDescriptorProto) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.FieldDescriptorProto)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.FieldDescriptorProto other) {
        if (other == com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasNumber()) {
          setNumber(other.getNumber());
        }
        if (other.hasLabel()) {
          setLabel(other.getLabel());
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasTypeName()) {
          typeName_ = other.typeName_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasExtendee()) {
          extendee_ = other.extendee_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasDefaultValue()) {
          defaultValue_ = other.defaultValue_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (other.hasOneofIndex()) {
          setOneofIndex(other.getOneofIndex());
        }
        if (other.hasJsonName()) {
          jsonName_ = other.jsonName_;
          bitField0_ |= 0x00000100;
          onChanged();
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        if (other.hasProto3Optional()) {
          setProto3Optional(other.getProto3Optional());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        if (hasOptions()) {
          if (!getOptions().isInitialized()) {
            return false;
          }
        }
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                extendee_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 18
              case 24: {
                number_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 24
              case 32: {
                int tmpRaw = input.readEnum();
                com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label tmpValue =
                    com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(4, tmpRaw);
                } else {
                  label_ = tmpRaw;
                  bitField0_ |= 0x00000004;
                }
                break;
              } // case 32
              case 40: {
                int tmpRaw = input.readEnum();
                com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type tmpValue =
                    com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(5, tmpRaw);
                } else {
                  type_ = tmpRaw;
                  bitField0_ |= 0x00000008;
                }
                break;
              } // case 40
              case 50: {
                typeName_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 50
              case 58: {
                defaultValue_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 66
              case 72: {
                oneofIndex_ = input.readInt32();
                bitField0_ |= 0x00000080;
                break;
              } // case 72
              case 82: {
                jsonName_ = input.readBytes();
                bitField0_ |= 0x00000100;
                break;
              } // case 82
              case 136: {
                proto3Optional_ = input.readBool();
                bitField0_ |= 0x00000400;
                break;
              } // case 136
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private java.lang.Object name_ = "";
      /**
       * optional string name = 1 [json_name = "name"];
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      private int number_ ;
      /**
       * optional int32 number = 3 [json_name = "number"];
       * @return Whether the number field is set.
       */
      @java.lang.Override
      public boolean hasNumber() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * optional int32 number = 3 [json_name = "number"];
       * @return The number.
       */
      @java.lang.Override
      public int getNumber() {
        return number_;
      }
      /**
       * optional int32 number = 3 [json_name = "number"];
       * @param value The number to set.
       * @return This builder for chaining.
       */
      public Builder setNumber(int value) {
        number_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * optional int32 number = 3 [json_name = "number"];
       * @return This builder for chaining.
       */
      public Builder clearNumber() {
        bitField0_ = (bitField0_ & ~0x00000002);
        number_ = 0;
        onChanged();
        return this;
      }
      private int label_ = 1;
      /**
       * optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];
       * @return Whether the label field is set.
       */
      @java.lang.Override public boolean hasLabel() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];
       * @return The label.
       */
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel() {
        com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label result = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.forNumber(label_);
        return result == null ? com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL : result;
      }
      /**
       * optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];
       * @param value The label to set.
       * @return This builder for chaining.
       */
      public Builder setLabel(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        label_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];
       * @return This builder for chaining.
       */
      public Builder clearLabel() {
        bitField0_ = (bitField0_ & ~0x00000004);
        label_ = 1;
        onChanged();
        return this;
      }
      private int type_ = 1;
      /**
       * optional .google.protobuf.FieldDescriptorProto.Type type = 5 [json_name = "type"];
       * @return Whether the type field is set.
       */
      @java.lang.Override public boolean hasType() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * optional .google.protobuf.FieldDescriptorProto.Type type = 5 [json_name = "type"];
       * @return The type.
       */
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType() {
        com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type result = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.forNumber(type_);
        return result == null ? com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE : result;
      }
      /**
       * optional .google.protobuf.FieldDescriptorProto.Type type = 5 [json_name = "type"];
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000008;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FieldDescriptorProto.Type type = 5 [json_name = "type"];
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000008);
        type_ = 1;
        onChanged();
        return this;
      }
      private java.lang.Object typeName_ = "";
      /**
       * optional string type_name = 6 [json_name = "typeName"];
       * @return Whether the typeName field is set.
       */
      public boolean hasTypeName() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * optional string type_name = 6 [json_name = "typeName"];
       * @return The typeName.
       */
      public java.lang.String getTypeName() {
        java.lang.Object ref = typeName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            typeName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string type_name = 6 [json_name = "typeName"];
       * @return The bytes for typeName.
       */
      public com.google.protobuf.ByteString
          getTypeNameBytes() {
        java.lang.Object ref = typeName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          typeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string type_name = 6 [json_name = "typeName"];
       * @param value The typeName to set.
       * @return This builder for chaining.
       */
      public Builder setTypeName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        typeName_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * optional string type_name = 6 [json_name = "typeName"];
       * @return This builder for chaining.
       */
      public Builder clearTypeName() {
        typeName_ = getDefaultInstance().getTypeName();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * optional string type_name = 6 [json_name = "typeName"];
       * @param value The bytes for typeName to set.
       * @return This builder for chaining.
       */
      public Builder setTypeNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        typeName_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      private java.lang.Object extendee_ = "";
      /**
       * optional string extendee = 2 [json_name = "extendee"];
       * @return Whether the extendee field is set.
       */
      public boolean hasExtendee() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * optional string extendee = 2 [json_name = "extendee"];
       * @return The extendee.
       */
      public java.lang.String getExtendee() {
        java.lang.Object ref = extendee_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            extendee_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string extendee = 2 [json_name = "extendee"];
       * @return The bytes for extendee.
       */
      public com.google.protobuf.ByteString
          getExtendeeBytes() {
        java.lang.Object ref = extendee_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          extendee_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string extendee = 2 [json_name = "extendee"];
       * @param value The extendee to set.
       * @return This builder for chaining.
       */
      public Builder setExtendee(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        extendee_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * optional string extendee = 2 [json_name = "extendee"];
       * @return This builder for chaining.
       */
      public Builder clearExtendee() {
        extendee_ = getDefaultInstance().getExtendee();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * optional string extendee = 2 [json_name = "extendee"];
       * @param value The bytes for extendee to set.
       * @return This builder for chaining.
       */
      public Builder setExtendeeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        extendee_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      private java.lang.Object defaultValue_ = "";
      /**
       * optional string default_value = 7 [json_name = "defaultValue"];
       * @return Whether the defaultValue field is set.
       */
      public boolean hasDefaultValue() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * optional string default_value = 7 [json_name = "defaultValue"];
       * @return The defaultValue.
       */
      public java.lang.String getDefaultValue() {
        java.lang.Object ref = defaultValue_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            defaultValue_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string default_value = 7 [json_name = "defaultValue"];
       * @return The bytes for defaultValue.
       */
      public com.google.protobuf.ByteString
          getDefaultValueBytes() {
        java.lang.Object ref = defaultValue_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          defaultValue_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string default_value = 7 [json_name = "defaultValue"];
       * @param value The defaultValue to set.
       * @return This builder for chaining.
       */
      public Builder setDefaultValue(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        defaultValue_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * optional string default_value = 7 [json_name = "defaultValue"];
       * @return This builder for chaining.
       */
      public Builder clearDefaultValue() {
        defaultValue_ = getDefaultInstance().getDefaultValue();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * optional string default_value = 7 [json_name = "defaultValue"];
       * @param value The bytes for defaultValue to set.
       * @return This builder for chaining.
       */
      public Builder setDefaultValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        defaultValue_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      private int oneofIndex_ ;
      /**
       * optional int32 oneof_index = 9 [json_name = "oneofIndex"];
       * @return Whether the oneofIndex field is set.
       */
      @java.lang.Override
      public boolean hasOneofIndex() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * optional int32 oneof_index = 9 [json_name = "oneofIndex"];
       * @return The oneofIndex.
       */
      @java.lang.Override
      public int getOneofIndex() {
        return oneofIndex_;
      }
      /**
       * optional int32 oneof_index = 9 [json_name = "oneofIndex"];
       * @param value The oneofIndex to set.
       * @return This builder for chaining.
       */
      public Builder setOneofIndex(int value) {
        oneofIndex_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * optional int32 oneof_index = 9 [json_name = "oneofIndex"];
       * @return This builder for chaining.
       */
      public Builder clearOneofIndex() {
        bitField0_ = (bitField0_ & ~0x00000080);
        oneofIndex_ = 0;
        onChanged();
        return this;
      }
      private java.lang.Object jsonName_ = "";
      /**
       * optional string json_name = 10 [json_name = "jsonName"];
       * @return Whether the jsonName field is set.
       */
      public boolean hasJsonName() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * optional string json_name = 10 [json_name = "jsonName"];
       * @return The jsonName.
       */
      public java.lang.String getJsonName() {
        java.lang.Object ref = jsonName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            jsonName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string json_name = 10 [json_name = "jsonName"];
       * @return The bytes for jsonName.
       */
      public com.google.protobuf.ByteString
          getJsonNameBytes() {
        java.lang.Object ref = jsonName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          jsonName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string json_name = 10 [json_name = "jsonName"];
       * @param value The jsonName to set.
       * @return This builder for chaining.
       */
      public Builder setJsonName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        jsonName_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * optional string json_name = 10 [json_name = "jsonName"];
       * @return This builder for chaining.
       */
      public Builder clearJsonName() {
        jsonName_ = getDefaultInstance().getJsonName();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * optional string json_name = 10 [json_name = "jsonName"];
       * @param value The bytes for jsonName to set.
       * @return This builder for chaining.
       */
      public Builder setJsonNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        jsonName_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      private com.google.protobuf.DescriptorProtos.FieldOptions options_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FieldOptions, com.google.protobuf.DescriptorProtos.FieldOptions.Builder, com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder> optionsBuilder_;
      /**
       * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
       * @return Whether the options field is set.
       */
      public boolean hasOptions() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
       * @return The options.
       */
      public com.google.protobuf.DescriptorProtos.FieldOptions getOptions() {
        if (optionsBuilder_ == null) {
          return options_ == null ? com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance() : options_;
        } else {
          return optionsBuilder_.getMessage();
        }
      }
      /**
       * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
       */
      public Builder setOptions(com.google.protobuf.DescriptorProtos.FieldOptions value) {
        if (optionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          options_ = value;
        } else {
          optionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
       */
      public Builder setOptions(
          com.google.protobuf.DescriptorProtos.FieldOptions.Builder builderForValue) {
        if (optionsBuilder_ == null) {
          options_ = builderForValue.build();
        } else {
          optionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
       */
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.FieldOptions value) {
        if (optionsBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            options_ != null &&
            options_ != com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance()) {
            getOptionsBuilder().mergeFrom(value);
          } else {
            options_ = value;
          }
        } else {
          optionsBuilder_.mergeFrom(value);
        }
        if (options_ != null) {
          bitField0_ |= 0x00000200;
          onChanged();
        }
        return this;
      }
      /**
       * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
       */
      public Builder clearOptions() {
        bitField0_ = (bitField0_ & ~0x00000200);
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.FieldOptions.Builder getOptionsBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getOptionsFieldBuilder().getBuilder();
      }
      /**
       * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder getOptionsOrBuilder() {
        if (optionsBuilder_ != null) {
          return optionsBuilder_.getMessageOrBuilder();
        } else {
          return options_ == null ?
              com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance() : options_;
        }
      }
      /**
       * optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FieldOptions, com.google.protobuf.DescriptorProtos.FieldOptions.Builder, com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder> 
          getOptionsFieldBuilder() {
        if (optionsBuilder_ == null) {
          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.FieldOptions, com.google.protobuf.DescriptorProtos.FieldOptions.Builder, com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder>(
                  getOptions(),
                  getParentForChildren(),
                  isClean());
          options_ = null;
        }
        return optionsBuilder_;
      }
      private boolean proto3Optional_ ;
      /**
       * optional bool proto3_optional = 17 [json_name = "proto3Optional"];
       * @return Whether the proto3Optional field is set.
       */
      @java.lang.Override
      public boolean hasProto3Optional() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * optional bool proto3_optional = 17 [json_name = "proto3Optional"];
       * @return The proto3Optional.
       */
      @java.lang.Override
      public boolean getProto3Optional() {
        return proto3Optional_;
      }
      /**
       * optional bool proto3_optional = 17 [json_name = "proto3Optional"];
       * @param value The proto3Optional to set.
       * @return This builder for chaining.
       */
      public Builder setProto3Optional(boolean value) {
        proto3Optional_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * optional bool proto3_optional = 17 [json_name = "proto3Optional"];
       * @return This builder for chaining.
       */
      public Builder clearProto3Optional() {
        bitField0_ = (bitField0_ & ~0x00000400);
        proto3Optional_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:google.protobuf.FieldDescriptorProto)
    }
    // @@protoc_insertion_point(class_scope:google.protobuf.FieldDescriptorProto)
    private static final com.google.protobuf.DescriptorProtos.FieldDescriptorProto DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.FieldDescriptorProto();
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    @java.lang.Deprecated public static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public FieldDescriptorProto parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface OneofDescriptorProtoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.protobuf.OneofDescriptorProto)
      com.google.protobuf.MessageOrBuilder {
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    java.lang.String getName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
     * @return Whether the options field is set.
     */
    boolean hasOptions();
    /**
     * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
     * @return The options.
     */
    com.google.protobuf.DescriptorProtos.OneofOptions getOptions();
    /**
     * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
     */
    com.google.protobuf.DescriptorProtos.OneofOptionsOrBuilder getOptionsOrBuilder();
  }
  /**
   * Protobuf type {@code google.protobuf.OneofDescriptorProto}
   */
  public static final class OneofDescriptorProto extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.protobuf.OneofDescriptorProto)
      OneofDescriptorProtoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use OneofDescriptorProto.newBuilder() to construct.
    private OneofDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private OneofDescriptorProto() {
      name_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new OneofDescriptorProto();
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofDescriptorProto_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofDescriptorProto_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.protobuf.DescriptorProtos.OneofDescriptorProto.class, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder.class);
    }
    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int OPTIONS_FIELD_NUMBER = 2;
    private com.google.protobuf.DescriptorProtos.OneofOptions options_;
    /**
     * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
     * @return Whether the options field is set.
     */
    @java.lang.Override
    public boolean hasOptions() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
     * @return The options.
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.OneofOptions getOptions() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.OneofOptions.getDefaultInstance() : options_;
    }
    /**
     * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.OneofOptionsOrBuilder getOptionsOrBuilder() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.OneofOptions.getDefaultInstance() : options_;
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      if (hasOptions()) {
        if (!getOptions().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getOptions());
      }
      getUnknownFields().writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getOptions());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.protobuf.DescriptorProtos.OneofDescriptorProto)) {
        return super.equals(obj);
      }
      com.google.protobuf.DescriptorProtos.OneofDescriptorProto other = (com.google.protobuf.DescriptorProtos.OneofDescriptorProto) obj;
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasOptions() != other.hasOptions()) return false;
      if (hasOptions()) {
        if (!getOptions()
            .equals(other.getOptions())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasOptions()) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getOptions().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.OneofDescriptorProto prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.OneofDescriptorProto}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:google.protobuf.OneofDescriptorProto)
        com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofDescriptorProto_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofDescriptorProto_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.OneofDescriptorProto.class, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder.class);
      }
      // Construct using com.google.protobuf.DescriptorProtos.OneofDescriptorProto.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getOptionsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_OneofDescriptorProto_descriptor;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.OneofDescriptorProto.getDefaultInstance();
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto build() {
        com.google.protobuf.DescriptorProtos.OneofDescriptorProto result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.OneofDescriptorProto buildPartial() {
        com.google.protobuf.DescriptorProtos.OneofDescriptorProto result = new com.google.protobuf.DescriptorProtos.OneofDescriptorProto(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }
      private void buildPartial0(com.google.protobuf.DescriptorProtos.OneofDescriptorProto result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.options_ = optionsBuilder_ == null
              ? options_
              : optionsBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.OneofDescriptorProto) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.OneofDescriptorProto)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.OneofDescriptorProto other) {
        if (other == com.google.protobuf.DescriptorProtos.OneofDescriptorProto.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        if (hasOptions()) {
          if (!getOptions().isInitialized()) {
            return false;
          }
        }
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private java.lang.Object name_ = "";
      /**
       * optional string name = 1 [json_name = "name"];
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      private com.google.protobuf.DescriptorProtos.OneofOptions options_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.OneofOptions, com.google.protobuf.DescriptorProtos.OneofOptions.Builder, com.google.protobuf.DescriptorProtos.OneofOptionsOrBuilder> optionsBuilder_;
      /**
       * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
       * @return Whether the options field is set.
       */
      public boolean hasOptions() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
       * @return The options.
       */
      public com.google.protobuf.DescriptorProtos.OneofOptions getOptions() {
        if (optionsBuilder_ == null) {
          return options_ == null ? com.google.protobuf.DescriptorProtos.OneofOptions.getDefaultInstance() : options_;
        } else {
          return optionsBuilder_.getMessage();
        }
      }
      /**
       * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
       */
      public Builder setOptions(com.google.protobuf.DescriptorProtos.OneofOptions value) {
        if (optionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          options_ = value;
        } else {
          optionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
       */
      public Builder setOptions(
          com.google.protobuf.DescriptorProtos.OneofOptions.Builder builderForValue) {
        if (optionsBuilder_ == null) {
          options_ = builderForValue.build();
        } else {
          optionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
       */
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.OneofOptions value) {
        if (optionsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            options_ != null &&
            options_ != com.google.protobuf.DescriptorProtos.OneofOptions.getDefaultInstance()) {
            getOptionsBuilder().mergeFrom(value);
          } else {
            options_ = value;
          }
        } else {
          optionsBuilder_.mergeFrom(value);
        }
        if (options_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
       */
      public Builder clearOptions() {
        bitField0_ = (bitField0_ & ~0x00000002);
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.OneofOptions.Builder getOptionsBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getOptionsFieldBuilder().getBuilder();
      }
      /**
       * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.OneofOptionsOrBuilder getOptionsOrBuilder() {
        if (optionsBuilder_ != null) {
          return optionsBuilder_.getMessageOrBuilder();
        } else {
          return options_ == null ?
              com.google.protobuf.DescriptorProtos.OneofOptions.getDefaultInstance() : options_;
        }
      }
      /**
       * optional .google.protobuf.OneofOptions options = 2 [json_name = "options"];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.OneofOptions, com.google.protobuf.DescriptorProtos.OneofOptions.Builder, com.google.protobuf.DescriptorProtos.OneofOptionsOrBuilder> 
          getOptionsFieldBuilder() {
        if (optionsBuilder_ == null) {
          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.OneofOptions, com.google.protobuf.DescriptorProtos.OneofOptions.Builder, com.google.protobuf.DescriptorProtos.OneofOptionsOrBuilder>(
                  getOptions(),
                  getParentForChildren(),
                  isClean());
          options_ = null;
        }
        return optionsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:google.protobuf.OneofDescriptorProto)
    }
    // @@protoc_insertion_point(class_scope:google.protobuf.OneofDescriptorProto)
    private static final com.google.protobuf.DescriptorProtos.OneofDescriptorProto DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.OneofDescriptorProto();
    }
    public static com.google.protobuf.DescriptorProtos.OneofDescriptorProto getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    @java.lang.Deprecated public static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public OneofDescriptorProto parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.OneofDescriptorProto getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface EnumDescriptorProtoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.protobuf.EnumDescriptorProto)
      com.google.protobuf.MessageOrBuilder {
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    java.lang.String getName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
     */
    java.util.List 
        getValueList();
    /**
     * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
     */
    com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getValue(int index);
    /**
     * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
     */
    int getValueCount();
    /**
     * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> 
        getValueOrBuilderList();
    /**
     * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
     */
    com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder getValueOrBuilder(
        int index);
    /**
     * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
     * @return Whether the options field is set.
     */
    boolean hasOptions();
    /**
     * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
     * @return The options.
     */
    com.google.protobuf.DescriptorProtos.EnumOptions getOptions();
    /**
     * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
     */
    com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder getOptionsOrBuilder();
    /**
     * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
     */
    java.util.List 
        getReservedRangeList();
    /**
     * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
     */
    com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange getReservedRange(int index);
    /**
     * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
     */
    int getReservedRangeCount();
    /**
     * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRangeOrBuilder> 
        getReservedRangeOrBuilderList();
    /**
     * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
     */
    com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRangeOrBuilder getReservedRangeOrBuilder(
        int index);
    /**
     * repeated string reserved_name = 5 [json_name = "reservedName"];
     * @return A list containing the reservedName.
     */
    java.util.List
        getReservedNameList();
    /**
     * repeated string reserved_name = 5 [json_name = "reservedName"];
     * @return The count of reservedName.
     */
    int getReservedNameCount();
    /**
     * repeated string reserved_name = 5 [json_name = "reservedName"];
     * @param index The index of the element to return.
     * @return The reservedName at the given index.
     */
    java.lang.String getReservedName(int index);
    /**
     * repeated string reserved_name = 5 [json_name = "reservedName"];
     * @param index The index of the value to return.
     * @return The bytes of the reservedName at the given index.
     */
    com.google.protobuf.ByteString
        getReservedNameBytes(int index);
  }
  /**
   * Protobuf type {@code google.protobuf.EnumDescriptorProto}
   */
  public static final class EnumDescriptorProto extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.protobuf.EnumDescriptorProto)
      EnumDescriptorProtoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EnumDescriptorProto.newBuilder() to construct.
    private EnumDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private EnumDescriptorProto() {
      name_ = "";
      value_ = java.util.Collections.emptyList();
      reservedRange_ = java.util.Collections.emptyList();
      reservedName_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EnumDescriptorProto();
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.protobuf.DescriptorProtos.EnumDescriptorProto.class, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder.class);
    }
    public interface EnumReservedRangeOrBuilder extends
        // @@protoc_insertion_point(interface_extends:google.protobuf.EnumDescriptorProto.EnumReservedRange)
        com.google.protobuf.MessageOrBuilder {
      /**
       * optional int32 start = 1 [json_name = "start"];
       * @return Whether the start field is set.
       */
      boolean hasStart();
      /**
       * optional int32 start = 1 [json_name = "start"];
       * @return The start.
       */
      int getStart();
      /**
       * optional int32 end = 2 [json_name = "end"];
       * @return Whether the end field is set.
       */
      boolean hasEnd();
      /**
       * optional int32 end = 2 [json_name = "end"];
       * @return The end.
       */
      int getEnd();
    }
    /**
     * Protobuf type {@code google.protobuf.EnumDescriptorProto.EnumReservedRange}
     */
    public static final class EnumReservedRange extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:google.protobuf.EnumDescriptorProto.EnumReservedRange)
        EnumReservedRangeOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use EnumReservedRange.newBuilder() to construct.
      private EnumReservedRange(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
        super(builder);
      }
      private EnumReservedRange() {
      }
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new EnumReservedRange();
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_EnumReservedRange_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_EnumReservedRange_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.class, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.Builder.class);
      }
      private int bitField0_;
      public static final int START_FIELD_NUMBER = 1;
      private int start_ = 0;
      /**
       * optional int32 start = 1 [json_name = "start"];
       * @return Whether the start field is set.
       */
      @java.lang.Override
      public boolean hasStart() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional int32 start = 1 [json_name = "start"];
       * @return The start.
       */
      @java.lang.Override
      public int getStart() {
        return start_;
      }
      public static final int END_FIELD_NUMBER = 2;
      private int end_ = 0;
      /**
       * optional int32 end = 2 [json_name = "end"];
       * @return Whether the end field is set.
       */
      @java.lang.Override
      public boolean hasEnd() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * optional int32 end = 2 [json_name = "end"];
       * @return The end.
       */
      @java.lang.Override
      public int getEnd() {
        return end_;
      }
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
        memoizedIsInitialized = 1;
        return true;
      }
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, start_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeInt32(2, end_);
        }
        getUnknownFields().writeTo(output);
      }
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, start_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, end_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange)) {
          return super.equals(obj);
        }
        com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange other = (com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange) obj;
        if (hasStart() != other.hasStart()) return false;
        if (hasStart()) {
          if (getStart()
              != other.getStart()) return false;
        }
        if (hasEnd() != other.hasEnd()) return false;
        if (hasEnd()) {
          if (getEnd()
              != other.getEnd()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStart()) {
          hash = (37 * hash) + START_FIELD_NUMBER;
          hash = (53 * hash) + getStart();
        }
        if (hasEnd()) {
          hash = (37 * hash) + END_FIELD_NUMBER;
          hash = (53 * hash) + getEnd();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }
      public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code google.protobuf.EnumDescriptorProto.EnumReservedRange}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder implements
          // @@protoc_insertion_point(builder_implements:google.protobuf.EnumDescriptorProto.EnumReservedRange)
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRangeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_EnumReservedRange_descriptor;
        }
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_EnumReservedRange_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.class, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.Builder.class);
        }
        // Construct using com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.newBuilder()
        private Builder() {
        }
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          start_ = 0;
          end_ = 0;
          return this;
        }
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_EnumReservedRange_descriptor;
        }
        @java.lang.Override
        public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange getDefaultInstanceForType() {
          return com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.getDefaultInstance();
        }
        @java.lang.Override
        public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange build() {
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        @java.lang.Override
        public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange buildPartial() {
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange result = new com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }
        private void buildPartial0(com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange result) {
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.start_ = start_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.end_ = end_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ |= to_bitField0_;
        }
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange) {
            return mergeFrom((com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange other) {
          if (other == com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.getDefaultInstance()) return this;
          if (other.hasStart()) {
            setStart(other.getStart());
          }
          if (other.hasEnd()) {
            setEnd(other.getEnd());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  start_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  end_ = input.readInt32();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;
        private int start_ ;
        /**
         * optional int32 start = 1 [json_name = "start"];
         * @return Whether the start field is set.
         */
        @java.lang.Override
        public boolean hasStart() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * optional int32 start = 1 [json_name = "start"];
         * @return The start.
         */
        @java.lang.Override
        public int getStart() {
          return start_;
        }
        /**
         * optional int32 start = 1 [json_name = "start"];
         * @param value The start to set.
         * @return This builder for chaining.
         */
        public Builder setStart(int value) {
          start_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * optional int32 start = 1 [json_name = "start"];
         * @return This builder for chaining.
         */
        public Builder clearStart() {
          bitField0_ = (bitField0_ & ~0x00000001);
          start_ = 0;
          onChanged();
          return this;
        }
        private int end_ ;
        /**
         * optional int32 end = 2 [json_name = "end"];
         * @return Whether the end field is set.
         */
        @java.lang.Override
        public boolean hasEnd() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * optional int32 end = 2 [json_name = "end"];
         * @return The end.
         */
        @java.lang.Override
        public int getEnd() {
          return end_;
        }
        /**
         * optional int32 end = 2 [json_name = "end"];
         * @param value The end to set.
         * @return This builder for chaining.
         */
        public Builder setEnd(int value) {
          end_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * optional int32 end = 2 [json_name = "end"];
         * @return This builder for chaining.
         */
        public Builder clearEnd() {
          bitField0_ = (bitField0_ & ~0x00000002);
          end_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
        // @@protoc_insertion_point(builder_scope:google.protobuf.EnumDescriptorProto.EnumReservedRange)
      }
      // @@protoc_insertion_point(class_scope:google.protobuf.EnumDescriptorProto.EnumReservedRange)
      private static final com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange();
      }
      public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
      @java.lang.Deprecated public static final com.google.protobuf.Parser
          PARSER = new com.google.protobuf.AbstractParser() {
        @java.lang.Override
        public EnumReservedRange parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };
      public static com.google.protobuf.Parser parser() {
        return PARSER;
      }
      @java.lang.Override
      public com.google.protobuf.Parser getParserForType() {
        return PARSER;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }
    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int VALUE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List value_;
    /**
     * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
     */
    @java.lang.Override
    public java.util.List getValueList() {
      return value_;
    }
    /**
     * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> 
        getValueOrBuilderList() {
      return value_;
    }
    /**
     * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
     */
    @java.lang.Override
    public int getValueCount() {
      return value_.size();
    }
    /**
     * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getValue(int index) {
      return value_.get(index);
    }
    /**
     * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder getValueOrBuilder(
        int index) {
      return value_.get(index);
    }
    public static final int OPTIONS_FIELD_NUMBER = 3;
    private com.google.protobuf.DescriptorProtos.EnumOptions options_;
    /**
     * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
     * @return Whether the options field is set.
     */
    @java.lang.Override
    public boolean hasOptions() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
     * @return The options.
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumOptions getOptions() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance() : options_;
    }
    /**
     * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder getOptionsOrBuilder() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance() : options_;
    }
    public static final int RESERVED_RANGE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List reservedRange_;
    /**
     * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
     */
    @java.lang.Override
    public java.util.List getReservedRangeList() {
      return reservedRange_;
    }
    /**
     * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRangeOrBuilder> 
        getReservedRangeOrBuilderList() {
      return reservedRange_;
    }
    /**
     * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
     */
    @java.lang.Override
    public int getReservedRangeCount() {
      return reservedRange_.size();
    }
    /**
     * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange getReservedRange(int index) {
      return reservedRange_.get(index);
    }
    /**
     * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRangeOrBuilder getReservedRangeOrBuilder(
        int index) {
      return reservedRange_.get(index);
    }
    public static final int RESERVED_NAME_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList reservedName_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * repeated string reserved_name = 5 [json_name = "reservedName"];
     * @return A list containing the reservedName.
     */
    public com.google.protobuf.ProtocolStringList
        getReservedNameList() {
      return reservedName_;
    }
    /**
     * repeated string reserved_name = 5 [json_name = "reservedName"];
     * @return The count of reservedName.
     */
    public int getReservedNameCount() {
      return reservedName_.size();
    }
    /**
     * repeated string reserved_name = 5 [json_name = "reservedName"];
     * @param index The index of the element to return.
     * @return The reservedName at the given index.
     */
    public java.lang.String getReservedName(int index) {
      return reservedName_.get(index);
    }
    /**
     * repeated string reserved_name = 5 [json_name = "reservedName"];
     * @param index The index of the value to return.
     * @return The bytes of the reservedName at the given index.
     */
    public com.google.protobuf.ByteString
        getReservedNameBytes(int index) {
      return reservedName_.getByteString(index);
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      for (int i = 0; i < getValueCount(); i++) {
        if (!getValue(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasOptions()) {
        if (!getOptions().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      for (int i = 0; i < value_.size(); i++) {
        output.writeMessage(2, value_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(3, getOptions());
      }
      for (int i = 0; i < reservedRange_.size(); i++) {
        output.writeMessage(4, reservedRange_.get(i));
      }
      for (int i = 0; i < reservedName_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, reservedName_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      for (int i = 0; i < value_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, value_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getOptions());
      }
      for (int i = 0; i < reservedRange_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, reservedRange_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < reservedName_.size(); i++) {
          dataSize += computeStringSizeNoTag(reservedName_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getReservedNameList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.protobuf.DescriptorProtos.EnumDescriptorProto)) {
        return super.equals(obj);
      }
      com.google.protobuf.DescriptorProtos.EnumDescriptorProto other = (com.google.protobuf.DescriptorProtos.EnumDescriptorProto) obj;
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (!getValueList()
          .equals(other.getValueList())) return false;
      if (hasOptions() != other.hasOptions()) return false;
      if (hasOptions()) {
        if (!getOptions()
            .equals(other.getOptions())) return false;
      }
      if (!getReservedRangeList()
          .equals(other.getReservedRangeList())) return false;
      if (!getReservedNameList()
          .equals(other.getReservedNameList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (getValueCount() > 0) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValueList().hashCode();
      }
      if (hasOptions()) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getOptions().hashCode();
      }
      if (getReservedRangeCount() > 0) {
        hash = (37 * hash) + RESERVED_RANGE_FIELD_NUMBER;
        hash = (53 * hash) + getReservedRangeList().hashCode();
      }
      if (getReservedNameCount() > 0) {
        hash = (37 * hash) + RESERVED_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getReservedNameList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumDescriptorProto prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.EnumDescriptorProto}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:google.protobuf.EnumDescriptorProto)
        com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.EnumDescriptorProto.class, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder.class);
      }
      // Construct using com.google.protobuf.DescriptorProtos.EnumDescriptorProto.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getValueFieldBuilder();
          getOptionsFieldBuilder();
          getReservedRangeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        if (valueBuilder_ == null) {
          value_ = java.util.Collections.emptyList();
        } else {
          value_ = null;
          valueBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        if (reservedRangeBuilder_ == null) {
          reservedRange_ = java.util.Collections.emptyList();
        } else {
          reservedRange_ = null;
          reservedRangeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        reservedName_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_descriptor;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance();
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto build() {
        com.google.protobuf.DescriptorProtos.EnumDescriptorProto result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto buildPartial() {
        com.google.protobuf.DescriptorProtos.EnumDescriptorProto result = new com.google.protobuf.DescriptorProtos.EnumDescriptorProto(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }
      private void buildPartialRepeatedFields(com.google.protobuf.DescriptorProtos.EnumDescriptorProto result) {
        if (valueBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            value_ = java.util.Collections.unmodifiableList(value_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.value_ = value_;
        } else {
          result.value_ = valueBuilder_.build();
        }
        if (reservedRangeBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            reservedRange_ = java.util.Collections.unmodifiableList(reservedRange_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.reservedRange_ = reservedRange_;
        } else {
          result.reservedRange_ = reservedRangeBuilder_.build();
        }
      }
      private void buildPartial0(com.google.protobuf.DescriptorProtos.EnumDescriptorProto result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.options_ = optionsBuilder_ == null
              ? options_
              : optionsBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          reservedName_.makeImmutable();
          result.reservedName_ = reservedName_;
        }
        result.bitField0_ |= to_bitField0_;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.EnumDescriptorProto) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.EnumDescriptorProto)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumDescriptorProto other) {
        if (other == com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (valueBuilder_ == null) {
          if (!other.value_.isEmpty()) {
            if (value_.isEmpty()) {
              value_ = other.value_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureValueIsMutable();
              value_.addAll(other.value_);
            }
            onChanged();
          }
        } else {
          if (!other.value_.isEmpty()) {
            if (valueBuilder_.isEmpty()) {
              valueBuilder_.dispose();
              valueBuilder_ = null;
              value_ = other.value_;
              bitField0_ = (bitField0_ & ~0x00000002);
              valueBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getValueFieldBuilder() : null;
            } else {
              valueBuilder_.addAllMessages(other.value_);
            }
          }
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        if (reservedRangeBuilder_ == null) {
          if (!other.reservedRange_.isEmpty()) {
            if (reservedRange_.isEmpty()) {
              reservedRange_ = other.reservedRange_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureReservedRangeIsMutable();
              reservedRange_.addAll(other.reservedRange_);
            }
            onChanged();
          }
        } else {
          if (!other.reservedRange_.isEmpty()) {
            if (reservedRangeBuilder_.isEmpty()) {
              reservedRangeBuilder_.dispose();
              reservedRangeBuilder_ = null;
              reservedRange_ = other.reservedRange_;
              bitField0_ = (bitField0_ & ~0x00000008);
              reservedRangeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getReservedRangeFieldBuilder() : null;
            } else {
              reservedRangeBuilder_.addAllMessages(other.reservedRange_);
            }
          }
        }
        if (!other.reservedName_.isEmpty()) {
          if (reservedName_.isEmpty()) {
            reservedName_ = other.reservedName_;
            bitField0_ |= 0x00000010;
          } else {
            ensureReservedNameIsMutable();
            reservedName_.addAll(other.reservedName_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getValueCount(); i++) {
          if (!getValue(i).isInitialized()) {
            return false;
          }
        }
        if (hasOptions()) {
          if (!getOptions().isInitialized()) {
            return false;
          }
        }
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.PARSER,
                        extensionRegistry);
                if (valueBuilder_ == null) {
                  ensureValueIsMutable();
                  value_.add(m);
                } else {
                  valueBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.PARSER,
                        extensionRegistry);
                if (reservedRangeBuilder_ == null) {
                  ensureReservedRangeIsMutable();
                  reservedRange_.add(m);
                } else {
                  reservedRangeBuilder_.addMessage(m);
                }
                break;
              } // case 34
              case 42: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureReservedNameIsMutable();
                reservedName_.add(bs);
                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private java.lang.Object name_ = "";
      /**
       * optional string name = 1 [json_name = "name"];
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      private java.util.List value_ =
        java.util.Collections.emptyList();
      private void ensureValueIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          value_ = new java.util.ArrayList(value_);
          bitField0_ |= 0x00000002;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> valueBuilder_;
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public java.util.List getValueList() {
        if (valueBuilder_ == null) {
          return java.util.Collections.unmodifiableList(value_);
        } else {
          return valueBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public int getValueCount() {
        if (valueBuilder_ == null) {
          return value_.size();
        } else {
          return valueBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getValue(int index) {
        if (valueBuilder_ == null) {
          return value_.get(index);
        } else {
          return valueBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public Builder setValue(
          int index, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto value) {
        if (valueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureValueIsMutable();
          value_.set(index, value);
          onChanged();
        } else {
          valueBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public Builder setValue(
          int index, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder builderForValue) {
        if (valueBuilder_ == null) {
          ensureValueIsMutable();
          value_.set(index, builderForValue.build());
          onChanged();
        } else {
          valueBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public Builder addValue(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto value) {
        if (valueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureValueIsMutable();
          value_.add(value);
          onChanged();
        } else {
          valueBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public Builder addValue(
          int index, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto value) {
        if (valueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureValueIsMutable();
          value_.add(index, value);
          onChanged();
        } else {
          valueBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public Builder addValue(
          com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder builderForValue) {
        if (valueBuilder_ == null) {
          ensureValueIsMutable();
          value_.add(builderForValue.build());
          onChanged();
        } else {
          valueBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public Builder addValue(
          int index, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder builderForValue) {
        if (valueBuilder_ == null) {
          ensureValueIsMutable();
          value_.add(index, builderForValue.build());
          onChanged();
        } else {
          valueBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public Builder addAllValue(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> values) {
        if (valueBuilder_ == null) {
          ensureValueIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, value_);
          onChanged();
        } else {
          valueBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public Builder clearValue() {
        if (valueBuilder_ == null) {
          value_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          valueBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public Builder removeValue(int index) {
        if (valueBuilder_ == null) {
          ensureValueIsMutable();
          value_.remove(index);
          onChanged();
        } else {
          valueBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder getValueBuilder(
          int index) {
        return getValueFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder getValueOrBuilder(
          int index) {
        if (valueBuilder_ == null) {
          return value_.get(index);  } else {
          return valueBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> 
           getValueOrBuilderList() {
        if (valueBuilder_ != null) {
          return valueBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(value_);
        }
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder addValueBuilder() {
        return getValueFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder addValueBuilder(
          int index) {
        return getValueFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.EnumValueDescriptorProto value = 2 [json_name = "value"];
       */
      public java.util.List 
           getValueBuilderList() {
        return getValueFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> 
          getValueFieldBuilder() {
        if (valueBuilder_ == null) {
          valueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder>(
                  value_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        return valueBuilder_;
      }
      private com.google.protobuf.DescriptorProtos.EnumOptions options_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.EnumOptions, com.google.protobuf.DescriptorProtos.EnumOptions.Builder, com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder> optionsBuilder_;
      /**
       * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
       * @return Whether the options field is set.
       */
      public boolean hasOptions() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
       * @return The options.
       */
      public com.google.protobuf.DescriptorProtos.EnumOptions getOptions() {
        if (optionsBuilder_ == null) {
          return options_ == null ? com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance() : options_;
        } else {
          return optionsBuilder_.getMessage();
        }
      }
      /**
       * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
       */
      public Builder setOptions(com.google.protobuf.DescriptorProtos.EnumOptions value) {
        if (optionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          options_ = value;
        } else {
          optionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
       */
      public Builder setOptions(
          com.google.protobuf.DescriptorProtos.EnumOptions.Builder builderForValue) {
        if (optionsBuilder_ == null) {
          options_ = builderForValue.build();
        } else {
          optionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
       */
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.EnumOptions value) {
        if (optionsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            options_ != null &&
            options_ != com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance()) {
            getOptionsBuilder().mergeFrom(value);
          } else {
            options_ = value;
          }
        } else {
          optionsBuilder_.mergeFrom(value);
        }
        if (options_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
       */
      public Builder clearOptions() {
        bitField0_ = (bitField0_ & ~0x00000004);
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.EnumOptions.Builder getOptionsBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getOptionsFieldBuilder().getBuilder();
      }
      /**
       * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder getOptionsOrBuilder() {
        if (optionsBuilder_ != null) {
          return optionsBuilder_.getMessageOrBuilder();
        } else {
          return options_ == null ?
              com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance() : options_;
        }
      }
      /**
       * optional .google.protobuf.EnumOptions options = 3 [json_name = "options"];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.EnumOptions, com.google.protobuf.DescriptorProtos.EnumOptions.Builder, com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder> 
          getOptionsFieldBuilder() {
        if (optionsBuilder_ == null) {
          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.EnumOptions, com.google.protobuf.DescriptorProtos.EnumOptions.Builder, com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder>(
                  getOptions(),
                  getParentForChildren(),
                  isClean());
          options_ = null;
        }
        return optionsBuilder_;
      }
      private java.util.List reservedRange_ =
        java.util.Collections.emptyList();
      private void ensureReservedRangeIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          reservedRange_ = new java.util.ArrayList(reservedRange_);
          bitField0_ |= 0x00000008;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRangeOrBuilder> reservedRangeBuilder_;
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public java.util.List getReservedRangeList() {
        if (reservedRangeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(reservedRange_);
        } else {
          return reservedRangeBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public int getReservedRangeCount() {
        if (reservedRangeBuilder_ == null) {
          return reservedRange_.size();
        } else {
          return reservedRangeBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange getReservedRange(int index) {
        if (reservedRangeBuilder_ == null) {
          return reservedRange_.get(index);
        } else {
          return reservedRangeBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public Builder setReservedRange(
          int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange value) {
        if (reservedRangeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReservedRangeIsMutable();
          reservedRange_.set(index, value);
          onChanged();
        } else {
          reservedRangeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public Builder setReservedRange(
          int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.Builder builderForValue) {
        if (reservedRangeBuilder_ == null) {
          ensureReservedRangeIsMutable();
          reservedRange_.set(index, builderForValue.build());
          onChanged();
        } else {
          reservedRangeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public Builder addReservedRange(com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange value) {
        if (reservedRangeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReservedRangeIsMutable();
          reservedRange_.add(value);
          onChanged();
        } else {
          reservedRangeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public Builder addReservedRange(
          int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange value) {
        if (reservedRangeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReservedRangeIsMutable();
          reservedRange_.add(index, value);
          onChanged();
        } else {
          reservedRangeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public Builder addReservedRange(
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.Builder builderForValue) {
        if (reservedRangeBuilder_ == null) {
          ensureReservedRangeIsMutable();
          reservedRange_.add(builderForValue.build());
          onChanged();
        } else {
          reservedRangeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public Builder addReservedRange(
          int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.Builder builderForValue) {
        if (reservedRangeBuilder_ == null) {
          ensureReservedRangeIsMutable();
          reservedRange_.add(index, builderForValue.build());
          onChanged();
        } else {
          reservedRangeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public Builder addAllReservedRange(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange> values) {
        if (reservedRangeBuilder_ == null) {
          ensureReservedRangeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, reservedRange_);
          onChanged();
        } else {
          reservedRangeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public Builder clearReservedRange() {
        if (reservedRangeBuilder_ == null) {
          reservedRange_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          reservedRangeBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public Builder removeReservedRange(int index) {
        if (reservedRangeBuilder_ == null) {
          ensureReservedRangeIsMutable();
          reservedRange_.remove(index);
          onChanged();
        } else {
          reservedRangeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.Builder getReservedRangeBuilder(
          int index) {
        return getReservedRangeFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRangeOrBuilder getReservedRangeOrBuilder(
          int index) {
        if (reservedRangeBuilder_ == null) {
          return reservedRange_.get(index);  } else {
          return reservedRangeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRangeOrBuilder> 
           getReservedRangeOrBuilderList() {
        if (reservedRangeBuilder_ != null) {
          return reservedRangeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(reservedRange_);
        }
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.Builder addReservedRangeBuilder() {
        return getReservedRangeFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.Builder addReservedRangeBuilder(
          int index) {
        return getReservedRangeFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4 [json_name = "reservedRange"];
       */
      public java.util.List 
           getReservedRangeBuilderList() {
        return getReservedRangeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRangeOrBuilder> 
          getReservedRangeFieldBuilder() {
        if (reservedRangeBuilder_ == null) {
          reservedRangeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRange.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.EnumReservedRangeOrBuilder>(
                  reservedRange_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          reservedRange_ = null;
        }
        return reservedRangeBuilder_;
      }
      private com.google.protobuf.LazyStringArrayList reservedName_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureReservedNameIsMutable() {
        if (!reservedName_.isModifiable()) {
          reservedName_ = new com.google.protobuf.LazyStringArrayList(reservedName_);
        }
        bitField0_ |= 0x00000010;
      }
      /**
       * repeated string reserved_name = 5 [json_name = "reservedName"];
       * @return A list containing the reservedName.
       */
      public com.google.protobuf.ProtocolStringList
          getReservedNameList() {
        reservedName_.makeImmutable();
        return reservedName_;
      }
      /**
       * repeated string reserved_name = 5 [json_name = "reservedName"];
       * @return The count of reservedName.
       */
      public int getReservedNameCount() {
        return reservedName_.size();
      }
      /**
       * repeated string reserved_name = 5 [json_name = "reservedName"];
       * @param index The index of the element to return.
       * @return The reservedName at the given index.
       */
      public java.lang.String getReservedName(int index) {
        return reservedName_.get(index);
      }
      /**
       * repeated string reserved_name = 5 [json_name = "reservedName"];
       * @param index The index of the value to return.
       * @return The bytes of the reservedName at the given index.
       */
      public com.google.protobuf.ByteString
          getReservedNameBytes(int index) {
        return reservedName_.getByteString(index);
      }
      /**
       * repeated string reserved_name = 5 [json_name = "reservedName"];
       * @param index The index to set the value at.
       * @param value The reservedName to set.
       * @return This builder for chaining.
       */
      public Builder setReservedName(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureReservedNameIsMutable();
        reservedName_.set(index, value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * repeated string reserved_name = 5 [json_name = "reservedName"];
       * @param value The reservedName to add.
       * @return This builder for chaining.
       */
      public Builder addReservedName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureReservedNameIsMutable();
        reservedName_.add(value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * repeated string reserved_name = 5 [json_name = "reservedName"];
       * @param values The reservedName to add.
       * @return This builder for chaining.
       */
      public Builder addAllReservedName(
          java.lang.Iterable values) {
        ensureReservedNameIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, reservedName_);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * repeated string reserved_name = 5 [json_name = "reservedName"];
       * @return This builder for chaining.
       */
      public Builder clearReservedName() {
        reservedName_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);;
        onChanged();
        return this;
      }
      /**
       * repeated string reserved_name = 5 [json_name = "reservedName"];
       * @param value The bytes of the reservedName to add.
       * @return This builder for chaining.
       */
      public Builder addReservedNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureReservedNameIsMutable();
        reservedName_.add(value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:google.protobuf.EnumDescriptorProto)
    }
    // @@protoc_insertion_point(class_scope:google.protobuf.EnumDescriptorProto)
    private static final com.google.protobuf.DescriptorProtos.EnumDescriptorProto DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.EnumDescriptorProto();
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    @java.lang.Deprecated public static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public EnumDescriptorProto parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface EnumValueDescriptorProtoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.protobuf.EnumValueDescriptorProto)
      com.google.protobuf.MessageOrBuilder {
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    java.lang.String getName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * optional int32 number = 2 [json_name = "number"];
     * @return Whether the number field is set.
     */
    boolean hasNumber();
    /**
     * optional int32 number = 2 [json_name = "number"];
     * @return The number.
     */
    int getNumber();
    /**
     * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
     * @return Whether the options field is set.
     */
    boolean hasOptions();
    /**
     * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
     * @return The options.
     */
    com.google.protobuf.DescriptorProtos.EnumValueOptions getOptions();
    /**
     * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
     */
    com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder getOptionsOrBuilder();
  }
  /**
   * Protobuf type {@code google.protobuf.EnumValueDescriptorProto}
   */
  public static final class EnumValueDescriptorProto extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.protobuf.EnumValueDescriptorProto)
      EnumValueDescriptorProtoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EnumValueDescriptorProto.newBuilder() to construct.
    private EnumValueDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private EnumValueDescriptorProto() {
      name_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EnumValueDescriptorProto();
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.class, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder.class);
    }
    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int NUMBER_FIELD_NUMBER = 2;
    private int number_ = 0;
    /**
     * optional int32 number = 2 [json_name = "number"];
     * @return Whether the number field is set.
     */
    @java.lang.Override
    public boolean hasNumber() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * optional int32 number = 2 [json_name = "number"];
     * @return The number.
     */
    @java.lang.Override
    public int getNumber() {
      return number_;
    }
    public static final int OPTIONS_FIELD_NUMBER = 3;
    private com.google.protobuf.DescriptorProtos.EnumValueOptions options_;
    /**
     * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
     * @return Whether the options field is set.
     */
    @java.lang.Override
    public boolean hasOptions() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
     * @return The options.
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumValueOptions getOptions() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance() : options_;
    }
    /**
     * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder getOptionsOrBuilder() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance() : options_;
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      if (hasOptions()) {
        if (!getOptions().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(2, number_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getOptions());
      }
      getUnknownFields().writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, number_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getOptions());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto)) {
        return super.equals(obj);
      }
      com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto other = (com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto) obj;
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasNumber() != other.hasNumber()) return false;
      if (hasNumber()) {
        if (getNumber()
            != other.getNumber()) return false;
      }
      if (hasOptions() != other.hasOptions()) return false;
      if (hasOptions()) {
        if (!getOptions()
            .equals(other.getOptions())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasNumber()) {
        hash = (37 * hash) + NUMBER_FIELD_NUMBER;
        hash = (53 * hash) + getNumber();
      }
      if (hasOptions()) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getOptions().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.EnumValueDescriptorProto}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:google.protobuf.EnumValueDescriptorProto)
        com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.class, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder.class);
      }
      // Construct using com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getOptionsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        number_ = 0;
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_descriptor;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.getDefaultInstance();
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto build() {
        com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto buildPartial() {
        com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto result = new com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }
      private void buildPartial0(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.number_ = number_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.options_ = optionsBuilder_ == null
              ? options_
              : optionsBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        result.bitField0_ |= to_bitField0_;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto other) {
        if (other == com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasNumber()) {
          setNumber(other.getNumber());
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        if (hasOptions()) {
          if (!getOptions().isInitialized()) {
            return false;
          }
        }
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                number_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                input.readMessage(
                    getOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private java.lang.Object name_ = "";
      /**
       * optional string name = 1 [json_name = "name"];
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      private int number_ ;
      /**
       * optional int32 number = 2 [json_name = "number"];
       * @return Whether the number field is set.
       */
      @java.lang.Override
      public boolean hasNumber() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * optional int32 number = 2 [json_name = "number"];
       * @return The number.
       */
      @java.lang.Override
      public int getNumber() {
        return number_;
      }
      /**
       * optional int32 number = 2 [json_name = "number"];
       * @param value The number to set.
       * @return This builder for chaining.
       */
      public Builder setNumber(int value) {
        number_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * optional int32 number = 2 [json_name = "number"];
       * @return This builder for chaining.
       */
      public Builder clearNumber() {
        bitField0_ = (bitField0_ & ~0x00000002);
        number_ = 0;
        onChanged();
        return this;
      }
      private com.google.protobuf.DescriptorProtos.EnumValueOptions options_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.EnumValueOptions, com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder, com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder> optionsBuilder_;
      /**
       * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
       * @return Whether the options field is set.
       */
      public boolean hasOptions() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
       * @return The options.
       */
      public com.google.protobuf.DescriptorProtos.EnumValueOptions getOptions() {
        if (optionsBuilder_ == null) {
          return options_ == null ? com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance() : options_;
        } else {
          return optionsBuilder_.getMessage();
        }
      }
      /**
       * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
       */
      public Builder setOptions(com.google.protobuf.DescriptorProtos.EnumValueOptions value) {
        if (optionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          options_ = value;
        } else {
          optionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
       */
      public Builder setOptions(
          com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder builderForValue) {
        if (optionsBuilder_ == null) {
          options_ = builderForValue.build();
        } else {
          optionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
       */
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.EnumValueOptions value) {
        if (optionsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            options_ != null &&
            options_ != com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance()) {
            getOptionsBuilder().mergeFrom(value);
          } else {
            options_ = value;
          }
        } else {
          optionsBuilder_.mergeFrom(value);
        }
        if (options_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
       */
      public Builder clearOptions() {
        bitField0_ = (bitField0_ & ~0x00000004);
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder getOptionsBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getOptionsFieldBuilder().getBuilder();
      }
      /**
       * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder getOptionsOrBuilder() {
        if (optionsBuilder_ != null) {
          return optionsBuilder_.getMessageOrBuilder();
        } else {
          return options_ == null ?
              com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance() : options_;
        }
      }
      /**
       * optional .google.protobuf.EnumValueOptions options = 3 [json_name = "options"];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.EnumValueOptions, com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder, com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder> 
          getOptionsFieldBuilder() {
        if (optionsBuilder_ == null) {
          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.EnumValueOptions, com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder, com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder>(
                  getOptions(),
                  getParentForChildren(),
                  isClean());
          options_ = null;
        }
        return optionsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:google.protobuf.EnumValueDescriptorProto)
    }
    // @@protoc_insertion_point(class_scope:google.protobuf.EnumValueDescriptorProto)
    private static final com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    @java.lang.Deprecated public static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public EnumValueDescriptorProto parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ServiceDescriptorProtoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.protobuf.ServiceDescriptorProto)
      com.google.protobuf.MessageOrBuilder {
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    java.lang.String getName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
     */
    java.util.List 
        getMethodList();
    /**
     * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
     */
    com.google.protobuf.DescriptorProtos.MethodDescriptorProto getMethod(int index);
    /**
     * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
     */
    int getMethodCount();
    /**
     * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> 
        getMethodOrBuilderList();
    /**
     * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
     */
    com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder getMethodOrBuilder(
        int index);
    /**
     * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
     * @return Whether the options field is set.
     */
    boolean hasOptions();
    /**
     * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
     * @return The options.
     */
    com.google.protobuf.DescriptorProtos.ServiceOptions getOptions();
    /**
     * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
     */
    com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder getOptionsOrBuilder();
  }
  /**
   * Protobuf type {@code google.protobuf.ServiceDescriptorProto}
   */
  public static final class ServiceDescriptorProto extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.protobuf.ServiceDescriptorProto)
      ServiceDescriptorProtoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServiceDescriptorProto.newBuilder() to construct.
    private ServiceDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ServiceDescriptorProto() {
      name_ = "";
      method_ = java.util.Collections.emptyList();
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ServiceDescriptorProto();
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.class, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder.class);
    }
    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int METHOD_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List method_;
    /**
     * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
     */
    @java.lang.Override
    public java.util.List getMethodList() {
      return method_;
    }
    /**
     * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> 
        getMethodOrBuilderList() {
      return method_;
    }
    /**
     * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
     */
    @java.lang.Override
    public int getMethodCount() {
      return method_.size();
    }
    /**
     * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getMethod(int index) {
      return method_.get(index);
    }
    /**
     * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder getMethodOrBuilder(
        int index) {
      return method_.get(index);
    }
    public static final int OPTIONS_FIELD_NUMBER = 3;
    private com.google.protobuf.DescriptorProtos.ServiceOptions options_;
    /**
     * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
     * @return Whether the options field is set.
     */
    @java.lang.Override
    public boolean hasOptions() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
     * @return The options.
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.ServiceOptions getOptions() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance() : options_;
    }
    /**
     * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder getOptionsOrBuilder() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance() : options_;
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      for (int i = 0; i < getMethodCount(); i++) {
        if (!getMethod(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasOptions()) {
        if (!getOptions().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      for (int i = 0; i < method_.size(); i++) {
        output.writeMessage(2, method_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(3, getOptions());
      }
      getUnknownFields().writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      for (int i = 0; i < method_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, method_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getOptions());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.protobuf.DescriptorProtos.ServiceDescriptorProto)) {
        return super.equals(obj);
      }
      com.google.protobuf.DescriptorProtos.ServiceDescriptorProto other = (com.google.protobuf.DescriptorProtos.ServiceDescriptorProto) obj;
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (!getMethodList()
          .equals(other.getMethodList())) return false;
      if (hasOptions() != other.hasOptions()) return false;
      if (hasOptions()) {
        if (!getOptions()
            .equals(other.getOptions())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (getMethodCount() > 0) {
        hash = (37 * hash) + METHOD_FIELD_NUMBER;
        hash = (53 * hash) + getMethodList().hashCode();
      }
      if (hasOptions()) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getOptions().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.ServiceDescriptorProto}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:google.protobuf.ServiceDescriptorProto)
        com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.class, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder.class);
      }
      // Construct using com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMethodFieldBuilder();
          getOptionsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        if (methodBuilder_ == null) {
          method_ = java.util.Collections.emptyList();
        } else {
          method_ = null;
          methodBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_descriptor;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.getDefaultInstance();
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto build() {
        com.google.protobuf.DescriptorProtos.ServiceDescriptorProto result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto buildPartial() {
        com.google.protobuf.DescriptorProtos.ServiceDescriptorProto result = new com.google.protobuf.DescriptorProtos.ServiceDescriptorProto(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }
      private void buildPartialRepeatedFields(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto result) {
        if (methodBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            method_ = java.util.Collections.unmodifiableList(method_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.method_ = method_;
        } else {
          result.method_ = methodBuilder_.build();
        }
      }
      private void buildPartial0(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.options_ = optionsBuilder_ == null
              ? options_
              : optionsBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.ServiceDescriptorProto) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.ServiceDescriptorProto)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto other) {
        if (other == com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (methodBuilder_ == null) {
          if (!other.method_.isEmpty()) {
            if (method_.isEmpty()) {
              method_ = other.method_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureMethodIsMutable();
              method_.addAll(other.method_);
            }
            onChanged();
          }
        } else {
          if (!other.method_.isEmpty()) {
            if (methodBuilder_.isEmpty()) {
              methodBuilder_.dispose();
              methodBuilder_ = null;
              method_ = other.method_;
              bitField0_ = (bitField0_ & ~0x00000002);
              methodBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMethodFieldBuilder() : null;
            } else {
              methodBuilder_.addAllMessages(other.method_);
            }
          }
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getMethodCount(); i++) {
          if (!getMethod(i).isInitialized()) {
            return false;
          }
        }
        if (hasOptions()) {
          if (!getOptions().isInitialized()) {
            return false;
          }
        }
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.DescriptorProtos.MethodDescriptorProto m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.MethodDescriptorProto.PARSER,
                        extensionRegistry);
                if (methodBuilder_ == null) {
                  ensureMethodIsMutable();
                  method_.add(m);
                } else {
                  methodBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private java.lang.Object name_ = "";
      /**
       * optional string name = 1 [json_name = "name"];
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      private java.util.List method_ =
        java.util.Collections.emptyList();
      private void ensureMethodIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          method_ = new java.util.ArrayList(method_);
          bitField0_ |= 0x00000002;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.MethodDescriptorProto, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> methodBuilder_;
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public java.util.List getMethodList() {
        if (methodBuilder_ == null) {
          return java.util.Collections.unmodifiableList(method_);
        } else {
          return methodBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public int getMethodCount() {
        if (methodBuilder_ == null) {
          return method_.size();
        } else {
          return methodBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getMethod(int index) {
        if (methodBuilder_ == null) {
          return method_.get(index);
        } else {
          return methodBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public Builder setMethod(
          int index, com.google.protobuf.DescriptorProtos.MethodDescriptorProto value) {
        if (methodBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMethodIsMutable();
          method_.set(index, value);
          onChanged();
        } else {
          methodBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public Builder setMethod(
          int index, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder builderForValue) {
        if (methodBuilder_ == null) {
          ensureMethodIsMutable();
          method_.set(index, builderForValue.build());
          onChanged();
        } else {
          methodBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public Builder addMethod(com.google.protobuf.DescriptorProtos.MethodDescriptorProto value) {
        if (methodBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMethodIsMutable();
          method_.add(value);
          onChanged();
        } else {
          methodBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public Builder addMethod(
          int index, com.google.protobuf.DescriptorProtos.MethodDescriptorProto value) {
        if (methodBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMethodIsMutable();
          method_.add(index, value);
          onChanged();
        } else {
          methodBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public Builder addMethod(
          com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder builderForValue) {
        if (methodBuilder_ == null) {
          ensureMethodIsMutable();
          method_.add(builderForValue.build());
          onChanged();
        } else {
          methodBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public Builder addMethod(
          int index, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder builderForValue) {
        if (methodBuilder_ == null) {
          ensureMethodIsMutable();
          method_.add(index, builderForValue.build());
          onChanged();
        } else {
          methodBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public Builder addAllMethod(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.MethodDescriptorProto> values) {
        if (methodBuilder_ == null) {
          ensureMethodIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, method_);
          onChanged();
        } else {
          methodBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public Builder clearMethod() {
        if (methodBuilder_ == null) {
          method_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          methodBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public Builder removeMethod(int index) {
        if (methodBuilder_ == null) {
          ensureMethodIsMutable();
          method_.remove(index);
          onChanged();
        } else {
          methodBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder getMethodBuilder(
          int index) {
        return getMethodFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder getMethodOrBuilder(
          int index) {
        if (methodBuilder_ == null) {
          return method_.get(index);  } else {
          return methodBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> 
           getMethodOrBuilderList() {
        if (methodBuilder_ != null) {
          return methodBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(method_);
        }
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder addMethodBuilder() {
        return getMethodFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.MethodDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder addMethodBuilder(
          int index) {
        return getMethodFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.MethodDescriptorProto method = 2 [json_name = "method"];
       */
      public java.util.List 
           getMethodBuilderList() {
        return getMethodFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.MethodDescriptorProto, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> 
          getMethodFieldBuilder() {
        if (methodBuilder_ == null) {
          methodBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.MethodDescriptorProto, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder>(
                  method_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          method_ = null;
        }
        return methodBuilder_;
      }
      private com.google.protobuf.DescriptorProtos.ServiceOptions options_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.ServiceOptions, com.google.protobuf.DescriptorProtos.ServiceOptions.Builder, com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder> optionsBuilder_;
      /**
       * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
       * @return Whether the options field is set.
       */
      public boolean hasOptions() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
       * @return The options.
       */
      public com.google.protobuf.DescriptorProtos.ServiceOptions getOptions() {
        if (optionsBuilder_ == null) {
          return options_ == null ? com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance() : options_;
        } else {
          return optionsBuilder_.getMessage();
        }
      }
      /**
       * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
       */
      public Builder setOptions(com.google.protobuf.DescriptorProtos.ServiceOptions value) {
        if (optionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          options_ = value;
        } else {
          optionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
       */
      public Builder setOptions(
          com.google.protobuf.DescriptorProtos.ServiceOptions.Builder builderForValue) {
        if (optionsBuilder_ == null) {
          options_ = builderForValue.build();
        } else {
          optionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
       */
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.ServiceOptions value) {
        if (optionsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            options_ != null &&
            options_ != com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance()) {
            getOptionsBuilder().mergeFrom(value);
          } else {
            options_ = value;
          }
        } else {
          optionsBuilder_.mergeFrom(value);
        }
        if (options_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
       */
      public Builder clearOptions() {
        bitField0_ = (bitField0_ & ~0x00000004);
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.ServiceOptions.Builder getOptionsBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getOptionsFieldBuilder().getBuilder();
      }
      /**
       * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder getOptionsOrBuilder() {
        if (optionsBuilder_ != null) {
          return optionsBuilder_.getMessageOrBuilder();
        } else {
          return options_ == null ?
              com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance() : options_;
        }
      }
      /**
       * optional .google.protobuf.ServiceOptions options = 3 [json_name = "options"];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.ServiceOptions, com.google.protobuf.DescriptorProtos.ServiceOptions.Builder, com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder> 
          getOptionsFieldBuilder() {
        if (optionsBuilder_ == null) {
          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.ServiceOptions, com.google.protobuf.DescriptorProtos.ServiceOptions.Builder, com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder>(
                  getOptions(),
                  getParentForChildren(),
                  isClean());
          options_ = null;
        }
        return optionsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:google.protobuf.ServiceDescriptorProto)
    }
    // @@protoc_insertion_point(class_scope:google.protobuf.ServiceDescriptorProto)
    private static final com.google.protobuf.DescriptorProtos.ServiceDescriptorProto DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.ServiceDescriptorProto();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    @java.lang.Deprecated public static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ServiceDescriptorProto parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface MethodDescriptorProtoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.protobuf.MethodDescriptorProto)
      com.google.protobuf.MessageOrBuilder {
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    java.lang.String getName();
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * optional string input_type = 2 [json_name = "inputType"];
     * @return Whether the inputType field is set.
     */
    boolean hasInputType();
    /**
     * optional string input_type = 2 [json_name = "inputType"];
     * @return The inputType.
     */
    java.lang.String getInputType();
    /**
     * optional string input_type = 2 [json_name = "inputType"];
     * @return The bytes for inputType.
     */
    com.google.protobuf.ByteString
        getInputTypeBytes();
    /**
     * optional string output_type = 3 [json_name = "outputType"];
     * @return Whether the outputType field is set.
     */
    boolean hasOutputType();
    /**
     * optional string output_type = 3 [json_name = "outputType"];
     * @return The outputType.
     */
    java.lang.String getOutputType();
    /**
     * optional string output_type = 3 [json_name = "outputType"];
     * @return The bytes for outputType.
     */
    com.google.protobuf.ByteString
        getOutputTypeBytes();
    /**
     * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
     * @return Whether the options field is set.
     */
    boolean hasOptions();
    /**
     * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
     * @return The options.
     */
    com.google.protobuf.DescriptorProtos.MethodOptions getOptions();
    /**
     * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
     */
    com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder getOptionsOrBuilder();
    /**
     * optional bool client_streaming = 5 [default = false, json_name = "clientStreaming"];
     * @return Whether the clientStreaming field is set.
     */
    boolean hasClientStreaming();
    /**
     * optional bool client_streaming = 5 [default = false, json_name = "clientStreaming"];
     * @return The clientStreaming.
     */
    boolean getClientStreaming();
    /**
     * optional bool server_streaming = 6 [default = false, json_name = "serverStreaming"];
     * @return Whether the serverStreaming field is set.
     */
    boolean hasServerStreaming();
    /**
     * optional bool server_streaming = 6 [default = false, json_name = "serverStreaming"];
     * @return The serverStreaming.
     */
    boolean getServerStreaming();
  }
  /**
   * Protobuf type {@code google.protobuf.MethodDescriptorProto}
   */
  public static final class MethodDescriptorProto extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.protobuf.MethodDescriptorProto)
      MethodDescriptorProtoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MethodDescriptorProto.newBuilder() to construct.
    private MethodDescriptorProto(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private MethodDescriptorProto() {
      name_ = "";
      inputType_ = "";
      outputType_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new MethodDescriptorProto();
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.protobuf.DescriptorProtos.MethodDescriptorProto.class, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder.class);
    }
    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * optional string name = 1 [json_name = "name"];
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * optional string name = 1 [json_name = "name"];
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int INPUT_TYPE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object inputType_ = "";
    /**
     * optional string input_type = 2 [json_name = "inputType"];
     * @return Whether the inputType field is set.
     */
    @java.lang.Override
    public boolean hasInputType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * optional string input_type = 2 [json_name = "inputType"];
     * @return The inputType.
     */
    @java.lang.Override
    public java.lang.String getInputType() {
      java.lang.Object ref = inputType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          inputType_ = s;
        }
        return s;
      }
    }
    /**
     * optional string input_type = 2 [json_name = "inputType"];
     * @return The bytes for inputType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getInputTypeBytes() {
      java.lang.Object ref = inputType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        inputType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int OUTPUT_TYPE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object outputType_ = "";
    /**
     * optional string output_type = 3 [json_name = "outputType"];
     * @return Whether the outputType field is set.
     */
    @java.lang.Override
    public boolean hasOutputType() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * optional string output_type = 3 [json_name = "outputType"];
     * @return The outputType.
     */
    @java.lang.Override
    public java.lang.String getOutputType() {
      java.lang.Object ref = outputType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          outputType_ = s;
        }
        return s;
      }
    }
    /**
     * optional string output_type = 3 [json_name = "outputType"];
     * @return The bytes for outputType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOutputTypeBytes() {
      java.lang.Object ref = outputType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        outputType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int OPTIONS_FIELD_NUMBER = 4;
    private com.google.protobuf.DescriptorProtos.MethodOptions options_;
    /**
     * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
     * @return Whether the options field is set.
     */
    @java.lang.Override
    public boolean hasOptions() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
     * @return The options.
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.MethodOptions getOptions() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance() : options_;
    }
    /**
     * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder getOptionsOrBuilder() {
      return options_ == null ? com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance() : options_;
    }
    public static final int CLIENT_STREAMING_FIELD_NUMBER = 5;
    private boolean clientStreaming_ = false;
    /**
     * optional bool client_streaming = 5 [default = false, json_name = "clientStreaming"];
     * @return Whether the clientStreaming field is set.
     */
    @java.lang.Override
    public boolean hasClientStreaming() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * optional bool client_streaming = 5 [default = false, json_name = "clientStreaming"];
     * @return The clientStreaming.
     */
    @java.lang.Override
    public boolean getClientStreaming() {
      return clientStreaming_;
    }
    public static final int SERVER_STREAMING_FIELD_NUMBER = 6;
    private boolean serverStreaming_ = false;
    /**
     * optional bool server_streaming = 6 [default = false, json_name = "serverStreaming"];
     * @return Whether the serverStreaming field is set.
     */
    @java.lang.Override
    public boolean hasServerStreaming() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * optional bool server_streaming = 6 [default = false, json_name = "serverStreaming"];
     * @return The serverStreaming.
     */
    @java.lang.Override
    public boolean getServerStreaming() {
      return serverStreaming_;
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      if (hasOptions()) {
        if (!getOptions().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, inputType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, outputType_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getOptions());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeBool(5, clientStreaming_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeBool(6, serverStreaming_);
      }
      getUnknownFields().writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, inputType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, outputType_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getOptions());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, clientStreaming_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, serverStreaming_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.protobuf.DescriptorProtos.MethodDescriptorProto)) {
        return super.equals(obj);
      }
      com.google.protobuf.DescriptorProtos.MethodDescriptorProto other = (com.google.protobuf.DescriptorProtos.MethodDescriptorProto) obj;
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasInputType() != other.hasInputType()) return false;
      if (hasInputType()) {
        if (!getInputType()
            .equals(other.getInputType())) return false;
      }
      if (hasOutputType() != other.hasOutputType()) return false;
      if (hasOutputType()) {
        if (!getOutputType()
            .equals(other.getOutputType())) return false;
      }
      if (hasOptions() != other.hasOptions()) return false;
      if (hasOptions()) {
        if (!getOptions()
            .equals(other.getOptions())) return false;
      }
      if (hasClientStreaming() != other.hasClientStreaming()) return false;
      if (hasClientStreaming()) {
        if (getClientStreaming()
            != other.getClientStreaming()) return false;
      }
      if (hasServerStreaming() != other.hasServerStreaming()) return false;
      if (hasServerStreaming()) {
        if (getServerStreaming()
            != other.getServerStreaming()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasInputType()) {
        hash = (37 * hash) + INPUT_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getInputType().hashCode();
      }
      if (hasOutputType()) {
        hash = (37 * hash) + OUTPUT_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getOutputType().hashCode();
      }
      if (hasOptions()) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getOptions().hashCode();
      }
      if (hasClientStreaming()) {
        hash = (37 * hash) + CLIENT_STREAMING_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getClientStreaming());
      }
      if (hasServerStreaming()) {
        hash = (37 * hash) + SERVER_STREAMING_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getServerStreaming());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.MethodDescriptorProto prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.MethodDescriptorProto}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:google.protobuf.MethodDescriptorProto)
        com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.MethodDescriptorProto.class, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder.class);
      }
      // Construct using com.google.protobuf.DescriptorProtos.MethodDescriptorProto.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getOptionsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        inputType_ = "";
        outputType_ = "";
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        clientStreaming_ = false;
        serverStreaming_ = false;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_descriptor;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.MethodDescriptorProto.getDefaultInstance();
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.MethodDescriptorProto build() {
        com.google.protobuf.DescriptorProtos.MethodDescriptorProto result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.MethodDescriptorProto buildPartial() {
        com.google.protobuf.DescriptorProtos.MethodDescriptorProto result = new com.google.protobuf.DescriptorProtos.MethodDescriptorProto(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }
      private void buildPartial0(com.google.protobuf.DescriptorProtos.MethodDescriptorProto result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.inputType_ = inputType_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.outputType_ = outputType_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.options_ = optionsBuilder_ == null
              ? options_
              : optionsBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.clientStreaming_ = clientStreaming_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.serverStreaming_ = serverStreaming_;
          to_bitField0_ |= 0x00000020;
        }
        result.bitField0_ |= to_bitField0_;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.MethodDescriptorProto) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.MethodDescriptorProto)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.MethodDescriptorProto other) {
        if (other == com.google.protobuf.DescriptorProtos.MethodDescriptorProto.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasInputType()) {
          inputType_ = other.inputType_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasOutputType()) {
          outputType_ = other.outputType_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        if (other.hasClientStreaming()) {
          setClientStreaming(other.getClientStreaming());
        }
        if (other.hasServerStreaming()) {
          setServerStreaming(other.getServerStreaming());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        if (hasOptions()) {
          if (!getOptions().isInitialized()) {
            return false;
          }
        }
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                inputType_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                outputType_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 40: {
                clientStreaming_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                serverStreaming_ = input.readBool();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private java.lang.Object name_ = "";
      /**
       * optional string name = 1 [json_name = "name"];
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * optional string name = 1 [json_name = "name"];
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      private java.lang.Object inputType_ = "";
      /**
       * optional string input_type = 2 [json_name = "inputType"];
       * @return Whether the inputType field is set.
       */
      public boolean hasInputType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * optional string input_type = 2 [json_name = "inputType"];
       * @return The inputType.
       */
      public java.lang.String getInputType() {
        java.lang.Object ref = inputType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            inputType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string input_type = 2 [json_name = "inputType"];
       * @return The bytes for inputType.
       */
      public com.google.protobuf.ByteString
          getInputTypeBytes() {
        java.lang.Object ref = inputType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          inputType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string input_type = 2 [json_name = "inputType"];
       * @param value The inputType to set.
       * @return This builder for chaining.
       */
      public Builder setInputType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        inputType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * optional string input_type = 2 [json_name = "inputType"];
       * @return This builder for chaining.
       */
      public Builder clearInputType() {
        inputType_ = getDefaultInstance().getInputType();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * optional string input_type = 2 [json_name = "inputType"];
       * @param value The bytes for inputType to set.
       * @return This builder for chaining.
       */
      public Builder setInputTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        inputType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      private java.lang.Object outputType_ = "";
      /**
       * optional string output_type = 3 [json_name = "outputType"];
       * @return Whether the outputType field is set.
       */
      public boolean hasOutputType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * optional string output_type = 3 [json_name = "outputType"];
       * @return The outputType.
       */
      public java.lang.String getOutputType() {
        java.lang.Object ref = outputType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            outputType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string output_type = 3 [json_name = "outputType"];
       * @return The bytes for outputType.
       */
      public com.google.protobuf.ByteString
          getOutputTypeBytes() {
        java.lang.Object ref = outputType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          outputType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string output_type = 3 [json_name = "outputType"];
       * @param value The outputType to set.
       * @return This builder for chaining.
       */
      public Builder setOutputType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        outputType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * optional string output_type = 3 [json_name = "outputType"];
       * @return This builder for chaining.
       */
      public Builder clearOutputType() {
        outputType_ = getDefaultInstance().getOutputType();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * optional string output_type = 3 [json_name = "outputType"];
       * @param value The bytes for outputType to set.
       * @return This builder for chaining.
       */
      public Builder setOutputTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        outputType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      private com.google.protobuf.DescriptorProtos.MethodOptions options_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.MethodOptions, com.google.protobuf.DescriptorProtos.MethodOptions.Builder, com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder> optionsBuilder_;
      /**
       * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
       * @return Whether the options field is set.
       */
      public boolean hasOptions() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
       * @return The options.
       */
      public com.google.protobuf.DescriptorProtos.MethodOptions getOptions() {
        if (optionsBuilder_ == null) {
          return options_ == null ? com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance() : options_;
        } else {
          return optionsBuilder_.getMessage();
        }
      }
      /**
       * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
       */
      public Builder setOptions(com.google.protobuf.DescriptorProtos.MethodOptions value) {
        if (optionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          options_ = value;
        } else {
          optionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
       */
      public Builder setOptions(
          com.google.protobuf.DescriptorProtos.MethodOptions.Builder builderForValue) {
        if (optionsBuilder_ == null) {
          options_ = builderForValue.build();
        } else {
          optionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
       */
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.MethodOptions value) {
        if (optionsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            options_ != null &&
            options_ != com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance()) {
            getOptionsBuilder().mergeFrom(value);
          } else {
            options_ = value;
          }
        } else {
          optionsBuilder_.mergeFrom(value);
        }
        if (options_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
       */
      public Builder clearOptions() {
        bitField0_ = (bitField0_ & ~0x00000008);
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.MethodOptions.Builder getOptionsBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getOptionsFieldBuilder().getBuilder();
      }
      /**
       * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
       */
      public com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder getOptionsOrBuilder() {
        if (optionsBuilder_ != null) {
          return optionsBuilder_.getMessageOrBuilder();
        } else {
          return options_ == null ?
              com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance() : options_;
        }
      }
      /**
       * optional .google.protobuf.MethodOptions options = 4 [json_name = "options"];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.MethodOptions, com.google.protobuf.DescriptorProtos.MethodOptions.Builder, com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder> 
          getOptionsFieldBuilder() {
        if (optionsBuilder_ == null) {
          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.MethodOptions, com.google.protobuf.DescriptorProtos.MethodOptions.Builder, com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder>(
                  getOptions(),
                  getParentForChildren(),
                  isClean());
          options_ = null;
        }
        return optionsBuilder_;
      }
      private boolean clientStreaming_ ;
      /**
       * optional bool client_streaming = 5 [default = false, json_name = "clientStreaming"];
       * @return Whether the clientStreaming field is set.
       */
      @java.lang.Override
      public boolean hasClientStreaming() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * optional bool client_streaming = 5 [default = false, json_name = "clientStreaming"];
       * @return The clientStreaming.
       */
      @java.lang.Override
      public boolean getClientStreaming() {
        return clientStreaming_;
      }
      /**
       * optional bool client_streaming = 5 [default = false, json_name = "clientStreaming"];
       * @param value The clientStreaming to set.
       * @return This builder for chaining.
       */
      public Builder setClientStreaming(boolean value) {
        clientStreaming_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * optional bool client_streaming = 5 [default = false, json_name = "clientStreaming"];
       * @return This builder for chaining.
       */
      public Builder clearClientStreaming() {
        bitField0_ = (bitField0_ & ~0x00000010);
        clientStreaming_ = false;
        onChanged();
        return this;
      }
      private boolean serverStreaming_ ;
      /**
       * optional bool server_streaming = 6 [default = false, json_name = "serverStreaming"];
       * @return Whether the serverStreaming field is set.
       */
      @java.lang.Override
      public boolean hasServerStreaming() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * optional bool server_streaming = 6 [default = false, json_name = "serverStreaming"];
       * @return The serverStreaming.
       */
      @java.lang.Override
      public boolean getServerStreaming() {
        return serverStreaming_;
      }
      /**
       * optional bool server_streaming = 6 [default = false, json_name = "serverStreaming"];
       * @param value The serverStreaming to set.
       * @return This builder for chaining.
       */
      public Builder setServerStreaming(boolean value) {
        serverStreaming_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * optional bool server_streaming = 6 [default = false, json_name = "serverStreaming"];
       * @return This builder for chaining.
       */
      public Builder clearServerStreaming() {
        bitField0_ = (bitField0_ & ~0x00000020);
        serverStreaming_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:google.protobuf.MethodDescriptorProto)
    }
    // @@protoc_insertion_point(class_scope:google.protobuf.MethodDescriptorProto)
    private static final com.google.protobuf.DescriptorProtos.MethodDescriptorProto DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.MethodDescriptorProto();
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    @java.lang.Deprecated public static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public MethodDescriptorProto parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface FileOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.protobuf.FileOptions)
      com.google.protobuf.GeneratedMessageV3.
          ExtendableMessageOrBuilder {
    /**
     * optional string java_package = 1 [json_name = "javaPackage"];
     * @return Whether the javaPackage field is set.
     */
    boolean hasJavaPackage();
    /**
     * optional string java_package = 1 [json_name = "javaPackage"];
     * @return The javaPackage.
     */
    java.lang.String getJavaPackage();
    /**
     * optional string java_package = 1 [json_name = "javaPackage"];
     * @return The bytes for javaPackage.
     */
    com.google.protobuf.ByteString
        getJavaPackageBytes();
    /**
     * optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];
     * @return Whether the javaOuterClassname field is set.
     */
    boolean hasJavaOuterClassname();
    /**
     * optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];
     * @return The javaOuterClassname.
     */
    java.lang.String getJavaOuterClassname();
    /**
     * optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];
     * @return The bytes for javaOuterClassname.
     */
    com.google.protobuf.ByteString
        getJavaOuterClassnameBytes();
    /**
     * optional bool java_multiple_files = 10 [default = false, json_name = "javaMultipleFiles"];
     * @return Whether the javaMultipleFiles field is set.
     */
    boolean hasJavaMultipleFiles();
    /**
     * optional bool java_multiple_files = 10 [default = false, json_name = "javaMultipleFiles"];
     * @return The javaMultipleFiles.
     */
    boolean getJavaMultipleFiles();
    /**
     * optional bool java_generate_equals_and_hash = 20 [json_name = "javaGenerateEqualsAndHash", deprecated = true];
     * @deprecated google.protobuf.FileOptions.java_generate_equals_and_hash is deprecated.
     *     See google/protobuf/descriptor.proto;l=0
     * @return Whether the javaGenerateEqualsAndHash field is set.
     */
    @java.lang.Deprecated boolean hasJavaGenerateEqualsAndHash();
    /**
     * optional bool java_generate_equals_and_hash = 20 [json_name = "javaGenerateEqualsAndHash", deprecated = true];
     * @deprecated google.protobuf.FileOptions.java_generate_equals_and_hash is deprecated.
     *     See google/protobuf/descriptor.proto;l=0
     * @return The javaGenerateEqualsAndHash.
     */
    @java.lang.Deprecated boolean getJavaGenerateEqualsAndHash();
    /**
     * optional bool java_string_check_utf8 = 27 [default = false, json_name = "javaStringCheckUtf8"];
     * @return Whether the javaStringCheckUtf8 field is set.
     */
    boolean hasJavaStringCheckUtf8();
    /**
     * optional bool java_string_check_utf8 = 27 [default = false, json_name = "javaStringCheckUtf8"];
     * @return The javaStringCheckUtf8.
     */
    boolean getJavaStringCheckUtf8();
    /**
     * optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED, json_name = "optimizeFor"];
     * @return Whether the optimizeFor field is set.
     */
    boolean hasOptimizeFor();
    /**
     * optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED, json_name = "optimizeFor"];
     * @return The optimizeFor.
     */
    com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor();
    /**
     * optional string go_package = 11 [json_name = "goPackage"];
     * @return Whether the goPackage field is set.
     */
    boolean hasGoPackage();
    /**
     * optional string go_package = 11 [json_name = "goPackage"];
     * @return The goPackage.
     */
    java.lang.String getGoPackage();
    /**
     * optional string go_package = 11 [json_name = "goPackage"];
     * @return The bytes for goPackage.
     */
    com.google.protobuf.ByteString
        getGoPackageBytes();
    /**
     * optional bool cc_generic_services = 16 [default = false, json_name = "ccGenericServices"];
     * @return Whether the ccGenericServices field is set.
     */
    boolean hasCcGenericServices();
    /**
     * optional bool cc_generic_services = 16 [default = false, json_name = "ccGenericServices"];
     * @return The ccGenericServices.
     */
    boolean getCcGenericServices();
    /**
     * optional bool java_generic_services = 17 [default = false, json_name = "javaGenericServices"];
     * @return Whether the javaGenericServices field is set.
     */
    boolean hasJavaGenericServices();
    /**
     * optional bool java_generic_services = 17 [default = false, json_name = "javaGenericServices"];
     * @return The javaGenericServices.
     */
    boolean getJavaGenericServices();
    /**
     * optional bool py_generic_services = 18 [default = false, json_name = "pyGenericServices"];
     * @return Whether the pyGenericServices field is set.
     */
    boolean hasPyGenericServices();
    /**
     * optional bool py_generic_services = 18 [default = false, json_name = "pyGenericServices"];
     * @return The pyGenericServices.
     */
    boolean getPyGenericServices();
    /**
     * optional bool php_generic_services = 42 [default = false, json_name = "phpGenericServices"];
     * @return Whether the phpGenericServices field is set.
     */
    boolean hasPhpGenericServices();
    /**
     * optional bool php_generic_services = 42 [default = false, json_name = "phpGenericServices"];
     * @return The phpGenericServices.
     */
    boolean getPhpGenericServices();
    /**
     * optional bool deprecated = 23 [default = false, json_name = "deprecated"];
     * @return Whether the deprecated field is set.
     */
    boolean hasDeprecated();
    /**
     * optional bool deprecated = 23 [default = false, json_name = "deprecated"];
     * @return The deprecated.
     */
    boolean getDeprecated();
    /**
     * optional bool cc_enable_arenas = 31 [default = true, json_name = "ccEnableArenas"];
     * @return Whether the ccEnableArenas field is set.
     */
    boolean hasCcEnableArenas();
    /**
     * optional bool cc_enable_arenas = 31 [default = true, json_name = "ccEnableArenas"];
     * @return The ccEnableArenas.
     */
    boolean getCcEnableArenas();
    /**
     * optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];
     * @return Whether the objcClassPrefix field is set.
     */
    boolean hasObjcClassPrefix();
    /**
     * optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];
     * @return The objcClassPrefix.
     */
    java.lang.String getObjcClassPrefix();
    /**
     * optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];
     * @return The bytes for objcClassPrefix.
     */
    com.google.protobuf.ByteString
        getObjcClassPrefixBytes();
    /**
     * optional string csharp_namespace = 37 [json_name = "csharpNamespace"];
     * @return Whether the csharpNamespace field is set.
     */
    boolean hasCsharpNamespace();
    /**
     * optional string csharp_namespace = 37 [json_name = "csharpNamespace"];
     * @return The csharpNamespace.
     */
    java.lang.String getCsharpNamespace();
    /**
     * optional string csharp_namespace = 37 [json_name = "csharpNamespace"];
     * @return The bytes for csharpNamespace.
     */
    com.google.protobuf.ByteString
        getCsharpNamespaceBytes();
    /**
     * optional string swift_prefix = 39 [json_name = "swiftPrefix"];
     * @return Whether the swiftPrefix field is set.
     */
    boolean hasSwiftPrefix();
    /**
     * optional string swift_prefix = 39 [json_name = "swiftPrefix"];
     * @return The swiftPrefix.
     */
    java.lang.String getSwiftPrefix();
    /**
     * optional string swift_prefix = 39 [json_name = "swiftPrefix"];
     * @return The bytes for swiftPrefix.
     */
    com.google.protobuf.ByteString
        getSwiftPrefixBytes();
    /**
     * optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];
     * @return Whether the phpClassPrefix field is set.
     */
    boolean hasPhpClassPrefix();
    /**
     * optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];
     * @return The phpClassPrefix.
     */
    java.lang.String getPhpClassPrefix();
    /**
     * optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];
     * @return The bytes for phpClassPrefix.
     */
    com.google.protobuf.ByteString
        getPhpClassPrefixBytes();
    /**
     * optional string php_namespace = 41 [json_name = "phpNamespace"];
     * @return Whether the phpNamespace field is set.
     */
    boolean hasPhpNamespace();
    /**
     * optional string php_namespace = 41 [json_name = "phpNamespace"];
     * @return The phpNamespace.
     */
    java.lang.String getPhpNamespace();
    /**
     * optional string php_namespace = 41 [json_name = "phpNamespace"];
     * @return The bytes for phpNamespace.
     */
    com.google.protobuf.ByteString
        getPhpNamespaceBytes();
    /**
     * optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];
     * @return Whether the phpMetadataNamespace field is set.
     */
    boolean hasPhpMetadataNamespace();
    /**
     * optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];
     * @return The phpMetadataNamespace.
     */
    java.lang.String getPhpMetadataNamespace();
    /**
     * optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];
     * @return The bytes for phpMetadataNamespace.
     */
    com.google.protobuf.ByteString
        getPhpMetadataNamespaceBytes();
    /**
     * optional string ruby_package = 45 [json_name = "rubyPackage"];
     * @return Whether the rubyPackage field is set.
     */
    boolean hasRubyPackage();
    /**
     * optional string ruby_package = 45 [json_name = "rubyPackage"];
     * @return The rubyPackage.
     */
    java.lang.String getRubyPackage();
    /**
     * optional string ruby_package = 45 [json_name = "rubyPackage"];
     * @return The bytes for rubyPackage.
     */
    com.google.protobuf.ByteString
        getRubyPackageBytes();
    /**
     * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
     * @return Whether the features field is set.
     */
    boolean hasFeatures();
    /**
     * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
     * @return The features.
     */
    com.google.protobuf.DescriptorProtos.FeatureSet getFeatures();
    /**
     * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
     */
    com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder getFeaturesOrBuilder();
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    java.util.List 
        getUninterpretedOptionList();
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    int getUninterpretedOptionCount();
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
        getUninterpretedOptionOrBuilderList();
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code google.protobuf.FileOptions}
   */
  public static final class FileOptions extends
      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
        FileOptions> implements
      // @@protoc_insertion_point(message_implements:google.protobuf.FileOptions)
      FileOptionsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FileOptions.newBuilder() to construct.
    private FileOptions(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder builder) {
      super(builder);
    }
    private FileOptions() {
      javaPackage_ = "";
      javaOuterClassname_ = "";
      optimizeFor_ = 1;
      goPackage_ = "";
      ccEnableArenas_ = true;
      objcClassPrefix_ = "";
      csharpNamespace_ = "";
      swiftPrefix_ = "";
      phpClassPrefix_ = "";
      phpNamespace_ = "";
      phpMetadataNamespace_ = "";
      rubyPackage_ = "";
      uninterpretedOption_ = java.util.Collections.emptyList();
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new FileOptions();
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.protobuf.DescriptorProtos.FileOptions.class, com.google.protobuf.DescriptorProtos.FileOptions.Builder.class);
    }
    /**
     * Protobuf enum {@code google.protobuf.FileOptions.OptimizeMode}
     */
    public enum OptimizeMode
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * SPEED = 1;
       */
      SPEED(1),
      /**
       * CODE_SIZE = 2;
       */
      CODE_SIZE(2),
      /**
       * LITE_RUNTIME = 3;
       */
      LITE_RUNTIME(3),
      ;
      /**
       * SPEED = 1;
       */
      public static final int SPEED_VALUE = 1;
      /**
       * CODE_SIZE = 2;
       */
      public static final int CODE_SIZE_VALUE = 2;
      /**
       * LITE_RUNTIME = 3;
       */
      public static final int LITE_RUNTIME_VALUE = 3;
      public final int getNumber() {
        return value;
      }
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static OptimizeMode valueOf(int value) {
        return forNumber(value);
      }
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static OptimizeMode forNumber(int value) {
        switch (value) {
          case 1: return SPEED;
          case 2: return CODE_SIZE;
          case 3: return LITE_RUNTIME;
          default: return null;
        }
      }
      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          OptimizeMode> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public OptimizeMode findValueByNumber(int number) {
                return OptimizeMode.forNumber(number);
              }
            };
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.FileOptions.getDescriptor().getEnumTypes().get(0);
      }
      private static final OptimizeMode[] VALUES = values();
      public static OptimizeMode valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
      private final int value;
      private OptimizeMode(int value) {
        this.value = value;
      }
      // @@protoc_insertion_point(enum_scope:google.protobuf.FileOptions.OptimizeMode)
    }
    private int bitField0_;
    public static final int JAVA_PACKAGE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object javaPackage_ = "";
    /**
     * optional string java_package = 1 [json_name = "javaPackage"];
     * @return Whether the javaPackage field is set.
     */
    @java.lang.Override
    public boolean hasJavaPackage() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * optional string java_package = 1 [json_name = "javaPackage"];
     * @return The javaPackage.
     */
    @java.lang.Override
    public java.lang.String getJavaPackage() {
      java.lang.Object ref = javaPackage_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          javaPackage_ = s;
        }
        return s;
      }
    }
    /**
     * optional string java_package = 1 [json_name = "javaPackage"];
     * @return The bytes for javaPackage.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getJavaPackageBytes() {
      java.lang.Object ref = javaPackage_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        javaPackage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int JAVA_OUTER_CLASSNAME_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object javaOuterClassname_ = "";
    /**
     * optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];
     * @return Whether the javaOuterClassname field is set.
     */
    @java.lang.Override
    public boolean hasJavaOuterClassname() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];
     * @return The javaOuterClassname.
     */
    @java.lang.Override
    public java.lang.String getJavaOuterClassname() {
      java.lang.Object ref = javaOuterClassname_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          javaOuterClassname_ = s;
        }
        return s;
      }
    }
    /**
     * optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];
     * @return The bytes for javaOuterClassname.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getJavaOuterClassnameBytes() {
      java.lang.Object ref = javaOuterClassname_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        javaOuterClassname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int JAVA_MULTIPLE_FILES_FIELD_NUMBER = 10;
    private boolean javaMultipleFiles_ = false;
    /**
     * optional bool java_multiple_files = 10 [default = false, json_name = "javaMultipleFiles"];
     * @return Whether the javaMultipleFiles field is set.
     */
    @java.lang.Override
    public boolean hasJavaMultipleFiles() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * optional bool java_multiple_files = 10 [default = false, json_name = "javaMultipleFiles"];
     * @return The javaMultipleFiles.
     */
    @java.lang.Override
    public boolean getJavaMultipleFiles() {
      return javaMultipleFiles_;
    }
    public static final int JAVA_GENERATE_EQUALS_AND_HASH_FIELD_NUMBER = 20;
    private boolean javaGenerateEqualsAndHash_ = false;
    /**
     * optional bool java_generate_equals_and_hash = 20 [json_name = "javaGenerateEqualsAndHash", deprecated = true];
     * @deprecated google.protobuf.FileOptions.java_generate_equals_and_hash is deprecated.
     *     See google/protobuf/descriptor.proto;l=0
     * @return Whether the javaGenerateEqualsAndHash field is set.
     */
    @java.lang.Override
    @java.lang.Deprecated public boolean hasJavaGenerateEqualsAndHash() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * optional bool java_generate_equals_and_hash = 20 [json_name = "javaGenerateEqualsAndHash", deprecated = true];
     * @deprecated google.protobuf.FileOptions.java_generate_equals_and_hash is deprecated.
     *     See google/protobuf/descriptor.proto;l=0
     * @return The javaGenerateEqualsAndHash.
     */
    @java.lang.Override
    @java.lang.Deprecated public boolean getJavaGenerateEqualsAndHash() {
      return javaGenerateEqualsAndHash_;
    }
    public static final int JAVA_STRING_CHECK_UTF8_FIELD_NUMBER = 27;
    private boolean javaStringCheckUtf8_ = false;
    /**
     * optional bool java_string_check_utf8 = 27 [default = false, json_name = "javaStringCheckUtf8"];
     * @return Whether the javaStringCheckUtf8 field is set.
     */
    @java.lang.Override
    public boolean hasJavaStringCheckUtf8() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * optional bool java_string_check_utf8 = 27 [default = false, json_name = "javaStringCheckUtf8"];
     * @return The javaStringCheckUtf8.
     */
    @java.lang.Override
    public boolean getJavaStringCheckUtf8() {
      return javaStringCheckUtf8_;
    }
    public static final int OPTIMIZE_FOR_FIELD_NUMBER = 9;
    private int optimizeFor_ = 1;
    /**
     * optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED, json_name = "optimizeFor"];
     * @return Whether the optimizeFor field is set.
     */
    @java.lang.Override public boolean hasOptimizeFor() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED, json_name = "optimizeFor"];
     * @return The optimizeFor.
     */
    @java.lang.Override public com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor() {
      com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode result = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.forNumber(optimizeFor_);
      return result == null ? com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED : result;
    }
    public static final int GO_PACKAGE_FIELD_NUMBER = 11;
    @SuppressWarnings("serial")
    private volatile java.lang.Object goPackage_ = "";
    /**
     * optional string go_package = 11 [json_name = "goPackage"];
     * @return Whether the goPackage field is set.
     */
    @java.lang.Override
    public boolean hasGoPackage() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * optional string go_package = 11 [json_name = "goPackage"];
     * @return The goPackage.
     */
    @java.lang.Override
    public java.lang.String getGoPackage() {
      java.lang.Object ref = goPackage_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          goPackage_ = s;
        }
        return s;
      }
    }
    /**
     * optional string go_package = 11 [json_name = "goPackage"];
     * @return The bytes for goPackage.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGoPackageBytes() {
      java.lang.Object ref = goPackage_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        goPackage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int CC_GENERIC_SERVICES_FIELD_NUMBER = 16;
    private boolean ccGenericServices_ = false;
    /**
     * optional bool cc_generic_services = 16 [default = false, json_name = "ccGenericServices"];
     * @return Whether the ccGenericServices field is set.
     */
    @java.lang.Override
    public boolean hasCcGenericServices() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * optional bool cc_generic_services = 16 [default = false, json_name = "ccGenericServices"];
     * @return The ccGenericServices.
     */
    @java.lang.Override
    public boolean getCcGenericServices() {
      return ccGenericServices_;
    }
    public static final int JAVA_GENERIC_SERVICES_FIELD_NUMBER = 17;
    private boolean javaGenericServices_ = false;
    /**
     * optional bool java_generic_services = 17 [default = false, json_name = "javaGenericServices"];
     * @return Whether the javaGenericServices field is set.
     */
    @java.lang.Override
    public boolean hasJavaGenericServices() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * optional bool java_generic_services = 17 [default = false, json_name = "javaGenericServices"];
     * @return The javaGenericServices.
     */
    @java.lang.Override
    public boolean getJavaGenericServices() {
      return javaGenericServices_;
    }
    public static final int PY_GENERIC_SERVICES_FIELD_NUMBER = 18;
    private boolean pyGenericServices_ = false;
    /**
     * optional bool py_generic_services = 18 [default = false, json_name = "pyGenericServices"];
     * @return Whether the pyGenericServices field is set.
     */
    @java.lang.Override
    public boolean hasPyGenericServices() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * optional bool py_generic_services = 18 [default = false, json_name = "pyGenericServices"];
     * @return The pyGenericServices.
     */
    @java.lang.Override
    public boolean getPyGenericServices() {
      return pyGenericServices_;
    }
    public static final int PHP_GENERIC_SERVICES_FIELD_NUMBER = 42;
    private boolean phpGenericServices_ = false;
    /**
     * optional bool php_generic_services = 42 [default = false, json_name = "phpGenericServices"];
     * @return Whether the phpGenericServices field is set.
     */
    @java.lang.Override
    public boolean hasPhpGenericServices() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * optional bool php_generic_services = 42 [default = false, json_name = "phpGenericServices"];
     * @return The phpGenericServices.
     */
    @java.lang.Override
    public boolean getPhpGenericServices() {
      return phpGenericServices_;
    }
    public static final int DEPRECATED_FIELD_NUMBER = 23;
    private boolean deprecated_ = false;
    /**
     * optional bool deprecated = 23 [default = false, json_name = "deprecated"];
     * @return Whether the deprecated field is set.
     */
    @java.lang.Override
    public boolean hasDeprecated() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * optional bool deprecated = 23 [default = false, json_name = "deprecated"];
     * @return The deprecated.
     */
    @java.lang.Override
    public boolean getDeprecated() {
      return deprecated_;
    }
    public static final int CC_ENABLE_ARENAS_FIELD_NUMBER = 31;
    private boolean ccEnableArenas_ = true;
    /**
     * optional bool cc_enable_arenas = 31 [default = true, json_name = "ccEnableArenas"];
     * @return Whether the ccEnableArenas field is set.
     */
    @java.lang.Override
    public boolean hasCcEnableArenas() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * optional bool cc_enable_arenas = 31 [default = true, json_name = "ccEnableArenas"];
     * @return The ccEnableArenas.
     */
    @java.lang.Override
    public boolean getCcEnableArenas() {
      return ccEnableArenas_;
    }
    public static final int OBJC_CLASS_PREFIX_FIELD_NUMBER = 36;
    @SuppressWarnings("serial")
    private volatile java.lang.Object objcClassPrefix_ = "";
    /**
     * optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];
     * @return Whether the objcClassPrefix field is set.
     */
    @java.lang.Override
    public boolean hasObjcClassPrefix() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];
     * @return The objcClassPrefix.
     */
    @java.lang.Override
    public java.lang.String getObjcClassPrefix() {
      java.lang.Object ref = objcClassPrefix_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          objcClassPrefix_ = s;
        }
        return s;
      }
    }
    /**
     * optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];
     * @return The bytes for objcClassPrefix.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getObjcClassPrefixBytes() {
      java.lang.Object ref = objcClassPrefix_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        objcClassPrefix_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int CSHARP_NAMESPACE_FIELD_NUMBER = 37;
    @SuppressWarnings("serial")
    private volatile java.lang.Object csharpNamespace_ = "";
    /**
     * optional string csharp_namespace = 37 [json_name = "csharpNamespace"];
     * @return Whether the csharpNamespace field is set.
     */
    @java.lang.Override
    public boolean hasCsharpNamespace() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * optional string csharp_namespace = 37 [json_name = "csharpNamespace"];
     * @return The csharpNamespace.
     */
    @java.lang.Override
    public java.lang.String getCsharpNamespace() {
      java.lang.Object ref = csharpNamespace_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          csharpNamespace_ = s;
        }
        return s;
      }
    }
    /**
     * optional string csharp_namespace = 37 [json_name = "csharpNamespace"];
     * @return The bytes for csharpNamespace.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCsharpNamespaceBytes() {
      java.lang.Object ref = csharpNamespace_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        csharpNamespace_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int SWIFT_PREFIX_FIELD_NUMBER = 39;
    @SuppressWarnings("serial")
    private volatile java.lang.Object swiftPrefix_ = "";
    /**
     * optional string swift_prefix = 39 [json_name = "swiftPrefix"];
     * @return Whether the swiftPrefix field is set.
     */
    @java.lang.Override
    public boolean hasSwiftPrefix() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * optional string swift_prefix = 39 [json_name = "swiftPrefix"];
     * @return The swiftPrefix.
     */
    @java.lang.Override
    public java.lang.String getSwiftPrefix() {
      java.lang.Object ref = swiftPrefix_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          swiftPrefix_ = s;
        }
        return s;
      }
    }
    /**
     * optional string swift_prefix = 39 [json_name = "swiftPrefix"];
     * @return The bytes for swiftPrefix.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSwiftPrefixBytes() {
      java.lang.Object ref = swiftPrefix_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        swiftPrefix_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int PHP_CLASS_PREFIX_FIELD_NUMBER = 40;
    @SuppressWarnings("serial")
    private volatile java.lang.Object phpClassPrefix_ = "";
    /**
     * optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];
     * @return Whether the phpClassPrefix field is set.
     */
    @java.lang.Override
    public boolean hasPhpClassPrefix() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];
     * @return The phpClassPrefix.
     */
    @java.lang.Override
    public java.lang.String getPhpClassPrefix() {
      java.lang.Object ref = phpClassPrefix_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          phpClassPrefix_ = s;
        }
        return s;
      }
    }
    /**
     * optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];
     * @return The bytes for phpClassPrefix.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPhpClassPrefixBytes() {
      java.lang.Object ref = phpClassPrefix_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        phpClassPrefix_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int PHP_NAMESPACE_FIELD_NUMBER = 41;
    @SuppressWarnings("serial")
    private volatile java.lang.Object phpNamespace_ = "";
    /**
     * optional string php_namespace = 41 [json_name = "phpNamespace"];
     * @return Whether the phpNamespace field is set.
     */
    @java.lang.Override
    public boolean hasPhpNamespace() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * optional string php_namespace = 41 [json_name = "phpNamespace"];
     * @return The phpNamespace.
     */
    @java.lang.Override
    public java.lang.String getPhpNamespace() {
      java.lang.Object ref = phpNamespace_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          phpNamespace_ = s;
        }
        return s;
      }
    }
    /**
     * optional string php_namespace = 41 [json_name = "phpNamespace"];
     * @return The bytes for phpNamespace.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPhpNamespaceBytes() {
      java.lang.Object ref = phpNamespace_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        phpNamespace_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int PHP_METADATA_NAMESPACE_FIELD_NUMBER = 44;
    @SuppressWarnings("serial")
    private volatile java.lang.Object phpMetadataNamespace_ = "";
    /**
     * optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];
     * @return Whether the phpMetadataNamespace field is set.
     */
    @java.lang.Override
    public boolean hasPhpMetadataNamespace() {
      return ((bitField0_ & 0x00040000) != 0);
    }
    /**
     * optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];
     * @return The phpMetadataNamespace.
     */
    @java.lang.Override
    public java.lang.String getPhpMetadataNamespace() {
      java.lang.Object ref = phpMetadataNamespace_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          phpMetadataNamespace_ = s;
        }
        return s;
      }
    }
    /**
     * optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];
     * @return The bytes for phpMetadataNamespace.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPhpMetadataNamespaceBytes() {
      java.lang.Object ref = phpMetadataNamespace_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        phpMetadataNamespace_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int RUBY_PACKAGE_FIELD_NUMBER = 45;
    @SuppressWarnings("serial")
    private volatile java.lang.Object rubyPackage_ = "";
    /**
     * optional string ruby_package = 45 [json_name = "rubyPackage"];
     * @return Whether the rubyPackage field is set.
     */
    @java.lang.Override
    public boolean hasRubyPackage() {
      return ((bitField0_ & 0x00080000) != 0);
    }
    /**
     * optional string ruby_package = 45 [json_name = "rubyPackage"];
     * @return The rubyPackage.
     */
    @java.lang.Override
    public java.lang.String getRubyPackage() {
      java.lang.Object ref = rubyPackage_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          rubyPackage_ = s;
        }
        return s;
      }
    }
    /**
     * optional string ruby_package = 45 [json_name = "rubyPackage"];
     * @return The bytes for rubyPackage.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRubyPackageBytes() {
      java.lang.Object ref = rubyPackage_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        rubyPackage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int FEATURES_FIELD_NUMBER = 50;
    private com.google.protobuf.DescriptorProtos.FeatureSet features_;
    /**
     * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
     * @return Whether the features field is set.
     */
    @java.lang.Override
    public boolean hasFeatures() {
      return ((bitField0_ & 0x00100000) != 0);
    }
    /**
     * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
     * @return The features.
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FeatureSet getFeatures() {
      return features_ == null ? com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance() : features_;
    }
    /**
     * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder getFeaturesOrBuilder() {
      return features_ == null ? com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance() : features_;
    }
    public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
    @SuppressWarnings("serial")
    private java.util.List uninterpretedOption_;
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public java.util.List getUninterpretedOptionList() {
      return uninterpretedOption_;
    }
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
        getUninterpretedOptionOrBuilderList() {
      return uninterpretedOption_;
    }
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public int getUninterpretedOptionCount() {
      return uninterpretedOption_.size();
    }
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
      return uninterpretedOption_.get(index);
    }
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
        int index) {
      return uninterpretedOption_.get(index);
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      if (hasFeatures()) {
        if (!getFeatures().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getUninterpretedOptionCount(); i++) {
        if (!getUninterpretedOption(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .ExtendableMessage.ExtensionWriter
          extensionWriter = newExtensionWriter();
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, javaPackage_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, javaOuterClassname_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeEnum(9, optimizeFor_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(10, javaMultipleFiles_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, goPackage_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeBool(16, ccGenericServices_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeBool(17, javaGenericServices_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeBool(18, pyGenericServices_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(20, javaGenerateEqualsAndHash_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeBool(23, deprecated_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeBool(27, javaStringCheckUtf8_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeBool(31, ccEnableArenas_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 36, objcClassPrefix_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 37, csharpNamespace_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 39, swiftPrefix_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 40, phpClassPrefix_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 41, phpNamespace_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeBool(42, phpGenericServices_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 44, phpMetadataNamespace_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 45, rubyPackage_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        output.writeMessage(50, getFeatures());
      }
      for (int i = 0; i < uninterpretedOption_.size(); i++) {
        output.writeMessage(999, uninterpretedOption_.get(i));
      }
      extensionWriter.writeUntil(536870912, output);
      getUnknownFields().writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, javaPackage_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, javaOuterClassname_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(9, optimizeFor_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, javaMultipleFiles_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, goPackage_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(16, ccGenericServices_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(17, javaGenericServices_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(18, pyGenericServices_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(20, javaGenerateEqualsAndHash_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(23, deprecated_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(27, javaStringCheckUtf8_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(31, ccEnableArenas_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(36, objcClassPrefix_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(37, csharpNamespace_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(39, swiftPrefix_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(40, phpClassPrefix_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(41, phpNamespace_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(42, phpGenericServices_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(44, phpMetadataNamespace_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(45, rubyPackage_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(50, getFeatures());
      }
      for (int i = 0; i < uninterpretedOption_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(999, uninterpretedOption_.get(i));
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.protobuf.DescriptorProtos.FileOptions)) {
        return super.equals(obj);
      }
      com.google.protobuf.DescriptorProtos.FileOptions other = (com.google.protobuf.DescriptorProtos.FileOptions) obj;
      if (hasJavaPackage() != other.hasJavaPackage()) return false;
      if (hasJavaPackage()) {
        if (!getJavaPackage()
            .equals(other.getJavaPackage())) return false;
      }
      if (hasJavaOuterClassname() != other.hasJavaOuterClassname()) return false;
      if (hasJavaOuterClassname()) {
        if (!getJavaOuterClassname()
            .equals(other.getJavaOuterClassname())) return false;
      }
      if (hasJavaMultipleFiles() != other.hasJavaMultipleFiles()) return false;
      if (hasJavaMultipleFiles()) {
        if (getJavaMultipleFiles()
            != other.getJavaMultipleFiles()) return false;
      }
      if (hasJavaGenerateEqualsAndHash() != other.hasJavaGenerateEqualsAndHash()) return false;
      if (hasJavaGenerateEqualsAndHash()) {
        if (getJavaGenerateEqualsAndHash()
            != other.getJavaGenerateEqualsAndHash()) return false;
      }
      if (hasJavaStringCheckUtf8() != other.hasJavaStringCheckUtf8()) return false;
      if (hasJavaStringCheckUtf8()) {
        if (getJavaStringCheckUtf8()
            != other.getJavaStringCheckUtf8()) return false;
      }
      if (hasOptimizeFor() != other.hasOptimizeFor()) return false;
      if (hasOptimizeFor()) {
        if (optimizeFor_ != other.optimizeFor_) return false;
      }
      if (hasGoPackage() != other.hasGoPackage()) return false;
      if (hasGoPackage()) {
        if (!getGoPackage()
            .equals(other.getGoPackage())) return false;
      }
      if (hasCcGenericServices() != other.hasCcGenericServices()) return false;
      if (hasCcGenericServices()) {
        if (getCcGenericServices()
            != other.getCcGenericServices()) return false;
      }
      if (hasJavaGenericServices() != other.hasJavaGenericServices()) return false;
      if (hasJavaGenericServices()) {
        if (getJavaGenericServices()
            != other.getJavaGenericServices()) return false;
      }
      if (hasPyGenericServices() != other.hasPyGenericServices()) return false;
      if (hasPyGenericServices()) {
        if (getPyGenericServices()
            != other.getPyGenericServices()) return false;
      }
      if (hasPhpGenericServices() != other.hasPhpGenericServices()) return false;
      if (hasPhpGenericServices()) {
        if (getPhpGenericServices()
            != other.getPhpGenericServices()) return false;
      }
      if (hasDeprecated() != other.hasDeprecated()) return false;
      if (hasDeprecated()) {
        if (getDeprecated()
            != other.getDeprecated()) return false;
      }
      if (hasCcEnableArenas() != other.hasCcEnableArenas()) return false;
      if (hasCcEnableArenas()) {
        if (getCcEnableArenas()
            != other.getCcEnableArenas()) return false;
      }
      if (hasObjcClassPrefix() != other.hasObjcClassPrefix()) return false;
      if (hasObjcClassPrefix()) {
        if (!getObjcClassPrefix()
            .equals(other.getObjcClassPrefix())) return false;
      }
      if (hasCsharpNamespace() != other.hasCsharpNamespace()) return false;
      if (hasCsharpNamespace()) {
        if (!getCsharpNamespace()
            .equals(other.getCsharpNamespace())) return false;
      }
      if (hasSwiftPrefix() != other.hasSwiftPrefix()) return false;
      if (hasSwiftPrefix()) {
        if (!getSwiftPrefix()
            .equals(other.getSwiftPrefix())) return false;
      }
      if (hasPhpClassPrefix() != other.hasPhpClassPrefix()) return false;
      if (hasPhpClassPrefix()) {
        if (!getPhpClassPrefix()
            .equals(other.getPhpClassPrefix())) return false;
      }
      if (hasPhpNamespace() != other.hasPhpNamespace()) return false;
      if (hasPhpNamespace()) {
        if (!getPhpNamespace()
            .equals(other.getPhpNamespace())) return false;
      }
      if (hasPhpMetadataNamespace() != other.hasPhpMetadataNamespace()) return false;
      if (hasPhpMetadataNamespace()) {
        if (!getPhpMetadataNamespace()
            .equals(other.getPhpMetadataNamespace())) return false;
      }
      if (hasRubyPackage() != other.hasRubyPackage()) return false;
      if (hasRubyPackage()) {
        if (!getRubyPackage()
            .equals(other.getRubyPackage())) return false;
      }
      if (hasFeatures() != other.hasFeatures()) return false;
      if (hasFeatures()) {
        if (!getFeatures()
            .equals(other.getFeatures())) return false;
      }
      if (!getUninterpretedOptionList()
          .equals(other.getUninterpretedOptionList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      if (!getExtensionFields().equals(other.getExtensionFields()))
        return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasJavaPackage()) {
        hash = (37 * hash) + JAVA_PACKAGE_FIELD_NUMBER;
        hash = (53 * hash) + getJavaPackage().hashCode();
      }
      if (hasJavaOuterClassname()) {
        hash = (37 * hash) + JAVA_OUTER_CLASSNAME_FIELD_NUMBER;
        hash = (53 * hash) + getJavaOuterClassname().hashCode();
      }
      if (hasJavaMultipleFiles()) {
        hash = (37 * hash) + JAVA_MULTIPLE_FILES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getJavaMultipleFiles());
      }
      if (hasJavaGenerateEqualsAndHash()) {
        hash = (37 * hash) + JAVA_GENERATE_EQUALS_AND_HASH_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getJavaGenerateEqualsAndHash());
      }
      if (hasJavaStringCheckUtf8()) {
        hash = (37 * hash) + JAVA_STRING_CHECK_UTF8_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getJavaStringCheckUtf8());
      }
      if (hasOptimizeFor()) {
        hash = (37 * hash) + OPTIMIZE_FOR_FIELD_NUMBER;
        hash = (53 * hash) + optimizeFor_;
      }
      if (hasGoPackage()) {
        hash = (37 * hash) + GO_PACKAGE_FIELD_NUMBER;
        hash = (53 * hash) + getGoPackage().hashCode();
      }
      if (hasCcGenericServices()) {
        hash = (37 * hash) + CC_GENERIC_SERVICES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getCcGenericServices());
      }
      if (hasJavaGenericServices()) {
        hash = (37 * hash) + JAVA_GENERIC_SERVICES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getJavaGenericServices());
      }
      if (hasPyGenericServices()) {
        hash = (37 * hash) + PY_GENERIC_SERVICES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPyGenericServices());
      }
      if (hasPhpGenericServices()) {
        hash = (37 * hash) + PHP_GENERIC_SERVICES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPhpGenericServices());
      }
      if (hasDeprecated()) {
        hash = (37 * hash) + DEPRECATED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getDeprecated());
      }
      if (hasCcEnableArenas()) {
        hash = (37 * hash) + CC_ENABLE_ARENAS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getCcEnableArenas());
      }
      if (hasObjcClassPrefix()) {
        hash = (37 * hash) + OBJC_CLASS_PREFIX_FIELD_NUMBER;
        hash = (53 * hash) + getObjcClassPrefix().hashCode();
      }
      if (hasCsharpNamespace()) {
        hash = (37 * hash) + CSHARP_NAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + getCsharpNamespace().hashCode();
      }
      if (hasSwiftPrefix()) {
        hash = (37 * hash) + SWIFT_PREFIX_FIELD_NUMBER;
        hash = (53 * hash) + getSwiftPrefix().hashCode();
      }
      if (hasPhpClassPrefix()) {
        hash = (37 * hash) + PHP_CLASS_PREFIX_FIELD_NUMBER;
        hash = (53 * hash) + getPhpClassPrefix().hashCode();
      }
      if (hasPhpNamespace()) {
        hash = (37 * hash) + PHP_NAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + getPhpNamespace().hashCode();
      }
      if (hasPhpMetadataNamespace()) {
        hash = (37 * hash) + PHP_METADATA_NAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + getPhpMetadataNamespace().hashCode();
      }
      if (hasRubyPackage()) {
        hash = (37 * hash) + RUBY_PACKAGE_FIELD_NUMBER;
        hash = (53 * hash) + getRubyPackage().hashCode();
      }
      if (hasFeatures()) {
        hash = (37 * hash) + FEATURES_FIELD_NUMBER;
        hash = (53 * hash) + getFeatures().hashCode();
      }
      if (getUninterpretedOptionCount() > 0) {
        hash = (37 * hash) + UNINTERPRETED_OPTION_FIELD_NUMBER;
        hash = (53 * hash) + getUninterpretedOptionList().hashCode();
      }
      hash = hashFields(hash, getExtensionFields());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FileOptions prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.FileOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
          com.google.protobuf.DescriptorProtos.FileOptions, Builder> implements
        // @@protoc_insertion_point(builder_implements:google.protobuf.FileOptions)
        com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.FileOptions.class, com.google.protobuf.DescriptorProtos.FileOptions.Builder.class);
      }
      // Construct using com.google.protobuf.DescriptorProtos.FileOptions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getFeaturesFieldBuilder();
          getUninterpretedOptionFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        javaPackage_ = "";
        javaOuterClassname_ = "";
        javaMultipleFiles_ = false;
        javaGenerateEqualsAndHash_ = false;
        javaStringCheckUtf8_ = false;
        optimizeFor_ = 1;
        goPackage_ = "";
        ccGenericServices_ = false;
        javaGenericServices_ = false;
        pyGenericServices_ = false;
        phpGenericServices_ = false;
        deprecated_ = false;
        ccEnableArenas_ = true;
        objcClassPrefix_ = "";
        csharpNamespace_ = "";
        swiftPrefix_ = "";
        phpClassPrefix_ = "";
        phpNamespace_ = "";
        phpMetadataNamespace_ = "";
        rubyPackage_ = "";
        features_ = null;
        if (featuresBuilder_ != null) {
          featuresBuilder_.dispose();
          featuresBuilder_ = null;
        }
        if (uninterpretedOptionBuilder_ == null) {
          uninterpretedOption_ = java.util.Collections.emptyList();
        } else {
          uninterpretedOption_ = null;
          uninterpretedOptionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00200000);
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_descriptor;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FileOptions getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance();
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FileOptions build() {
        com.google.protobuf.DescriptorProtos.FileOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FileOptions buildPartial() {
        com.google.protobuf.DescriptorProtos.FileOptions result = new com.google.protobuf.DescriptorProtos.FileOptions(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }
      private void buildPartialRepeatedFields(com.google.protobuf.DescriptorProtos.FileOptions result) {
        if (uninterpretedOptionBuilder_ == null) {
          if (((bitField0_ & 0x00200000) != 0)) {
            uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
            bitField0_ = (bitField0_ & ~0x00200000);
          }
          result.uninterpretedOption_ = uninterpretedOption_;
        } else {
          result.uninterpretedOption_ = uninterpretedOptionBuilder_.build();
        }
      }
      private void buildPartial0(com.google.protobuf.DescriptorProtos.FileOptions result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.javaPackage_ = javaPackage_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.javaOuterClassname_ = javaOuterClassname_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.javaMultipleFiles_ = javaMultipleFiles_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.javaGenerateEqualsAndHash_ = javaGenerateEqualsAndHash_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.javaStringCheckUtf8_ = javaStringCheckUtf8_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.optimizeFor_ = optimizeFor_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.goPackage_ = goPackage_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.ccGenericServices_ = ccGenericServices_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.javaGenericServices_ = javaGenericServices_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.pyGenericServices_ = pyGenericServices_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.phpGenericServices_ = phpGenericServices_;
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.deprecated_ = deprecated_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.ccEnableArenas_ = ccEnableArenas_;
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.objcClassPrefix_ = objcClassPrefix_;
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.csharpNamespace_ = csharpNamespace_;
          to_bitField0_ |= 0x00004000;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.swiftPrefix_ = swiftPrefix_;
          to_bitField0_ |= 0x00008000;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.phpClassPrefix_ = phpClassPrefix_;
          to_bitField0_ |= 0x00010000;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.phpNamespace_ = phpNamespace_;
          to_bitField0_ |= 0x00020000;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.phpMetadataNamespace_ = phpMetadataNamespace_;
          to_bitField0_ |= 0x00040000;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.rubyPackage_ = rubyPackage_;
          to_bitField0_ |= 0x00080000;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          result.features_ = featuresBuilder_ == null
              ? features_
              : featuresBuilder_.build();
          to_bitField0_ |= 0x00100000;
        }
        result.bitField0_ |= to_bitField0_;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public  Builder setExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              com.google.protobuf.DescriptorProtos.FileOptions, Type> extension,
          Type value) {
        return super.setExtension(extension, value);
      }
      @java.lang.Override
      public  Builder setExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              com.google.protobuf.DescriptorProtos.FileOptions, java.util.List> extension,
          int index, Type value) {
        return super.setExtension(extension, index, value);
      }
      @java.lang.Override
      public  Builder addExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              com.google.protobuf.DescriptorProtos.FileOptions, java.util.List> extension,
          Type value) {
        return super.addExtension(extension, value);
      }
      @java.lang.Override
      public  Builder clearExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              com.google.protobuf.DescriptorProtos.FileOptions, T> extension) {
        return super.clearExtension(extension);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.FileOptions) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.FileOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.FileOptions other) {
        if (other == com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance()) return this;
        if (other.hasJavaPackage()) {
          javaPackage_ = other.javaPackage_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasJavaOuterClassname()) {
          javaOuterClassname_ = other.javaOuterClassname_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasJavaMultipleFiles()) {
          setJavaMultipleFiles(other.getJavaMultipleFiles());
        }
        if (other.hasJavaGenerateEqualsAndHash()) {
          setJavaGenerateEqualsAndHash(other.getJavaGenerateEqualsAndHash());
        }
        if (other.hasJavaStringCheckUtf8()) {
          setJavaStringCheckUtf8(other.getJavaStringCheckUtf8());
        }
        if (other.hasOptimizeFor()) {
          setOptimizeFor(other.getOptimizeFor());
        }
        if (other.hasGoPackage()) {
          goPackage_ = other.goPackage_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (other.hasCcGenericServices()) {
          setCcGenericServices(other.getCcGenericServices());
        }
        if (other.hasJavaGenericServices()) {
          setJavaGenericServices(other.getJavaGenericServices());
        }
        if (other.hasPyGenericServices()) {
          setPyGenericServices(other.getPyGenericServices());
        }
        if (other.hasPhpGenericServices()) {
          setPhpGenericServices(other.getPhpGenericServices());
        }
        if (other.hasDeprecated()) {
          setDeprecated(other.getDeprecated());
        }
        if (other.hasCcEnableArenas()) {
          setCcEnableArenas(other.getCcEnableArenas());
        }
        if (other.hasObjcClassPrefix()) {
          objcClassPrefix_ = other.objcClassPrefix_;
          bitField0_ |= 0x00002000;
          onChanged();
        }
        if (other.hasCsharpNamespace()) {
          csharpNamespace_ = other.csharpNamespace_;
          bitField0_ |= 0x00004000;
          onChanged();
        }
        if (other.hasSwiftPrefix()) {
          swiftPrefix_ = other.swiftPrefix_;
          bitField0_ |= 0x00008000;
          onChanged();
        }
        if (other.hasPhpClassPrefix()) {
          phpClassPrefix_ = other.phpClassPrefix_;
          bitField0_ |= 0x00010000;
          onChanged();
        }
        if (other.hasPhpNamespace()) {
          phpNamespace_ = other.phpNamespace_;
          bitField0_ |= 0x00020000;
          onChanged();
        }
        if (other.hasPhpMetadataNamespace()) {
          phpMetadataNamespace_ = other.phpMetadataNamespace_;
          bitField0_ |= 0x00040000;
          onChanged();
        }
        if (other.hasRubyPackage()) {
          rubyPackage_ = other.rubyPackage_;
          bitField0_ |= 0x00080000;
          onChanged();
        }
        if (other.hasFeatures()) {
          mergeFeatures(other.getFeatures());
        }
        if (uninterpretedOptionBuilder_ == null) {
          if (!other.uninterpretedOption_.isEmpty()) {
            if (uninterpretedOption_.isEmpty()) {
              uninterpretedOption_ = other.uninterpretedOption_;
              bitField0_ = (bitField0_ & ~0x00200000);
            } else {
              ensureUninterpretedOptionIsMutable();
              uninterpretedOption_.addAll(other.uninterpretedOption_);
            }
            onChanged();
          }
        } else {
          if (!other.uninterpretedOption_.isEmpty()) {
            if (uninterpretedOptionBuilder_.isEmpty()) {
              uninterpretedOptionBuilder_.dispose();
              uninterpretedOptionBuilder_ = null;
              uninterpretedOption_ = other.uninterpretedOption_;
              bitField0_ = (bitField0_ & ~0x00200000);
              uninterpretedOptionBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getUninterpretedOptionFieldBuilder() : null;
            } else {
              uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_);
            }
          }
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        if (hasFeatures()) {
          if (!getFeatures().isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getUninterpretedOptionCount(); i++) {
          if (!getUninterpretedOption(i).isInitialized()) {
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          return false;
        }
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                javaPackage_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 66: {
                javaOuterClassname_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 66
              case 72: {
                int tmpRaw = input.readEnum();
                com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode tmpValue =
                    com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(9, tmpRaw);
                } else {
                  optimizeFor_ = tmpRaw;
                  bitField0_ |= 0x00000020;
                }
                break;
              } // case 72
              case 80: {
                javaMultipleFiles_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 80
              case 90: {
                goPackage_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 90
              case 128: {
                ccGenericServices_ = input.readBool();
                bitField0_ |= 0x00000080;
                break;
              } // case 128
              case 136: {
                javaGenericServices_ = input.readBool();
                bitField0_ |= 0x00000100;
                break;
              } // case 136
              case 144: {
                pyGenericServices_ = input.readBool();
                bitField0_ |= 0x00000200;
                break;
              } // case 144
              case 160: {
                javaGenerateEqualsAndHash_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 160
              case 184: {
                deprecated_ = input.readBool();
                bitField0_ |= 0x00000800;
                break;
              } // case 184
              case 216: {
                javaStringCheckUtf8_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 216
              case 248: {
                ccEnableArenas_ = input.readBool();
                bitField0_ |= 0x00001000;
                break;
              } // case 248
              case 290: {
                objcClassPrefix_ = input.readBytes();
                bitField0_ |= 0x00002000;
                break;
              } // case 290
              case 298: {
                csharpNamespace_ = input.readBytes();
                bitField0_ |= 0x00004000;
                break;
              } // case 298
              case 314: {
                swiftPrefix_ = input.readBytes();
                bitField0_ |= 0x00008000;
                break;
              } // case 314
              case 322: {
                phpClassPrefix_ = input.readBytes();
                bitField0_ |= 0x00010000;
                break;
              } // case 322
              case 330: {
                phpNamespace_ = input.readBytes();
                bitField0_ |= 0x00020000;
                break;
              } // case 330
              case 336: {
                phpGenericServices_ = input.readBool();
                bitField0_ |= 0x00000400;
                break;
              } // case 336
              case 354: {
                phpMetadataNamespace_ = input.readBytes();
                bitField0_ |= 0x00040000;
                break;
              } // case 354
              case 362: {
                rubyPackage_ = input.readBytes();
                bitField0_ |= 0x00080000;
                break;
              } // case 362
              case 402: {
                input.readMessage(
                    getFeaturesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00100000;
                break;
              } // case 402
              case 7994: {
                com.google.protobuf.DescriptorProtos.UninterpretedOption m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER,
                        extensionRegistry);
                if (uninterpretedOptionBuilder_ == null) {
                  ensureUninterpretedOptionIsMutable();
                  uninterpretedOption_.add(m);
                } else {
                  uninterpretedOptionBuilder_.addMessage(m);
                }
                break;
              } // case 7994
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private java.lang.Object javaPackage_ = "";
      /**
       * optional string java_package = 1 [json_name = "javaPackage"];
       * @return Whether the javaPackage field is set.
       */
      public boolean hasJavaPackage() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional string java_package = 1 [json_name = "javaPackage"];
       * @return The javaPackage.
       */
      public java.lang.String getJavaPackage() {
        java.lang.Object ref = javaPackage_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            javaPackage_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string java_package = 1 [json_name = "javaPackage"];
       * @return The bytes for javaPackage.
       */
      public com.google.protobuf.ByteString
          getJavaPackageBytes() {
        java.lang.Object ref = javaPackage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          javaPackage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string java_package = 1 [json_name = "javaPackage"];
       * @param value The javaPackage to set.
       * @return This builder for chaining.
       */
      public Builder setJavaPackage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        javaPackage_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * optional string java_package = 1 [json_name = "javaPackage"];
       * @return This builder for chaining.
       */
      public Builder clearJavaPackage() {
        javaPackage_ = getDefaultInstance().getJavaPackage();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * optional string java_package = 1 [json_name = "javaPackage"];
       * @param value The bytes for javaPackage to set.
       * @return This builder for chaining.
       */
      public Builder setJavaPackageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        javaPackage_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      private java.lang.Object javaOuterClassname_ = "";
      /**
       * optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];
       * @return Whether the javaOuterClassname field is set.
       */
      public boolean hasJavaOuterClassname() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];
       * @return The javaOuterClassname.
       */
      public java.lang.String getJavaOuterClassname() {
        java.lang.Object ref = javaOuterClassname_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            javaOuterClassname_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];
       * @return The bytes for javaOuterClassname.
       */
      public com.google.protobuf.ByteString
          getJavaOuterClassnameBytes() {
        java.lang.Object ref = javaOuterClassname_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          javaOuterClassname_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];
       * @param value The javaOuterClassname to set.
       * @return This builder for chaining.
       */
      public Builder setJavaOuterClassname(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        javaOuterClassname_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];
       * @return This builder for chaining.
       */
      public Builder clearJavaOuterClassname() {
        javaOuterClassname_ = getDefaultInstance().getJavaOuterClassname();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];
       * @param value The bytes for javaOuterClassname to set.
       * @return This builder for chaining.
       */
      public Builder setJavaOuterClassnameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        javaOuterClassname_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      private boolean javaMultipleFiles_ ;
      /**
       * optional bool java_multiple_files = 10 [default = false, json_name = "javaMultipleFiles"];
       * @return Whether the javaMultipleFiles field is set.
       */
      @java.lang.Override
      public boolean hasJavaMultipleFiles() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * optional bool java_multiple_files = 10 [default = false, json_name = "javaMultipleFiles"];
       * @return The javaMultipleFiles.
       */
      @java.lang.Override
      public boolean getJavaMultipleFiles() {
        return javaMultipleFiles_;
      }
      /**
       * optional bool java_multiple_files = 10 [default = false, json_name = "javaMultipleFiles"];
       * @param value The javaMultipleFiles to set.
       * @return This builder for chaining.
       */
      public Builder setJavaMultipleFiles(boolean value) {
        javaMultipleFiles_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * optional bool java_multiple_files = 10 [default = false, json_name = "javaMultipleFiles"];
       * @return This builder for chaining.
       */
      public Builder clearJavaMultipleFiles() {
        bitField0_ = (bitField0_ & ~0x00000004);
        javaMultipleFiles_ = false;
        onChanged();
        return this;
      }
      private boolean javaGenerateEqualsAndHash_ ;
      /**
       * optional bool java_generate_equals_and_hash = 20 [json_name = "javaGenerateEqualsAndHash", deprecated = true];
       * @deprecated google.protobuf.FileOptions.java_generate_equals_and_hash is deprecated.
       *     See google/protobuf/descriptor.proto;l=0
       * @return Whether the javaGenerateEqualsAndHash field is set.
       */
      @java.lang.Override
      @java.lang.Deprecated public boolean hasJavaGenerateEqualsAndHash() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * optional bool java_generate_equals_and_hash = 20 [json_name = "javaGenerateEqualsAndHash", deprecated = true];
       * @deprecated google.protobuf.FileOptions.java_generate_equals_and_hash is deprecated.
       *     See google/protobuf/descriptor.proto;l=0
       * @return The javaGenerateEqualsAndHash.
       */
      @java.lang.Override
      @java.lang.Deprecated public boolean getJavaGenerateEqualsAndHash() {
        return javaGenerateEqualsAndHash_;
      }
      /**
       * optional bool java_generate_equals_and_hash = 20 [json_name = "javaGenerateEqualsAndHash", deprecated = true];
       * @deprecated google.protobuf.FileOptions.java_generate_equals_and_hash is deprecated.
       *     See google/protobuf/descriptor.proto;l=0
       * @param value The javaGenerateEqualsAndHash to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setJavaGenerateEqualsAndHash(boolean value) {
        javaGenerateEqualsAndHash_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * optional bool java_generate_equals_and_hash = 20 [json_name = "javaGenerateEqualsAndHash", deprecated = true];
       * @deprecated google.protobuf.FileOptions.java_generate_equals_and_hash is deprecated.
       *     See google/protobuf/descriptor.proto;l=0
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearJavaGenerateEqualsAndHash() {
        bitField0_ = (bitField0_ & ~0x00000008);
        javaGenerateEqualsAndHash_ = false;
        onChanged();
        return this;
      }
      private boolean javaStringCheckUtf8_ ;
      /**
       * optional bool java_string_check_utf8 = 27 [default = false, json_name = "javaStringCheckUtf8"];
       * @return Whether the javaStringCheckUtf8 field is set.
       */
      @java.lang.Override
      public boolean hasJavaStringCheckUtf8() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * optional bool java_string_check_utf8 = 27 [default = false, json_name = "javaStringCheckUtf8"];
       * @return The javaStringCheckUtf8.
       */
      @java.lang.Override
      public boolean getJavaStringCheckUtf8() {
        return javaStringCheckUtf8_;
      }
      /**
       * optional bool java_string_check_utf8 = 27 [default = false, json_name = "javaStringCheckUtf8"];
       * @param value The javaStringCheckUtf8 to set.
       * @return This builder for chaining.
       */
      public Builder setJavaStringCheckUtf8(boolean value) {
        javaStringCheckUtf8_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * optional bool java_string_check_utf8 = 27 [default = false, json_name = "javaStringCheckUtf8"];
       * @return This builder for chaining.
       */
      public Builder clearJavaStringCheckUtf8() {
        bitField0_ = (bitField0_ & ~0x00000010);
        javaStringCheckUtf8_ = false;
        onChanged();
        return this;
      }
      private int optimizeFor_ = 1;
      /**
       * optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED, json_name = "optimizeFor"];
       * @return Whether the optimizeFor field is set.
       */
      @java.lang.Override public boolean hasOptimizeFor() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED, json_name = "optimizeFor"];
       * @return The optimizeFor.
       */
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor() {
        com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode result = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.forNumber(optimizeFor_);
        return result == null ? com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED : result;
      }
      /**
       * optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED, json_name = "optimizeFor"];
       * @param value The optimizeFor to set.
       * @return This builder for chaining.
       */
      public Builder setOptimizeFor(com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000020;
        optimizeFor_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED, json_name = "optimizeFor"];
       * @return This builder for chaining.
       */
      public Builder clearOptimizeFor() {
        bitField0_ = (bitField0_ & ~0x00000020);
        optimizeFor_ = 1;
        onChanged();
        return this;
      }
      private java.lang.Object goPackage_ = "";
      /**
       * optional string go_package = 11 [json_name = "goPackage"];
       * @return Whether the goPackage field is set.
       */
      public boolean hasGoPackage() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * optional string go_package = 11 [json_name = "goPackage"];
       * @return The goPackage.
       */
      public java.lang.String getGoPackage() {
        java.lang.Object ref = goPackage_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            goPackage_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string go_package = 11 [json_name = "goPackage"];
       * @return The bytes for goPackage.
       */
      public com.google.protobuf.ByteString
          getGoPackageBytes() {
        java.lang.Object ref = goPackage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          goPackage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string go_package = 11 [json_name = "goPackage"];
       * @param value The goPackage to set.
       * @return This builder for chaining.
       */
      public Builder setGoPackage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        goPackage_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * optional string go_package = 11 [json_name = "goPackage"];
       * @return This builder for chaining.
       */
      public Builder clearGoPackage() {
        goPackage_ = getDefaultInstance().getGoPackage();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * optional string go_package = 11 [json_name = "goPackage"];
       * @param value The bytes for goPackage to set.
       * @return This builder for chaining.
       */
      public Builder setGoPackageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        goPackage_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      private boolean ccGenericServices_ ;
      /**
       * optional bool cc_generic_services = 16 [default = false, json_name = "ccGenericServices"];
       * @return Whether the ccGenericServices field is set.
       */
      @java.lang.Override
      public boolean hasCcGenericServices() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * optional bool cc_generic_services = 16 [default = false, json_name = "ccGenericServices"];
       * @return The ccGenericServices.
       */
      @java.lang.Override
      public boolean getCcGenericServices() {
        return ccGenericServices_;
      }
      /**
       * optional bool cc_generic_services = 16 [default = false, json_name = "ccGenericServices"];
       * @param value The ccGenericServices to set.
       * @return This builder for chaining.
       */
      public Builder setCcGenericServices(boolean value) {
        ccGenericServices_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * optional bool cc_generic_services = 16 [default = false, json_name = "ccGenericServices"];
       * @return This builder for chaining.
       */
      public Builder clearCcGenericServices() {
        bitField0_ = (bitField0_ & ~0x00000080);
        ccGenericServices_ = false;
        onChanged();
        return this;
      }
      private boolean javaGenericServices_ ;
      /**
       * optional bool java_generic_services = 17 [default = false, json_name = "javaGenericServices"];
       * @return Whether the javaGenericServices field is set.
       */
      @java.lang.Override
      public boolean hasJavaGenericServices() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * optional bool java_generic_services = 17 [default = false, json_name = "javaGenericServices"];
       * @return The javaGenericServices.
       */
      @java.lang.Override
      public boolean getJavaGenericServices() {
        return javaGenericServices_;
      }
      /**
       * optional bool java_generic_services = 17 [default = false, json_name = "javaGenericServices"];
       * @param value The javaGenericServices to set.
       * @return This builder for chaining.
       */
      public Builder setJavaGenericServices(boolean value) {
        javaGenericServices_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * optional bool java_generic_services = 17 [default = false, json_name = "javaGenericServices"];
       * @return This builder for chaining.
       */
      public Builder clearJavaGenericServices() {
        bitField0_ = (bitField0_ & ~0x00000100);
        javaGenericServices_ = false;
        onChanged();
        return this;
      }
      private boolean pyGenericServices_ ;
      /**
       * optional bool py_generic_services = 18 [default = false, json_name = "pyGenericServices"];
       * @return Whether the pyGenericServices field is set.
       */
      @java.lang.Override
      public boolean hasPyGenericServices() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * optional bool py_generic_services = 18 [default = false, json_name = "pyGenericServices"];
       * @return The pyGenericServices.
       */
      @java.lang.Override
      public boolean getPyGenericServices() {
        return pyGenericServices_;
      }
      /**
       * optional bool py_generic_services = 18 [default = false, json_name = "pyGenericServices"];
       * @param value The pyGenericServices to set.
       * @return This builder for chaining.
       */
      public Builder setPyGenericServices(boolean value) {
        pyGenericServices_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * optional bool py_generic_services = 18 [default = false, json_name = "pyGenericServices"];
       * @return This builder for chaining.
       */
      public Builder clearPyGenericServices() {
        bitField0_ = (bitField0_ & ~0x00000200);
        pyGenericServices_ = false;
        onChanged();
        return this;
      }
      private boolean phpGenericServices_ ;
      /**
       * optional bool php_generic_services = 42 [default = false, json_name = "phpGenericServices"];
       * @return Whether the phpGenericServices field is set.
       */
      @java.lang.Override
      public boolean hasPhpGenericServices() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * optional bool php_generic_services = 42 [default = false, json_name = "phpGenericServices"];
       * @return The phpGenericServices.
       */
      @java.lang.Override
      public boolean getPhpGenericServices() {
        return phpGenericServices_;
      }
      /**
       * optional bool php_generic_services = 42 [default = false, json_name = "phpGenericServices"];
       * @param value The phpGenericServices to set.
       * @return This builder for chaining.
       */
      public Builder setPhpGenericServices(boolean value) {
        phpGenericServices_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * optional bool php_generic_services = 42 [default = false, json_name = "phpGenericServices"];
       * @return This builder for chaining.
       */
      public Builder clearPhpGenericServices() {
        bitField0_ = (bitField0_ & ~0x00000400);
        phpGenericServices_ = false;
        onChanged();
        return this;
      }
      private boolean deprecated_ ;
      /**
       * optional bool deprecated = 23 [default = false, json_name = "deprecated"];
       * @return Whether the deprecated field is set.
       */
      @java.lang.Override
      public boolean hasDeprecated() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * optional bool deprecated = 23 [default = false, json_name = "deprecated"];
       * @return The deprecated.
       */
      @java.lang.Override
      public boolean getDeprecated() {
        return deprecated_;
      }
      /**
       * optional bool deprecated = 23 [default = false, json_name = "deprecated"];
       * @param value The deprecated to set.
       * @return This builder for chaining.
       */
      public Builder setDeprecated(boolean value) {
        deprecated_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * optional bool deprecated = 23 [default = false, json_name = "deprecated"];
       * @return This builder for chaining.
       */
      public Builder clearDeprecated() {
        bitField0_ = (bitField0_ & ~0x00000800);
        deprecated_ = false;
        onChanged();
        return this;
      }
      private boolean ccEnableArenas_ = true;
      /**
       * optional bool cc_enable_arenas = 31 [default = true, json_name = "ccEnableArenas"];
       * @return Whether the ccEnableArenas field is set.
       */
      @java.lang.Override
      public boolean hasCcEnableArenas() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * optional bool cc_enable_arenas = 31 [default = true, json_name = "ccEnableArenas"];
       * @return The ccEnableArenas.
       */
      @java.lang.Override
      public boolean getCcEnableArenas() {
        return ccEnableArenas_;
      }
      /**
       * optional bool cc_enable_arenas = 31 [default = true, json_name = "ccEnableArenas"];
       * @param value The ccEnableArenas to set.
       * @return This builder for chaining.
       */
      public Builder setCcEnableArenas(boolean value) {
        ccEnableArenas_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * optional bool cc_enable_arenas = 31 [default = true, json_name = "ccEnableArenas"];
       * @return This builder for chaining.
       */
      public Builder clearCcEnableArenas() {
        bitField0_ = (bitField0_ & ~0x00001000);
        ccEnableArenas_ = true;
        onChanged();
        return this;
      }
      private java.lang.Object objcClassPrefix_ = "";
      /**
       * optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];
       * @return Whether the objcClassPrefix field is set.
       */
      public boolean hasObjcClassPrefix() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];
       * @return The objcClassPrefix.
       */
      public java.lang.String getObjcClassPrefix() {
        java.lang.Object ref = objcClassPrefix_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            objcClassPrefix_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];
       * @return The bytes for objcClassPrefix.
       */
      public com.google.protobuf.ByteString
          getObjcClassPrefixBytes() {
        java.lang.Object ref = objcClassPrefix_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          objcClassPrefix_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];
       * @param value The objcClassPrefix to set.
       * @return This builder for chaining.
       */
      public Builder setObjcClassPrefix(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        objcClassPrefix_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];
       * @return This builder for chaining.
       */
      public Builder clearObjcClassPrefix() {
        objcClassPrefix_ = getDefaultInstance().getObjcClassPrefix();
        bitField0_ = (bitField0_ & ~0x00002000);
        onChanged();
        return this;
      }
      /**
       * optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];
       * @param value The bytes for objcClassPrefix to set.
       * @return This builder for chaining.
       */
      public Builder setObjcClassPrefixBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        objcClassPrefix_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      private java.lang.Object csharpNamespace_ = "";
      /**
       * optional string csharp_namespace = 37 [json_name = "csharpNamespace"];
       * @return Whether the csharpNamespace field is set.
       */
      public boolean hasCsharpNamespace() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * optional string csharp_namespace = 37 [json_name = "csharpNamespace"];
       * @return The csharpNamespace.
       */
      public java.lang.String getCsharpNamespace() {
        java.lang.Object ref = csharpNamespace_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            csharpNamespace_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string csharp_namespace = 37 [json_name = "csharpNamespace"];
       * @return The bytes for csharpNamespace.
       */
      public com.google.protobuf.ByteString
          getCsharpNamespaceBytes() {
        java.lang.Object ref = csharpNamespace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          csharpNamespace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string csharp_namespace = 37 [json_name = "csharpNamespace"];
       * @param value The csharpNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setCsharpNamespace(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        csharpNamespace_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * optional string csharp_namespace = 37 [json_name = "csharpNamespace"];
       * @return This builder for chaining.
       */
      public Builder clearCsharpNamespace() {
        csharpNamespace_ = getDefaultInstance().getCsharpNamespace();
        bitField0_ = (bitField0_ & ~0x00004000);
        onChanged();
        return this;
      }
      /**
       * optional string csharp_namespace = 37 [json_name = "csharpNamespace"];
       * @param value The bytes for csharpNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setCsharpNamespaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        csharpNamespace_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      private java.lang.Object swiftPrefix_ = "";
      /**
       * optional string swift_prefix = 39 [json_name = "swiftPrefix"];
       * @return Whether the swiftPrefix field is set.
       */
      public boolean hasSwiftPrefix() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * optional string swift_prefix = 39 [json_name = "swiftPrefix"];
       * @return The swiftPrefix.
       */
      public java.lang.String getSwiftPrefix() {
        java.lang.Object ref = swiftPrefix_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            swiftPrefix_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string swift_prefix = 39 [json_name = "swiftPrefix"];
       * @return The bytes for swiftPrefix.
       */
      public com.google.protobuf.ByteString
          getSwiftPrefixBytes() {
        java.lang.Object ref = swiftPrefix_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          swiftPrefix_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string swift_prefix = 39 [json_name = "swiftPrefix"];
       * @param value The swiftPrefix to set.
       * @return This builder for chaining.
       */
      public Builder setSwiftPrefix(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        swiftPrefix_ = value;
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * optional string swift_prefix = 39 [json_name = "swiftPrefix"];
       * @return This builder for chaining.
       */
      public Builder clearSwiftPrefix() {
        swiftPrefix_ = getDefaultInstance().getSwiftPrefix();
        bitField0_ = (bitField0_ & ~0x00008000);
        onChanged();
        return this;
      }
      /**
       * optional string swift_prefix = 39 [json_name = "swiftPrefix"];
       * @param value The bytes for swiftPrefix to set.
       * @return This builder for chaining.
       */
      public Builder setSwiftPrefixBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        swiftPrefix_ = value;
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      private java.lang.Object phpClassPrefix_ = "";
      /**
       * optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];
       * @return Whether the phpClassPrefix field is set.
       */
      public boolean hasPhpClassPrefix() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];
       * @return The phpClassPrefix.
       */
      public java.lang.String getPhpClassPrefix() {
        java.lang.Object ref = phpClassPrefix_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            phpClassPrefix_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];
       * @return The bytes for phpClassPrefix.
       */
      public com.google.protobuf.ByteString
          getPhpClassPrefixBytes() {
        java.lang.Object ref = phpClassPrefix_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          phpClassPrefix_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];
       * @param value The phpClassPrefix to set.
       * @return This builder for chaining.
       */
      public Builder setPhpClassPrefix(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        phpClassPrefix_ = value;
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];
       * @return This builder for chaining.
       */
      public Builder clearPhpClassPrefix() {
        phpClassPrefix_ = getDefaultInstance().getPhpClassPrefix();
        bitField0_ = (bitField0_ & ~0x00010000);
        onChanged();
        return this;
      }
      /**
       * optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];
       * @param value The bytes for phpClassPrefix to set.
       * @return This builder for chaining.
       */
      public Builder setPhpClassPrefixBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        phpClassPrefix_ = value;
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      private java.lang.Object phpNamespace_ = "";
      /**
       * optional string php_namespace = 41 [json_name = "phpNamespace"];
       * @return Whether the phpNamespace field is set.
       */
      public boolean hasPhpNamespace() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * optional string php_namespace = 41 [json_name = "phpNamespace"];
       * @return The phpNamespace.
       */
      public java.lang.String getPhpNamespace() {
        java.lang.Object ref = phpNamespace_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            phpNamespace_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string php_namespace = 41 [json_name = "phpNamespace"];
       * @return The bytes for phpNamespace.
       */
      public com.google.protobuf.ByteString
          getPhpNamespaceBytes() {
        java.lang.Object ref = phpNamespace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          phpNamespace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string php_namespace = 41 [json_name = "phpNamespace"];
       * @param value The phpNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setPhpNamespace(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        phpNamespace_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * optional string php_namespace = 41 [json_name = "phpNamespace"];
       * @return This builder for chaining.
       */
      public Builder clearPhpNamespace() {
        phpNamespace_ = getDefaultInstance().getPhpNamespace();
        bitField0_ = (bitField0_ & ~0x00020000);
        onChanged();
        return this;
      }
      /**
       * optional string php_namespace = 41 [json_name = "phpNamespace"];
       * @param value The bytes for phpNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setPhpNamespaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        phpNamespace_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      private java.lang.Object phpMetadataNamespace_ = "";
      /**
       * optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];
       * @return Whether the phpMetadataNamespace field is set.
       */
      public boolean hasPhpMetadataNamespace() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];
       * @return The phpMetadataNamespace.
       */
      public java.lang.String getPhpMetadataNamespace() {
        java.lang.Object ref = phpMetadataNamespace_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            phpMetadataNamespace_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];
       * @return The bytes for phpMetadataNamespace.
       */
      public com.google.protobuf.ByteString
          getPhpMetadataNamespaceBytes() {
        java.lang.Object ref = phpMetadataNamespace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          phpMetadataNamespace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];
       * @param value The phpMetadataNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setPhpMetadataNamespace(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        phpMetadataNamespace_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];
       * @return This builder for chaining.
       */
      public Builder clearPhpMetadataNamespace() {
        phpMetadataNamespace_ = getDefaultInstance().getPhpMetadataNamespace();
        bitField0_ = (bitField0_ & ~0x00040000);
        onChanged();
        return this;
      }
      /**
       * optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];
       * @param value The bytes for phpMetadataNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setPhpMetadataNamespaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        phpMetadataNamespace_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      private java.lang.Object rubyPackage_ = "";
      /**
       * optional string ruby_package = 45 [json_name = "rubyPackage"];
       * @return Whether the rubyPackage field is set.
       */
      public boolean hasRubyPackage() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * optional string ruby_package = 45 [json_name = "rubyPackage"];
       * @return The rubyPackage.
       */
      public java.lang.String getRubyPackage() {
        java.lang.Object ref = rubyPackage_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            rubyPackage_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string ruby_package = 45 [json_name = "rubyPackage"];
       * @return The bytes for rubyPackage.
       */
      public com.google.protobuf.ByteString
          getRubyPackageBytes() {
        java.lang.Object ref = rubyPackage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          rubyPackage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string ruby_package = 45 [json_name = "rubyPackage"];
       * @param value The rubyPackage to set.
       * @return This builder for chaining.
       */
      public Builder setRubyPackage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        rubyPackage_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * optional string ruby_package = 45 [json_name = "rubyPackage"];
       * @return This builder for chaining.
       */
      public Builder clearRubyPackage() {
        rubyPackage_ = getDefaultInstance().getRubyPackage();
        bitField0_ = (bitField0_ & ~0x00080000);
        onChanged();
        return this;
      }
      /**
       * optional string ruby_package = 45 [json_name = "rubyPackage"];
       * @param value The bytes for rubyPackage to set.
       * @return This builder for chaining.
       */
      public Builder setRubyPackageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        rubyPackage_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      private com.google.protobuf.DescriptorProtos.FeatureSet features_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FeatureSet, com.google.protobuf.DescriptorProtos.FeatureSet.Builder, com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder> featuresBuilder_;
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       * @return Whether the features field is set.
       */
      public boolean hasFeatures() {
        return ((bitField0_ & 0x00100000) != 0);
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       * @return The features.
       */
      public com.google.protobuf.DescriptorProtos.FeatureSet getFeatures() {
        if (featuresBuilder_ == null) {
          return features_ == null ? com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance() : features_;
        } else {
          return featuresBuilder_.getMessage();
        }
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      public Builder setFeatures(com.google.protobuf.DescriptorProtos.FeatureSet value) {
        if (featuresBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          features_ = value;
        } else {
          featuresBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      public Builder setFeatures(
          com.google.protobuf.DescriptorProtos.FeatureSet.Builder builderForValue) {
        if (featuresBuilder_ == null) {
          features_ = builderForValue.build();
        } else {
          featuresBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      public Builder mergeFeatures(com.google.protobuf.DescriptorProtos.FeatureSet value) {
        if (featuresBuilder_ == null) {
          if (((bitField0_ & 0x00100000) != 0) &&
            features_ != null &&
            features_ != com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance()) {
            getFeaturesBuilder().mergeFrom(value);
          } else {
            features_ = value;
          }
        } else {
          featuresBuilder_.mergeFrom(value);
        }
        if (features_ != null) {
          bitField0_ |= 0x00100000;
          onChanged();
        }
        return this;
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      public Builder clearFeatures() {
        bitField0_ = (bitField0_ & ~0x00100000);
        features_ = null;
        if (featuresBuilder_ != null) {
          featuresBuilder_.dispose();
          featuresBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      public com.google.protobuf.DescriptorProtos.FeatureSet.Builder getFeaturesBuilder() {
        bitField0_ |= 0x00100000;
        onChanged();
        return getFeaturesFieldBuilder().getBuilder();
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      public com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder getFeaturesOrBuilder() {
        if (featuresBuilder_ != null) {
          return featuresBuilder_.getMessageOrBuilder();
        } else {
          return features_ == null ?
              com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance() : features_;
        }
      }
      /**
       * optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FeatureSet, com.google.protobuf.DescriptorProtos.FeatureSet.Builder, com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder> 
          getFeaturesFieldBuilder() {
        if (featuresBuilder_ == null) {
          featuresBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.FeatureSet, com.google.protobuf.DescriptorProtos.FeatureSet.Builder, com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder>(
                  getFeatures(),
                  getParentForChildren(),
                  isClean());
          features_ = null;
        }
        return featuresBuilder_;
      }
      private java.util.List uninterpretedOption_ =
        java.util.Collections.emptyList();
      private void ensureUninterpretedOptionIsMutable() {
        if (!((bitField0_ & 0x00200000) != 0)) {
          uninterpretedOption_ = new java.util.ArrayList(uninterpretedOption_);
          bitField0_ |= 0x00200000;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_;
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public java.util.List getUninterpretedOptionList() {
        if (uninterpretedOptionBuilder_ == null) {
          return java.util.Collections.unmodifiableList(uninterpretedOption_);
        } else {
          return uninterpretedOptionBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public int getUninterpretedOptionCount() {
        if (uninterpretedOptionBuilder_ == null) {
          return uninterpretedOption_.size();
        } else {
          return uninterpretedOptionBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
        if (uninterpretedOptionBuilder_ == null) {
          return uninterpretedOption_.get(index);
        } else {
          return uninterpretedOptionBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      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;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      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;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      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;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      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;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      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;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      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;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public Builder addAllUninterpretedOption(
          java.lang.Iterable extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) {
        if (uninterpretedOptionBuilder_ == null) {
          ensureUninterpretedOptionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, uninterpretedOption_);
          onChanged();
        } else {
          uninterpretedOptionBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public Builder clearUninterpretedOption() {
        if (uninterpretedOptionBuilder_ == null) {
          uninterpretedOption_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00200000);
          onChanged();
        } else {
          uninterpretedOptionBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public Builder removeUninterpretedOption(int index) {
        if (uninterpretedOptionBuilder_ == null) {
          ensureUninterpretedOptionIsMutable();
          uninterpretedOption_.remove(index);
          onChanged();
        } else {
          uninterpretedOptionBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder(
          int index) {
        return getUninterpretedOptionFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
          int index) {
        if (uninterpretedOptionBuilder_ == null) {
          return uninterpretedOption_.get(index);  } else {
          return uninterpretedOptionBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public java.util.List extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
           getUninterpretedOptionOrBuilderList() {
        if (uninterpretedOptionBuilder_ != null) {
          return uninterpretedOptionBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(uninterpretedOption_);
        }
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() {
        return getUninterpretedOptionFieldBuilder().addBuilder(
            com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder(
          int index) {
        return getUninterpretedOptionFieldBuilder().addBuilder(
            index, com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
       */
      public java.util.List 
           getUninterpretedOptionBuilderList() {
        return getUninterpretedOptionFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
          getUninterpretedOptionFieldBuilder() {
        if (uninterpretedOptionBuilder_ == null) {
          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                  uninterpretedOption_,
                  ((bitField0_ & 0x00200000) != 0),
                  getParentForChildren(),
                  isClean());
          uninterpretedOption_ = null;
        }
        return uninterpretedOptionBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:google.protobuf.FileOptions)
    }
    // @@protoc_insertion_point(class_scope:google.protobuf.FileOptions)
    private static final com.google.protobuf.DescriptorProtos.FileOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.protobuf.DescriptorProtos.FileOptions();
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    @java.lang.Deprecated public static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public FileOptions parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FileOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface MessageOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.protobuf.MessageOptions)
      com.google.protobuf.GeneratedMessageV3.
          ExtendableMessageOrBuilder {
    /**
     * optional bool message_set_wire_format = 1 [default = false, json_name = "messageSetWireFormat"];
     * @return Whether the messageSetWireFormat field is set.
     */
    boolean hasMessageSetWireFormat();
    /**
     * optional bool message_set_wire_format = 1 [default = false, json_name = "messageSetWireFormat"];
     * @return The messageSetWireFormat.
     */
    boolean getMessageSetWireFormat();
    /**
     * optional bool no_standard_descriptor_accessor = 2 [default = false, json_name = "noStandardDescriptorAccessor"];
     * @return Whether the noStandardDescriptorAccessor field is set.
     */
    boolean hasNoStandardDescriptorAccessor();
    /**
     * optional bool no_standard_descriptor_accessor = 2 [default = false, json_name = "noStandardDescriptorAccessor"];
     * @return The noStandardDescriptorAccessor.
     */
    boolean getNoStandardDescriptorAccessor();
    /**
     * optional bool deprecated = 3 [default = false, json_name = "deprecated"];
     * @return Whether the deprecated field is set.
     */
    boolean hasDeprecated();
    /**
     * optional bool deprecated = 3 [default = false, json_name = "deprecated"];
     * @return The deprecated.
     */
    boolean getDeprecated();
    /**
     * optional bool map_entry = 7 [json_name = "mapEntry"];
     * @return Whether the mapEntry field is set.
     */
    boolean hasMapEntry();
    /**
     * optional bool map_entry = 7 [json_name = "mapEntry"];
     * @return The mapEntry.
     */
    boolean getMapEntry();
    /**
     * optional bool deprecated_legacy_json_field_conflicts = 11 [json_name = "deprecatedLegacyJsonFieldConflicts", deprecated = true];
     * @deprecated google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts is deprecated.
     *     See google/protobuf/descriptor.proto;l=0
     * @return Whether the deprecatedLegacyJsonFieldConflicts field is set.
     */
    @java.lang.Deprecated boolean hasDeprecatedLegacyJsonFieldConflicts();
    /**
     * optional bool deprecated_legacy_json_field_conflicts = 11 [json_name = "deprecatedLegacyJsonFieldConflicts", deprecated = true];
     * @deprecated google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts is deprecated.
     *     See google/protobuf/descriptor.proto;l=0
     * @return The deprecatedLegacyJsonFieldConflicts.
     */
    @java.lang.Deprecated boolean getDeprecatedLegacyJsonFieldConflicts();
    /**
     * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
     * @return Whether the features field is set.
     */
    boolean hasFeatures();
    /**
     * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
     * @return The features.
     */
    com.google.protobuf.DescriptorProtos.FeatureSet getFeatures();
    /**
     * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
     */
    com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder getFeaturesOrBuilder();
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    java.util.List 
        getUninterpretedOptionList();
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index);
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    int getUninterpretedOptionCount();
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    java.util.List extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
        getUninterpretedOptionOrBuilderList();
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code google.protobuf.MessageOptions}
   */
  public static final class MessageOptions extends
      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
        MessageOptions> implements
      // @@protoc_insertion_point(message_implements:google.protobuf.MessageOptions)
      MessageOptionsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MessageOptions.newBuilder() to construct.
    private MessageOptions(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder builder) {
      super(builder);
    }
    private MessageOptions() {
      uninterpretedOption_ = java.util.Collections.emptyList();
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new MessageOptions();
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.protobuf.DescriptorProtos.MessageOptions.class, com.google.protobuf.DescriptorProtos.MessageOptions.Builder.class);
    }
    private int bitField0_;
    public static final int MESSAGE_SET_WIRE_FORMAT_FIELD_NUMBER = 1;
    private boolean messageSetWireFormat_ = false;
    /**
     * optional bool message_set_wire_format = 1 [default = false, json_name = "messageSetWireFormat"];
     * @return Whether the messageSetWireFormat field is set.
     */
    @java.lang.Override
    public boolean hasMessageSetWireFormat() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * optional bool message_set_wire_format = 1 [default = false, json_name = "messageSetWireFormat"];
     * @return The messageSetWireFormat.
     */
    @java.lang.Override
    public boolean getMessageSetWireFormat() {
      return messageSetWireFormat_;
    }
    public static final int NO_STANDARD_DESCRIPTOR_ACCESSOR_FIELD_NUMBER = 2;
    private boolean noStandardDescriptorAccessor_ = false;
    /**
     * optional bool no_standard_descriptor_accessor = 2 [default = false, json_name = "noStandardDescriptorAccessor"];
     * @return Whether the noStandardDescriptorAccessor field is set.
     */
    @java.lang.Override
    public boolean hasNoStandardDescriptorAccessor() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * optional bool no_standard_descriptor_accessor = 2 [default = false, json_name = "noStandardDescriptorAccessor"];
     * @return The noStandardDescriptorAccessor.
     */
    @java.lang.Override
    public boolean getNoStandardDescriptorAccessor() {
      return noStandardDescriptorAccessor_;
    }
    public static final int DEPRECATED_FIELD_NUMBER = 3;
    private boolean deprecated_ = false;
    /**
     * optional bool deprecated = 3 [default = false, json_name = "deprecated"];
     * @return Whether the deprecated field is set.
     */
    @java.lang.Override
    public boolean hasDeprecated() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * optional bool deprecated = 3 [default = false, json_name = "deprecated"];
     * @return The deprecated.
     */
    @java.lang.Override
    public boolean getDeprecated() {
      return deprecated_;
    }
    public static final int MAP_ENTRY_FIELD_NUMBER = 7;
    private boolean mapEntry_ = false;
    /**
     * optional bool map_entry = 7 [json_name = "mapEntry"];
     * @return Whether the mapEntry field is set.
     */
    @java.lang.Override
    public boolean hasMapEntry() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * optional bool map_entry = 7 [json_name = "mapEntry"];
     * @return The mapEntry.
     */
    @java.lang.Override
    public boolean getMapEntry() {
      return mapEntry_;
    }
    public static final int DEPRECATED_LEGACY_JSON_FIELD_CONFLICTS_FIELD_NUMBER = 11;
    private boolean deprecatedLegacyJsonFieldConflicts_ = false;
    /**
     * optional bool deprecated_legacy_json_field_conflicts = 11 [json_name = "deprecatedLegacyJsonFieldConflicts", deprecated = true];
     * @deprecated google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts is deprecated.
     *     See google/protobuf/descriptor.proto;l=0
     * @return Whether the deprecatedLegacyJsonFieldConflicts field is set.
     */
    @java.lang.Override
    @java.lang.Deprecated public boolean hasDeprecatedLegacyJsonFieldConflicts() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * optional bool deprecated_legacy_json_field_conflicts = 11 [json_name = "deprecatedLegacyJsonFieldConflicts", deprecated = true];
     * @deprecated google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts is deprecated.
     *     See google/protobuf/descriptor.proto;l=0
     * @return The deprecatedLegacyJsonFieldConflicts.
     */
    @java.lang.Override
    @java.lang.Deprecated public boolean getDeprecatedLegacyJsonFieldConflicts() {
      return deprecatedLegacyJsonFieldConflicts_;
    }
    public static final int FEATURES_FIELD_NUMBER = 12;
    private com.google.protobuf.DescriptorProtos.FeatureSet features_;
    /**
     * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
     * @return Whether the features field is set.
     */
    @java.lang.Override
    public boolean hasFeatures() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
     * @return The features.
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FeatureSet getFeatures() {
      return features_ == null ? com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance() : features_;
    }
    /**
     * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder getFeaturesOrBuilder() {
      return features_ == null ? com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance() : features_;
    }
    public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
    @SuppressWarnings("serial")
    private java.util.List uninterpretedOption_;
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public java.util.List getUninterpretedOptionList() {
      return uninterpretedOption_;
    }
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public java.util.List extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
        getUninterpretedOptionOrBuilderList() {
      return uninterpretedOption_;
    }
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public int getUninterpretedOptionCount() {
      return uninterpretedOption_.size();
    }
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
      return uninterpretedOption_.get(index);
    }
    /**
     * repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];
     */
    @java.lang.Override
    public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder(
        int index) {
      return uninterpretedOption_.get(index);
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      if (hasFeatures()) {
        if (!getFeatures().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getUninterpretedOptionCount(); i++) {
        if (!getUninterpretedOption(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .ExtendableMessage.ExtensionWriter
          extensionWriter = newExtensionWriter();
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBool(1, messageSetWireFormat_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, noStandardDescriptorAccessor_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, deprecated_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(7, mapEntry_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeBool(11, deprecatedLegacyJsonFieldConflicts_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(12, getFeatures());
      }
      for (int i = 0; i < uninterpretedOption_.size(); i++) {
        output.writeMessage(999, uninterpretedOption_.get(i));
      }
      extensionWriter.writeUntil(536870912, output);
      getUnknownFields().writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, messageSetWireFormat_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, noStandardDescriptorAccessor_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, deprecated_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, mapEntry_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(11, deprecatedLegacyJsonFieldConflicts_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getFeatures());
      }
      for (int i = 0; i < uninterpretedOption_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(999, uninterpretedOption_.get(i));
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.protobuf.DescriptorProtos.MessageOptions)) {
        return super.equals(obj);
      }
      com.google.protobuf.DescriptorProtos.MessageOptions other = (com.google.protobuf.DescriptorProtos.MessageOptions) obj;
      if (hasMessageSetWireFormat() != other.hasMessageSetWireFormat()) return false;
      if (hasMessageSetWireFormat()) {
        if (getMessageSetWireFormat()
            != other.getMessageSetWireFormat()) return false;
      }
      if (hasNoStandardDescriptorAccessor() != other.hasNoStandardDescriptorAccessor()) return false;
      if (hasNoStandardDescriptorAccessor()) {
        if (getNoStandardDescriptorAccessor()
            != other.getNoStandardDescriptorAccessor()) return false;
      }
      if (hasDeprecated() != other.hasDeprecated()) return false;
      if (hasDeprecated()) {
        if (getDeprecated()
            != other.getDeprecated()) return false;
      }
      if (hasMapEntry() != other.hasMapEntry()) return false;
      if (hasMapEntry()) {
        if (getMapEntry()
            != other.getMapEntry()) return false;
      }
      if (hasDeprecatedLegacyJsonFieldConflicts() != other.hasDeprecatedLegacyJsonFieldConflicts()) return false;
      if (hasDeprecatedLegacyJsonFieldConflicts()) {
        if (getDeprecatedLegacyJsonFieldConflicts()
            != other.getDeprecatedLegacyJsonFieldConflicts()) return false;
      }
      if (hasFeatures() != other.hasFeatures()) return false;
      if (hasFeatures()) {
        if (!getFeatures()
            .equals(other.getFeatures())) return false;
      }
      if (!getUninterpretedOptionList()
          .equals(other.getUninterpretedOptionList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      if (!getExtensionFields().equals(other.getExtensionFields()))
        return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMessageSetWireFormat()) {
        hash = (37 * hash) + MESSAGE_SET_WIRE_FORMAT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getMessageSetWireFormat());
      }
      if (hasNoStandardDescriptorAccessor()) {
        hash = (37 * hash) + NO_STANDARD_DESCRIPTOR_ACCESSOR_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getNoStandardDescriptorAccessor());
      }
      if (hasDeprecated()) {
        hash = (37 * hash) + DEPRECATED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getDeprecated());
      }
      if (hasMapEntry()) {
        hash = (37 * hash) + MAP_ENTRY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getMapEntry());
      }
      if (hasDeprecatedLegacyJsonFieldConflicts()) {
        hash = (37 * hash) + DEPRECATED_LEGACY_JSON_FIELD_CONFLICTS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getDeprecatedLegacyJsonFieldConflicts());
      }
      if (hasFeatures()) {
        hash = (37 * hash) + FEATURES_FIELD_NUMBER;
        hash = (53 * hash) + getFeatures().hashCode();
      }
      if (getUninterpretedOptionCount() > 0) {
        hash = (37 * hash) + UNINTERPRETED_OPTION_FIELD_NUMBER;
        hash = (53 * hash) + getUninterpretedOptionList().hashCode();
      }
      hash = hashFields(hash, getExtensionFields());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.MessageOptions prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.MessageOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
          com.google.protobuf.DescriptorProtos.MessageOptions, Builder> implements
        // @@protoc_insertion_point(builder_implements:google.protobuf.MessageOptions)
        com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.protobuf.DescriptorProtos.MessageOptions.class, com.google.protobuf.DescriptorProtos.MessageOptions.Builder.class);
      }
      // Construct using com.google.protobuf.DescriptorProtos.MessageOptions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getFeaturesFieldBuilder();
          getUninterpretedOptionFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        messageSetWireFormat_ = false;
        noStandardDescriptorAccessor_ = false;
        deprecated_ = false;
        mapEntry_ = false;
        deprecatedLegacyJsonFieldConflicts_ = false;
        features_ = null;
        if (featuresBuilder_ != null) {
          featuresBuilder_.dispose();
          featuresBuilder_ = null;
        }
        if (uninterpretedOptionBuilder_ == null) {
          uninterpretedOption_ = java.util.Collections.emptyList();
        } else {
          uninterpretedOption_ = null;
          uninterpretedOptionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_descriptor;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.MessageOptions getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance();
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.MessageOptions build() {
        com.google.protobuf.DescriptorProtos.MessageOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.MessageOptions buildPartial() {
        com.google.protobuf.DescriptorProtos.MessageOptions result = new com.google.protobuf.DescriptorProtos.MessageOptions(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }
      private void buildPartialRepeatedFields(com.google.protobuf.DescriptorProtos.MessageOptions result) {
        if (uninterpretedOptionBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.uninterpretedOption_ = uninterpretedOption_;
        } else {
          result.uninterpretedOption_ = uninterpretedOptionBuilder_.build();
        }
      }
      private void buildPartial0(com.google.protobuf.DescriptorProtos.MessageOptions result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.messageSetWireFormat_ = messageSetWireFormat_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.noStandardDescriptorAccessor_ = noStandardDescriptorAccessor_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.deprecated_ = deprecated_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.mapEntry_ = mapEntry_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.deprecatedLegacyJsonFieldConflicts_ = deprecatedLegacyJsonFieldConflicts_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.features_ = featuresBuilder_ == null
              ? features_
              : featuresBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        result.bitField0_ |= to_bitField0_;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public  Builder setExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              com.google.protobuf.DescriptorProtos.MessageOptions, Type> extension,
          Type value) {
        return super.setExtension(extension, value);
      }
      @java.lang.Override
      public  Builder setExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              com.google.protobuf.DescriptorProtos.MessageOptions, java.util.List> extension,
          int index, Type value) {
        return super.setExtension(extension, index, value);
      }
      @java.lang.Override
      public  Builder addExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              com.google.protobuf.DescriptorProtos.MessageOptions, java.util.List> extension,
          Type value) {
        return super.addExtension(extension, value);
      }
      @java.lang.Override
      public  Builder clearExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              com.google.protobuf.DescriptorProtos.MessageOptions, T> extension) {
        return super.clearExtension(extension);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.MessageOptions) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.MessageOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.MessageOptions other) {
        if (other == com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance()) return this;
        if (other.hasMessageSetWireFormat()) {
          setMessageSetWireFormat(other.getMessageSetWireFormat());
        }
        if (other.hasNoStandardDescriptorAccessor()) {
          setNoStandardDescriptorAccessor(other.getNoStandardDescriptorAccessor());
        }
        if (other.hasDeprecated()) {
          setDeprecated(other.getDeprecated());
        }
        if (other.hasMapEntry()) {
          setMapEntry(other.getMapEntry());
        }
        if (other.hasDeprecatedLegacyJsonFieldConflicts()) {
          setDeprecatedLegacyJsonFieldConflicts(other.getDeprecatedLegacyJsonFieldConflicts());
        }
        if (other.hasFeatures()) {
          mergeFeatures(other.getFeatures());
        }
        if (uninterpretedOptionBuilder_ == null) {
          if (!other.uninterpretedOption_.isEmpty()) {
            if (uninterpretedOption_.isEmpty()) {
              uninterpretedOption_ = other.uninterpretedOption_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureUninterpretedOptionIsMutable();
              uninterpretedOption_.addAll(other.uninterpretedOption_);
            }
            onChanged();
          }
        } else {
          if (!other.uninterpretedOption_.isEmpty()) {
            if (uninterpretedOptionBuilder_.isEmpty()) {
              uninterpretedOptionBuilder_.dispose();
              uninterpretedOptionBuilder_ = null;
              uninterpretedOption_ = other.uninterpretedOption_;
              bitField0_ = (bitField0_ & ~0x00000040);
              uninterpretedOptionBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getUninterpretedOptionFieldBuilder() : null;
            } else {
              uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_);
            }
          }
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        if (hasFeatures()) {
          if (!getFeatures().isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getUninterpretedOptionCount(); i++) {
          if (!getUninterpretedOption(i).isInitialized()) {
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          return false;
        }
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                messageSetWireFormat_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                noStandardDescriptorAccessor_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                deprecated_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 56: {
                mapEntry_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 56
              case 88: {
                deprecatedLegacyJsonFieldConflicts_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 88
              case 98: {
                input.readMessage(
                    getFeaturesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 98
              case 7994: {
                com.google.protobuf.DescriptorProtos.UninterpretedOption m =
                    input.readMessage(
                        com.google.protobuf.DescriptorProtos.UninterpretedOption.PARSER,
                        extensionRegistry);
                if (uninterpretedOptionBuilder_ == null) {
                  ensureUninterpretedOptionIsMutable();
                  uninterpretedOption_.add(m);
                } else {
                  uninterpretedOptionBuilder_.addMessage(m);
                }
                break;
              } // case 7994
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private boolean messageSetWireFormat_ ;
      /**
       * optional bool message_set_wire_format = 1 [default = false, json_name = "messageSetWireFormat"];
       * @return Whether the messageSetWireFormat field is set.
       */
      @java.lang.Override
      public boolean hasMessageSetWireFormat() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * optional bool message_set_wire_format = 1 [default = false, json_name = "messageSetWireFormat"];
       * @return The messageSetWireFormat.
       */
      @java.lang.Override
      public boolean getMessageSetWireFormat() {
        return messageSetWireFormat_;
      }
      /**
       * optional bool message_set_wire_format = 1 [default = false, json_name = "messageSetWireFormat"];
       * @param value The messageSetWireFormat to set.
       * @return This builder for chaining.
       */
      public Builder setMessageSetWireFormat(boolean value) {
        messageSetWireFormat_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * optional bool message_set_wire_format = 1 [default = false, json_name = "messageSetWireFormat"];
       * @return This builder for chaining.
       */
      public Builder clearMessageSetWireFormat() {
        bitField0_ = (bitField0_ & ~0x00000001);
        messageSetWireFormat_ = false;
        onChanged();
        return this;
      }
      private boolean noStandardDescriptorAccessor_ ;
      /**
       * optional bool no_standard_descriptor_accessor = 2 [default = false, json_name = "noStandardDescriptorAccessor"];
       * @return Whether the noStandardDescriptorAccessor field is set.
       */
      @java.lang.Override
      public boolean hasNoStandardDescriptorAccessor() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * optional bool no_standard_descriptor_accessor = 2 [default = false, json_name = "noStandardDescriptorAccessor"];
       * @return The noStandardDescriptorAccessor.
       */
      @java.lang.Override
      public boolean getNoStandardDescriptorAccessor() {
        return noStandardDescriptorAccessor_;
      }
      /**
       * optional bool no_standard_descriptor_accessor = 2 [default = false, json_name = "noStandardDescriptorAccessor"];
       * @param value The noStandardDescriptorAccessor to set.
       * @return This builder for chaining.
       */
      public Builder setNoStandardDescriptorAccessor(boolean value) {
        noStandardDescriptorAccessor_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * optional bool no_standard_descriptor_accessor = 2 [default = false, json_name = "noStandardDescriptorAccessor"];
       * @return This builder for chaining.
       */
      public Builder clearNoStandardDescriptorAccessor() {
        bitField0_ = (bitField0_ & ~0x00000002);
        noStandardDescriptorAccessor_ = false;
        onChanged();
        return this;
      }
      private boolean deprecated_ ;
      /**
       * optional bool deprecated = 3 [default = false, json_name = "deprecated"];
       * @return Whether the deprecated field is set.
       */
      @java.lang.Override
      public boolean hasDeprecated() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * optional bool deprecated = 3 [default = false, json_name = "deprecated"];
       * @return The deprecated.
       */
      @java.lang.Override
      public boolean getDeprecated() {
        return deprecated_;
      }
      /**
       * optional bool deprecated = 3 [default = false, json_name = "deprecated"];
       * @param value The deprecated to set.
       * @return This builder for chaining.
       */
      public Builder setDeprecated(boolean value) {
        deprecated_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * optional bool deprecated = 3 [default = false, json_name = "deprecated"];
       * @return This builder for chaining.
       */
      public Builder clearDeprecated() {
        bitField0_ = (bitField0_ & ~0x00000004);
        deprecated_ = false;
        onChanged();
        return this;
      }
      private boolean mapEntry_ ;
      /**
       * optional bool map_entry = 7 [json_name = "mapEntry"];
       * @return Whether the mapEntry field is set.
       */
      @java.lang.Override
      public boolean hasMapEntry() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * optional bool map_entry = 7 [json_name = "mapEntry"];
       * @return The mapEntry.
       */
      @java.lang.Override
      public boolean getMapEntry() {
        return mapEntry_;
      }
      /**
       * optional bool map_entry = 7 [json_name = "mapEntry"];
       * @param value The mapEntry to set.
       * @return This builder for chaining.
       */
      public Builder setMapEntry(boolean value) {
        mapEntry_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * optional bool map_entry = 7 [json_name = "mapEntry"];
       * @return This builder for chaining.
       */
      public Builder clearMapEntry() {
        bitField0_ = (bitField0_ & ~0x00000008);
        mapEntry_ = false;
        onChanged();
        return this;
      }
      private boolean deprecatedLegacyJsonFieldConflicts_ ;
      /**
       * optional bool deprecated_legacy_json_field_conflicts = 11 [json_name = "deprecatedLegacyJsonFieldConflicts", deprecated = true];
       * @deprecated google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts is deprecated.
       *     See google/protobuf/descriptor.proto;l=0
       * @return Whether the deprecatedLegacyJsonFieldConflicts field is set.
       */
      @java.lang.Override
      @java.lang.Deprecated public boolean hasDeprecatedLegacyJsonFieldConflicts() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * optional bool deprecated_legacy_json_field_conflicts = 11 [json_name = "deprecatedLegacyJsonFieldConflicts", deprecated = true];
       * @deprecated google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts is deprecated.
       *     See google/protobuf/descriptor.proto;l=0
       * @return The deprecatedLegacyJsonFieldConflicts.
       */
      @java.lang.Override
      @java.lang.Deprecated public boolean getDeprecatedLegacyJsonFieldConflicts() {
        return deprecatedLegacyJsonFieldConflicts_;
      }
      /**
       * optional bool deprecated_legacy_json_field_conflicts = 11 [json_name = "deprecatedLegacyJsonFieldConflicts", deprecated = true];
       * @deprecated google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts is deprecated.
       *     See google/protobuf/descriptor.proto;l=0
       * @param value The deprecatedLegacyJsonFieldConflicts to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setDeprecatedLegacyJsonFieldConflicts(boolean value) {
        deprecatedLegacyJsonFieldConflicts_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * optional bool deprecated_legacy_json_field_conflicts = 11 [json_name = "deprecatedLegacyJsonFieldConflicts", deprecated = true];
       * @deprecated google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts is deprecated.
       *     See google/protobuf/descriptor.proto;l=0
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearDeprecatedLegacyJsonFieldConflicts() {
        bitField0_ = (bitField0_ & ~0x00000010);
        deprecatedLegacyJsonFieldConflicts_ = false;
        onChanged();
        return this;
      }
      private com.google.protobuf.DescriptorProtos.FeatureSet features_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FeatureSet, com.google.protobuf.DescriptorProtos.FeatureSet.Builder, com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder> featuresBuilder_;
      /**
       * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
       * @return Whether the features field is set.
       */
      public boolean hasFeatures() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
       * @return The features.
       */
      public com.google.protobuf.DescriptorProtos.FeatureSet getFeatures() {
        if (featuresBuilder_ == null) {
          return features_ == null ? com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance() : features_;
        } else {
          return featuresBuilder_.getMessage();
        }
      }
      /**
       * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
       */
      public Builder setFeatures(com.google.protobuf.DescriptorProtos.FeatureSet value) {
        if (featuresBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          features_ = value;
        } else {
          featuresBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
       */
      public Builder setFeatures(
          com.google.protobuf.DescriptorProtos.FeatureSet.Builder builderForValue) {
        if (featuresBuilder_ == null) {
          features_ = builderForValue.build();
        } else {
          featuresBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
       */
      public Builder mergeFeatures(com.google.protobuf.DescriptorProtos.FeatureSet value) {
        if (featuresBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            features_ != null &&
            features_ != com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance()) {
            getFeaturesBuilder().mergeFrom(value);
          } else {
            features_ = value;
          }
        } else {
          featuresBuilder_.mergeFrom(value);
        }
        if (features_ != null) {
          bitField0_ |= 0x00000020;
          onChanged();
        }
        return this;
      }
      /**
       * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
       */
      public Builder clearFeatures() {
        bitField0_ = (bitField0_ & ~0x00000020);
        features_ = null;
        if (featuresBuilder_ != null) {
          featuresBuilder_.dispose();
          featuresBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
       */
      public com.google.protobuf.DescriptorProtos.FeatureSet.Builder getFeaturesBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getFeaturesFieldBuilder().getBuilder();
      }
      /**
       * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
       */
      public com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder getFeaturesOrBuilder() {
        if (featuresBuilder_ != null) {
          return featuresBuilder_.getMessageOrBuilder();
        } else {
          return features_ == null ?
              com.google.protobuf.DescriptorProtos.FeatureSet.getDefaultInstance() : features_;
        }
      }
      /**
       * optional .google.protobuf.FeatureSet features = 12 [json_name = "features"];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.DescriptorProtos.FeatureSet, com.google.protobuf.DescriptorProtos.FeatureSet.Builder, com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder> 
          getFeaturesFieldBuilder() {
        if (featuresBuilder_ == null) {
          featuresBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.DescriptorProtos.FeatureSet, com.google.protobuf.DescriptorProtos.FeatureSet.Builder, com.google.protobuf.DescriptorProtos.FeatureSetOrBuilder>(
                  getFeatures(),
                  getParentForChildren(),
                  isClean());
          features_ = null;
        }
        return featuresBuilder_;
      }
      private java.util.List uninterpretedOption_ =
        java.util.Collections.emptyList();
      private void ensureUninterpretedOptionIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          uninterpretedOption_ = new java.util.ArrayList