All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.protobuf.DescriptorProtos Maven / Gradle / Ivy

Go to download

Core Protocol Buffers library. Protocol Buffers are a way of encoding structured data in an efficient yet extensible format.

There is a newer version: 4.29.0-RC2
Show newest version
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: google/protobuf/descriptor.proto
// Protobuf Java Version: 4.29.0-rc3

package com.google.protobuf;

public final class DescriptorProtos {
  private DescriptorProtos() {}
  static {
    com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
      com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
      /* major= */ 4,
      /* minor= */ 29,
      /* patch= */ 0,
      /* suffix= */ "-rc3",
      DescriptorProtos.class.getName());
  }
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code google.protobuf.Edition}
   */
  public enum Edition
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * EDITION_UNKNOWN = 0;
     */
    EDITION_UNKNOWN(0),
    /**
     * EDITION_LEGACY = 900;
     */
    EDITION_LEGACY(900),
    /**
     * EDITION_PROTO2 = 998;
     */
    EDITION_PROTO2(998),
    /**
     * EDITION_PROTO3 = 999;
     */
    EDITION_PROTO3(999),
    /**
     * EDITION_2023 = 1000;
     */
    EDITION_2023(1000),
    /**
     * EDITION_2024 = 1001;
     */
    EDITION_2024(1001),
    /**
     * EDITION_1_TEST_ONLY = 1;
     */
    EDITION_1_TEST_ONLY(1),
    /**
     * EDITION_2_TEST_ONLY = 2;
     */
    EDITION_2_TEST_ONLY(2),
    /**
     * EDITION_99997_TEST_ONLY = 99997;
     */
    EDITION_99997_TEST_ONLY(99997),
    /**
     * EDITION_99998_TEST_ONLY = 99998;
     */
    EDITION_99998_TEST_ONLY(99998),
    /**
     * EDITION_99999_TEST_ONLY = 99999;
     */
    EDITION_99999_TEST_ONLY(99999),
    /**
     * EDITION_MAX = 2147483647;
     */
    EDITION_MAX(2147483647),
    ;

    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 29,
        /* patch= */ 0,
        /* suffix= */ "-rc3",
        Edition.class.getName());
    }
    /**
     * EDITION_UNKNOWN = 0;
     */
    public static final int EDITION_UNKNOWN_VALUE = 0;
    /**
     * EDITION_LEGACY = 900;
     */
    public static final int EDITION_LEGACY_VALUE = 900;
    /**
     * EDITION_PROTO2 = 998;
     */
    public static final int EDITION_PROTO2_VALUE = 998;
    /**
     * EDITION_PROTO3 = 999;
     */
    public static final int EDITION_PROTO3_VALUE = 999;
    /**
     * EDITION_2023 = 1000;
     */
    public static final int EDITION_2023_VALUE = 1000;
    /**
     * EDITION_2024 = 1001;
     */
    public static final int EDITION_2024_VALUE = 1001;
    /**
     * EDITION_1_TEST_ONLY = 1;
     */
    public static final int EDITION_1_TEST_ONLY_VALUE = 1;
    /**
     * EDITION_2_TEST_ONLY = 2;
     */
    public static final int EDITION_2_TEST_ONLY_VALUE = 2;
    /**
     * EDITION_99997_TEST_ONLY = 99997;
     */
    public static final int EDITION_99997_TEST_ONLY_VALUE = 99997;
    /**
     * EDITION_99998_TEST_ONLY = 99998;
     */
    public static final int EDITION_99998_TEST_ONLY_VALUE = 99998;
    /**
     * EDITION_99999_TEST_ONLY = 99999;
     */
    public static final int EDITION_99999_TEST_ONLY_VALUE = 99999;
    /**
     * EDITION_MAX = 2147483647;
     */
    public static final int EDITION_MAX_VALUE = 2147483647;


    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 Edition 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 Edition forNumber(int value) {
      switch (value) {
        case 0: return EDITION_UNKNOWN;
        case 900: return EDITION_LEGACY;
        case 998: return EDITION_PROTO2;
        case 999: return EDITION_PROTO3;
        case 1000: return EDITION_2023;
        case 1001: return EDITION_2024;
        case 1: return EDITION_1_TEST_ONLY;
        case 2: return EDITION_2_TEST_ONLY;
        case 99997: return EDITION_99997_TEST_ONLY;
        case 99998: return EDITION_99998_TEST_ONLY;
        case 99999: return EDITION_99999_TEST_ONLY;
        case 2147483647: return EDITION_MAX;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        Edition> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap() {
            public Edition findValueByNumber(int number) {
              return Edition.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.getDescriptor().getEnumTypes().get(0);
    }

    private static final Edition[] VALUES = values();

    public static Edition 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 Edition(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:google.protobuf.Edition)
  }

  public interface FileDescriptorSetOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.protobuf.FileDescriptorSet)
      com.google.protobuf.GeneratedMessage.
          ExtendableMessageOrBuilder {

    /**
     * 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 
        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.GeneratedMessage.ExtendableMessage<
        FileDescriptorSet> implements
      // @@protoc_insertion_point(message_implements:google.protobuf.FileDescriptorSet)
      FileDescriptorSetOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 29,
        /* patch= */ 0,
        /* suffix= */ "-rc3",
        FileDescriptorSet.class.getName());
    }
    // Use FileDescriptorSet.newBuilder() to construct.
    private FileDescriptorSet(com.google.protobuf.GeneratedMessage.ExtendableBuilder builder) {
      super(builder);
    }
    private FileDescriptorSet() {
      file_ = java.util.Collections.emptyList();
    }

    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.GeneratedMessage.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 
        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;
        }
      }
      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.GeneratedMessage
        .ExtendableMessage.ExtensionSerializer
          extensionWriter = newExtensionSerializer();
      for (int i = 0; i < file_.size(); i++) {
        output.writeMessage(1, file_.get(i));
      }
      extensionWriter.writeUntil(536000001, 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 < file_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, file_.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.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;
      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 (getFileCount() > 0) {
        hash = (37 * hash) + FILE_FIELD_NUMBER;
        hash = (53 * hash) + getFileList().hashCode();
      }
      hash = hashFields(hash, getExtensionFields());
      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.GeneratedMessage
          .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.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .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.GeneratedMessage
          .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.GeneratedMessage
          .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.GeneratedMessage
          .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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.FileDescriptorSet}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
          com.google.protobuf.DescriptorProtos.FileDescriptorSet, 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.GeneratedMessage.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.GeneratedMessage.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 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.GeneratedMessage.alwaysUseFieldBuilders ?
                   getFileFieldBuilder() : null;
            } else {
              fileBuilder_.addAllMessages(other.file_);
            }
          }
        }
        this.mergeExtensionFields(other);
        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;
          }
        }
        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: {
                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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> 
          getFileFieldBuilder() {
        if (fileBuilder_ == null) {
          fileBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              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_;
      }

      // @@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;
    }

    private 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 
        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 
        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 
        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 
        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 .google.protobuf.Edition edition = 14 [json_name = "edition"];
     * @return Whether the edition field is set.
     */
    boolean hasEdition();
    /**
     * optional .google.protobuf.Edition edition = 14 [json_name = "edition"];
     * @return The edition.
     */
    com.google.protobuf.DescriptorProtos.Edition getEdition();
  }
  /**
   * Protobuf type {@code google.protobuf.FileDescriptorProto}
   */
  public static final class FileDescriptorProto extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:google.protobuf.FileDescriptorProto)
      FileDescriptorProtoOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 29,
        /* patch= */ 0,
        /* suffix= */ "-rc3",
        FileDescriptorProto.class.getName());
    }
    // Use FileDescriptorProto.newBuilder() to construct.
    private FileDescriptorProto(com.google.protobuf.GeneratedMessage.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_ = 0;
    }

    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.GeneratedMessage.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 
        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 
        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 
        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 
        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 = 14;
    private int edition_ = 0;
    /**
     * optional .google.protobuf.Edition edition = 14 [json_name = "edition"];
     * @return Whether the edition field is set.
     */
    @java.lang.Override public boolean hasEdition() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * optional .google.protobuf.Edition edition = 14 [json_name = "edition"];
     * @return The edition.
     */
    @java.lang.Override public com.google.protobuf.DescriptorProtos.Edition getEdition() {
      com.google.protobuf.DescriptorProtos.Edition result = com.google.protobuf.DescriptorProtos.Edition.forNumber(edition_);
      return result == null ? com.google.protobuf.DescriptorProtos.Edition.EDITION_UNKNOWN : 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 < 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;
        }
      }
      if (hasSourceCodeInfo()) {
        if (!getSourceCodeInfo().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.GeneratedMessage.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, package_);
      }
      for (int i = 0; i < dependency_.size(); i++) {
        com.google.protobuf.GeneratedMessage.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.GeneratedMessage.writeString(output, 12, syntax_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeEnum(14, 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.GeneratedMessage.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.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.GeneratedMessage.computeStringSize(12, syntax_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(14, 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 (edition_ != other.edition_) 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) + edition_;
      }
      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.GeneratedMessage
          .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.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .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.GeneratedMessage
          .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.GeneratedMessage
          .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.GeneratedMessage
          .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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.FileDescriptorProto}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .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_ = 0;
        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 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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.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()) {
          setEdition(other.getEdition());
        }
        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;
          }
        }
        if (hasSourceCodeInfo()) {
          if (!getSourceCodeInfo().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 112: {
                int tmpRaw = input.readEnum();
                com.google.protobuf.DescriptorProtos.Edition tmpValue =
                    com.google.protobuf.DescriptorProtos.Edition.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(14, tmpRaw);
                } else {
                  edition_ = tmpRaw;
                  bitField0_ |= 0x00001000;
                }
                break;
              } // case 112
              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 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 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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
          getMessageTypeFieldBuilder() {
        if (messageTypeBuilder_ == null) {
          messageTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
          getEnumTypeFieldBuilder() {
        if (enumTypeBuilder_ == null) {
          enumTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          com.google.protobuf.DescriptorProtos.ServiceDescriptorProto, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> 
          getServiceFieldBuilder() {
        if (serviceBuilder_ == null) {
          serviceBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
          getExtensionFieldBuilder() {
        if (extensionBuilder_ == null) {
          extensionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              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.SingleFieldBuilder<
          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.SingleFieldBuilder<
          com.google.protobuf.DescriptorProtos.FileOptions, com.google.protobuf.DescriptorProtos.FileOptions.Builder, com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder> 
          getOptionsFieldBuilder() {
        if (optionsBuilder_ == null) {
          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              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.SingleFieldBuilder<
          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.SingleFieldBuilder<
          com.google.protobuf.DescriptorProtos.SourceCodeInfo, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder> 
          getSourceCodeInfoFieldBuilder() {
        if (sourceCodeInfoBuilder_ == null) {
          sourceCodeInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              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 int edition_ = 0;
      /**
       * optional .google.protobuf.Edition edition = 14 [json_name = "edition"];
       * @return Whether the edition field is set.
       */
      @java.lang.Override public boolean hasEdition() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * optional .google.protobuf.Edition edition = 14 [json_name = "edition"];
       * @return The edition.
       */
      @java.lang.Override
      public com.google.protobuf.DescriptorProtos.Edition getEdition() {
        com.google.protobuf.DescriptorProtos.Edition result = com.google.protobuf.DescriptorProtos.Edition.forNumber(edition_);
        return result == null ? com.google.protobuf.DescriptorProtos.Edition.EDITION_UNKNOWN : result;
      }
      /**
       * optional .google.protobuf.Edition edition = 14 [json_name = "edition"];
       * @param value The edition to set.
       * @return This builder for chaining.
       */
      public Builder setEdition(com.google.protobuf.DescriptorProtos.Edition value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00001000;
        edition_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * optional .google.protobuf.Edition edition = 14 [json_name = "edition"];
       * @return This builder for chaining.
       */
      public Builder clearEdition() {
        bitField0_ = (bitField0_ & ~0x00001000);
        edition_ = 0;
        onChanged();
        return this;
      }

      // @@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;
    }

    private 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 
        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 
        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 
        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 
        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 
        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 
        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 
        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.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:google.protobuf.DescriptorProto)
      DescriptorProtoOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 29,
        /* patch= */ 0,
        /* suffix= */ "-rc3",
        DescriptorProto.class.getName());
    }
    // Use DescriptorProto.newBuilder() to construct.
    private DescriptorProto(com.google.protobuf.GeneratedMessage.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();
    }

    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.GeneratedMessage.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.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:google.protobuf.DescriptorProto.ExtensionRange)
        ExtensionRangeOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 29,
          /* patch= */ 0,
          /* suffix= */ "-rc3",
          ExtensionRange.class.getName());
      }
      // Use ExtensionRange.newBuilder() to construct.
      private ExtensionRange(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
      }
      private 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.GeneratedMessage.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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage
                  .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 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.SingleFieldBuilder<
            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.SingleFieldBuilder<
            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.SingleFieldBuilder<
                com.google.protobuf.DescriptorProtos.ExtensionRangeOptions, com.google.protobuf.DescriptorProtos.ExtensionRangeOptions.Builder, com.google.protobuf.DescriptorProtos.ExtensionRangeOptionsOrBuilder>(
                    getOptions(),
                    getParentForChildren(),
                    isClean());
            options_ = null;
          }
          return optionsBuilder_;
        }

        // @@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;
      }

      private 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.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:google.protobuf.DescriptorProto.ReservedRange)
        ReservedRangeOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 29,
          /* patch= */ 0,
          /* suffix= */ "-rc3",
          ReservedRange.class.getName());
      }
      // Use ReservedRange.newBuilder() to construct.
      private ReservedRange(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
      }
      private 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.GeneratedMessage.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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.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 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;
        }

        // @@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;
      }

      private 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 
        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 
        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 
        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 
        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 
        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 
        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 
        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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage
          .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.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .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.GeneratedMessage
          .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.GeneratedMessage
          .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.GeneratedMessage
          .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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.DescriptorProto}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .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 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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
          getFieldFieldBuilder() {
        if (fieldBuilder_ == null) {
          fieldBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> 
          getExtensionFieldBuilder() {
        if (extensionBuilder_ == null) {
          extensionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> 
          getNestedTypeFieldBuilder() {
        if (nestedTypeBuilder_ == null) {
          nestedTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> 
          getEnumTypeFieldBuilder() {
        if (enumTypeBuilder_ == null) {
          enumTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> 
          getExtensionRangeFieldBuilder() {
        if (extensionRangeBuilder_ == null) {
          extensionRangeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          com.google.protobuf.DescriptorProtos.OneofDescriptorProto, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder> 
          getOneofDeclFieldBuilder() {
        if (oneofDeclBuilder_ == null) {
          oneofDeclBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.google.protobuf.DescriptorProtos.OneofDescriptorProto, com.google.protobuf.DescriptorProtos.OneofDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.OneofDescriptorProtoOrBuilder>(
                  oneofDecl_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          oneofDecl_ = null;
        }
        return oneofDeclBuilder_;
      }

      private com.google.protobuf.DescriptorProtos.MessageOptions options_;
      private com.google.protobuf.SingleFieldBuilder<
          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.SingleFieldBuilder<
          com.google.protobuf.DescriptorProtos.MessageOptions, com.google.protobuf.DescriptorProtos.MessageOptions.Builder, com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder> 
          getOptionsFieldBuilder() {
        if (optionsBuilder_ == null) {
          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          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.RepeatedFieldBuilder<
              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;
      }

      // @@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;
    }

    private 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.GeneratedMessage.
          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 
        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 
        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", retention = RETENTION_SOURCE];
     * @return Whether the verification field is set.
     */
    boolean hasVerification();
    /**
     * optional .google.protobuf.ExtensionRangeOptions.VerificationState verification = 3 [default = UNVERIFIED, json_name = "verification", retention = RETENTION_SOURCE];
     * @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.GeneratedMessage.ExtendableMessage<
        ExtensionRangeOptions> implements
      // @@protoc_insertion_point(message_implements:google.protobuf.ExtensionRangeOptions)
      ExtensionRangeOptionsOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 29,
        /* patch= */ 0,
        /* suffix= */ "-rc3",
        ExtensionRangeOptions.class.getName());
    }
    // Use ExtensionRangeOptions.newBuilder() to construct.
    private ExtensionRangeOptions(com.google.protobuf.GeneratedMessage.ExtendableBuilder builder) {
      super(builder);
    }
    private ExtensionRangeOptions() {
      uninterpretedOption_ = java.util.Collections.emptyList();
      declaration_ = java.util.Collections.emptyList();
      verification_ = 1;
    }

    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.GeneratedMessage.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),
      ;

      static {
        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 29,
          /* patch= */ 0,
          /* suffix= */ "-rc3",
          VerificationState.class.getName());
      }
      /**
       * 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.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:google.protobuf.ExtensionRangeOptions.Declaration)
        DeclarationOrBuilder {
    private static final long serialVersionUID = 0L;
      static {
        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 29,
          /* patch= */ 0,
          /* suffix= */ "-rc3",
          Declaration.class.getName());
      }
      // Use Declaration.newBuilder() to construct.
      private Declaration(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
      }
      private Declaration() {
        fullName_ = "";
        type_ = "";
      }

      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.GeneratedMessage.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.GeneratedMessage.writeString(output, 2, fullName_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.google.protobuf.GeneratedMessage.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.GeneratedMessage.computeStringSize(2, fullName_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.GeneratedMessage.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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage
            .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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.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 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;
        }

        // @@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;
      }

      private 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 
        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 
        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", retention = RETENTION_SOURCE];
     * @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", retention = RETENTION_SOURCE];
     * @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.GeneratedMessage
        .ExtendableMessage.ExtensionSerializer
          extensionWriter = newExtensionSerializer();
      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.GeneratedMessage
          .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.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.protobuf.DescriptorProtos.ExtensionRangeOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .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.GeneratedMessage
          .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.GeneratedMessage
          .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.GeneratedMessage
          .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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code google.protobuf.ExtensionRangeOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.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.GeneratedMessage.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.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .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 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.GeneratedMessage.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.GeneratedMessage.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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> 
          getUninterpretedOptionFieldBuilder() {
        if (uninterpretedOptionBuilder_ == null) {
          uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>(
                  uninterpretedOption_,
                  ((bitField0_ & 0x00000001) != 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.RepeatedFieldBuilder<
          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 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 
           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.RepeatedFieldBuilder<
          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.RepeatedFieldBuilder<
              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.SingleFieldBuilder<
          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.SingleFieldBuilder<
          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.SingleFieldBuilder<
              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", retention = RETENTION_SOURCE];
       * @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", retention = RETENTION_SOURCE];
       * @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", retention = RETENTION_SOURCE];
       * @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", retention = RETENTION_SOURCE];
       * @return This builder for chaining.
       */
      public Builder clearVerification() {
        bitField0_ = (bitField0_ & ~0x00000008);
        verification_ = 1;
        onChanged();
        return this;
      }

      // @@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;
    }

    private 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.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:google.protobuf.FieldDescriptorProto)
      FieldDescriptorProtoOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 29,
        /* patch= */ 0,
        /* suffix= */ "-rc3",
        FieldDescriptorProto.class.getName());
    }
    // Use FieldDescriptorProto.newBuilder() to construct.
    private FieldDescriptorProto(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
    }
    private FieldDescriptorProto() {
      name_ = "";
      label_ = 1;
      type_ = 1;
      typeName_ = "";
      extendee_ = "";
      defaultValue_ = "";
      jsonName_ = "";
    }

    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.GeneratedMessage.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),
      ;

      static {
        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 29,
          /* patch= */ 0,
          /* suffix= */ "-rc3",
          Type.class.getName());
      }
      /**
       * 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_REPEATED = 3;
       */
      LABEL_REPEATED(3),
      /**
       * LABEL_REQUIRED = 2;
       */
      LABEL_REQUIRED(2),
      ;

      static {
        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 29,
          /* patch= */ 0,
          /* suffix= */ "-rc3",
          Label.class.getName());
      }
      /**
       * LABEL_OPTIONAL = 1;
       */
      public static final int LABEL_OPTIONAL_VALUE = 1;
      /**
       * LABEL_REPEATED = 3;
       */
      public static final int LABEL_REPEATED_VALUE = 3;
      /**
       * LABEL_REQUIRED = 2;
       */
      public static final int LABEL_REQUIRED_VALUE = 2;


      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 3: return LABEL_REPEATED;
          case 2: return LABEL_REQUIRED;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap




© 2015 - 2024 Weber Informatics LLC | Privacy Policy