// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/protobuf/descriptor.proto

package com.google.protobuf;

public final class DescriptorProtos {
  private DescriptorProtos() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public static final class FileDescriptorSet extends
      com.google.protobuf.GeneratedMessage {
    // Use FileDescriptorSet.newBuilder() to construct.
    private FileDescriptorSet() {
      initFields();
    }
    private FileDescriptorSet(boolean noInit) {}
    
    private static final FileDescriptorSet defaultInstance;
    public static FileDescriptorSet getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public FileDescriptorSet getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable;
    }
    
    // repeated .google.protobuf.FileDescriptorProto file = 1;
    public static final int FILE_FIELD_NUMBER = 1;
    private java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> file_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> getFileList() {
      return file_;
    }
    public int getFileCount() { return file_.size(); }
    public com.google.protobuf.DescriptorProtos.FileDescriptorProto getFile(int index) {
      return file_.get(index);
    }
    
    private void initFields() {
    }
    @Override
	public final boolean isInitialized() {
      for (com.google.protobuf.DescriptorProtos.FileDescriptorProto element : getFileList()) {
        if (!element.isInitialized()) return false;
      }
      return true;
    }
    
    @Override
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (com.google.protobuf.DescriptorProtos.FileDescriptorProto element : getFileList()) {
        output.writeMessage(1, element);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      for (com.google.protobuf.DescriptorProtos.FileDescriptorProto element : getFileList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, element);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FileDescriptorSet prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.google.protobuf.DescriptorProtos.FileDescriptorSet result;
      
      // Construct using com.google.protobuf.DescriptorProtos.FileDescriptorSet.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.FileDescriptorSet();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.FileDescriptorSet internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.FileDescriptorSet();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.FileDescriptorSet.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.FileDescriptorSet getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.FileDescriptorSet.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.FileDescriptorSet build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.FileDescriptorSet buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.FileDescriptorSet buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.file_ != java.util.Collections.EMPTY_LIST) {
          result.file_ =
            java.util.Collections.unmodifiableList(result.file_);
        }
        com.google.protobuf.DescriptorProtos.FileDescriptorSet returnMe = result;
        result = null;
        return returnMe;
      }
      
      @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 (!other.file_.isEmpty()) {
          if (result.file_.isEmpty()) {
            result.file_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FileDescriptorProto>();
          }
          result.file_.addAll(other.file_);
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 10: {
              com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.FileDescriptorProto.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addFile(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // repeated .google.protobuf.FileDescriptorProto file = 1;
      public java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> getFileList() {
        return java.util.Collections.unmodifiableList(result.file_);
      }
      public int getFileCount() {
        return result.getFileCount();
      }
      public com.google.protobuf.DescriptorProtos.FileDescriptorProto getFile(int index) {
        return result.getFile(index);
      }
      public Builder setFile(int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.file_.set(index, value);
        return this;
      }
      public Builder setFile(int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder builderForValue) {
        result.file_.set(index, builderForValue.build());
        return this;
      }
      public Builder addFile(com.google.protobuf.DescriptorProtos.FileDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.file_.isEmpty()) {
          result.file_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FileDescriptorProto>();
        }
        result.file_.add(value);
        return this;
      }
      public Builder addFile(com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder builderForValue) {
        if (result.file_.isEmpty()) {
          result.file_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FileDescriptorProto>();
        }
        result.file_.add(builderForValue.build());
        return this;
      }
      public Builder addAllFile(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.FileDescriptorProto> values) {
        if (result.file_.isEmpty()) {
          result.file_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FileDescriptorProto>();
        }
        super.addAll(values, result.file_);
        return this;
      }
      public Builder clearFile() {
        result.file_ = java.util.Collections.emptyList();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.FileDescriptorSet)
    }
    
    static {
      defaultInstance = new FileDescriptorSet(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorSet)
  }
  
  public static final class FileDescriptorProto extends
      com.google.protobuf.GeneratedMessage {
    // Use FileDescriptorProto.newBuilder() to construct.
    private FileDescriptorProto() {
      initFields();
    }
    private FileDescriptorProto(boolean noInit) {}
    
    private static final FileDescriptorProto defaultInstance;
    public static FileDescriptorProto getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public FileDescriptorProto getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable;
    }
    
    // optional string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private boolean hasName;
    private java.lang.String name_ = "";
    public boolean hasName() { return hasName; }
    public java.lang.String getName() { return name_; }
    
    // optional string package = 2;
    public static final int PACKAGE_FIELD_NUMBER = 2;
    private boolean hasPackage;
    private java.lang.String package_ = "";
    public boolean hasPackage() { return hasPackage; }
    public java.lang.String getPackage() { return package_; }
    
    // repeated string dependency = 3;
    public static final int DEPENDENCY_FIELD_NUMBER = 3;
    private java.util.List<java.lang.String> dependency_ =
      java.util.Collections.emptyList();
    public java.util.List<java.lang.String> getDependencyList() {
      return dependency_;
    }
    public int getDependencyCount() { return dependency_.size(); }
    public java.lang.String getDependency(int index) {
      return dependency_.get(index);
    }
    
    // repeated .google.protobuf.DescriptorProto message_type = 4;
    public static final int MESSAGE_TYPE_FIELD_NUMBER = 4;
    private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> messageType_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getMessageTypeList() {
      return messageType_;
    }
    public int getMessageTypeCount() { return messageType_.size(); }
    public com.google.protobuf.DescriptorProtos.DescriptorProto getMessageType(int index) {
      return messageType_.get(index);
    }
    
    // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
    public static final int ENUM_TYPE_FIELD_NUMBER = 5;
    private java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> enumType_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() {
      return enumType_;
    }
    public int getEnumTypeCount() { return enumType_.size(); }
    public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
      return enumType_.get(index);
    }
    
    // repeated .google.protobuf.ServiceDescriptorProto service = 6;
    public static final int SERVICE_FIELD_NUMBER = 6;
    private java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> service_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> getServiceList() {
      return service_;
    }
    public int getServiceCount() { return service_.size(); }
    public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getService(int index) {
      return service_.get(index);
    }
    
    // repeated .google.protobuf.FieldDescriptorProto extension = 7;
    public static final int EXTENSION_FIELD_NUMBER = 7;
    private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> extension_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() {
      return extension_;
    }
    public int getExtensionCount() { return extension_.size(); }
    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
      return extension_.get(index);
    }
    
    // optional .google.protobuf.FileOptions options = 8;
    public static final int OPTIONS_FIELD_NUMBER = 8;
    private boolean hasOptions;
    private com.google.protobuf.DescriptorProtos.FileOptions options_;
    public boolean hasOptions() { return hasOptions; }
    public com.google.protobuf.DescriptorProtos.FileOptions getOptions() { return options_; }
    
    private void initFields() {
      options_ = com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance();
    }
    @Override
	public final boolean isInitialized() {
      for (com.google.protobuf.DescriptorProtos.DescriptorProto element : getMessageTypeList()) {
        if (!element.isInitialized()) return false;
      }
      for (com.google.protobuf.DescriptorProtos.EnumDescriptorProto element : getEnumTypeList()) {
        if (!element.isInitialized()) return false;
      }
      for (com.google.protobuf.DescriptorProtos.ServiceDescriptorProto element : getServiceList()) {
        if (!element.isInitialized()) return false;
      }
      for (com.google.protobuf.DescriptorProtos.FieldDescriptorProto element : getExtensionList()) {
        if (!element.isInitialized()) return false;
      }
      if (hasOptions()) {
        if (!getOptions().isInitialized()) return false;
      }
      return true;
    }
    
    @Override
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (hasName()) {
        output.writeString(1, getName());
      }
      if (hasPackage()) {
        output.writeString(2, getPackage());
      }
      for (java.lang.String element : getDependencyList()) {
        output.writeString(3, element);
      }
      for (com.google.protobuf.DescriptorProtos.DescriptorProto element : getMessageTypeList()) {
        output.writeMessage(4, element);
      }
      for (com.google.protobuf.DescriptorProtos.EnumDescriptorProto element : getEnumTypeList()) {
        output.writeMessage(5, element);
      }
      for (com.google.protobuf.DescriptorProtos.ServiceDescriptorProto element : getServiceList()) {
        output.writeMessage(6, element);
      }
      for (com.google.protobuf.DescriptorProtos.FieldDescriptorProto element : getExtensionList()) {
        output.writeMessage(7, element);
      }
      if (hasOptions()) {
        output.writeMessage(8, getOptions());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasName()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(1, getName());
      }
      if (hasPackage()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(2, getPackage());
      }
      {
        int dataSize = 0;
        for (java.lang.String element : getDependencyList()) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeStringSizeNoTag(element);
        }
        size += dataSize;
        size += getDependencyList().size();
      }
      for (com.google.protobuf.DescriptorProtos.DescriptorProto element : getMessageTypeList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, element);
      }
      for (com.google.protobuf.DescriptorProtos.EnumDescriptorProto element : getEnumTypeList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, element);
      }
      for (com.google.protobuf.DescriptorProtos.ServiceDescriptorProto element : getServiceList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, element);
      }
      for (com.google.protobuf.DescriptorProtos.FieldDescriptorProto element : getExtensionList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, element);
      }
      if (hasOptions()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getOptions());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FileDescriptorProto prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.google.protobuf.DescriptorProtos.FileDescriptorProto result;
      
      // Construct using com.google.protobuf.DescriptorProtos.FileDescriptorProto.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.FileDescriptorProto();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.FileDescriptorProto internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.FileDescriptorProto();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.FileDescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.FileDescriptorProto build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.FileDescriptorProto buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.FileDescriptorProto buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.dependency_ != java.util.Collections.EMPTY_LIST) {
          result.dependency_ =
            java.util.Collections.unmodifiableList(result.dependency_);
        }
        if (result.messageType_ != java.util.Collections.EMPTY_LIST) {
          result.messageType_ =
            java.util.Collections.unmodifiableList(result.messageType_);
        }
        if (result.enumType_ != java.util.Collections.EMPTY_LIST) {
          result.enumType_ =
            java.util.Collections.unmodifiableList(result.enumType_);
        }
        if (result.service_ != java.util.Collections.EMPTY_LIST) {
          result.service_ =
            java.util.Collections.unmodifiableList(result.service_);
        }
        if (result.extension_ != java.util.Collections.EMPTY_LIST) {
          result.extension_ =
            java.util.Collections.unmodifiableList(result.extension_);
        }
        com.google.protobuf.DescriptorProtos.FileDescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      @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()) {
          setName(other.getName());
        }
        if (other.hasPackage()) {
          setPackage(other.getPackage());
        }
        if (!other.dependency_.isEmpty()) {
          if (result.dependency_.isEmpty()) {
            result.dependency_ = new java.util.ArrayList<java.lang.String>();
          }
          result.dependency_.addAll(other.dependency_);
        }
        if (!other.messageType_.isEmpty()) {
          if (result.messageType_.isEmpty()) {
            result.messageType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>();
          }
          result.messageType_.addAll(other.messageType_);
        }
        if (!other.enumType_.isEmpty()) {
          if (result.enumType_.isEmpty()) {
            result.enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>();
          }
          result.enumType_.addAll(other.enumType_);
        }
        if (!other.service_.isEmpty()) {
          if (result.service_.isEmpty()) {
            result.service_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto>();
          }
          result.service_.addAll(other.service_);
        }
        if (!other.extension_.isEmpty()) {
          if (result.extension_.isEmpty()) {
            result.extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
          }
          result.extension_.addAll(other.extension_);
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 10: {
              setName(input.readString());
              break;
            }
            case 18: {
              setPackage(input.readString());
              break;
            }
            case 26: {
              addDependency(input.readString());
              break;
            }
            case 34: {
              com.google.protobuf.DescriptorProtos.DescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.DescriptorProto.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addMessageType(subBuilder.buildPartial());
              break;
            }
            case 42: {
              com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.EnumDescriptorProto.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addEnumType(subBuilder.buildPartial());
              break;
            }
            case 50: {
              com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addService(subBuilder.buildPartial());
              break;
            }
            case 58: {
              com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addExtension(subBuilder.buildPartial());
              break;
            }
            case 66: {
              com.google.protobuf.DescriptorProtos.FileOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.FileOptions.newBuilder();
              if (hasOptions()) {
                subBuilder.mergeFrom(getOptions());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setOptions(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // optional string name = 1;
      public boolean hasName() {
        return result.hasName();
      }
      public java.lang.String getName() {
        return result.getName();
      }
      public Builder setName(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder clearName() {
        result.hasName = false;
        result.name_ = getDefaultInstance().getName();
        return this;
      }
      
      // optional string package = 2;
      public boolean hasPackage() {
        return result.hasPackage();
      }
      public java.lang.String getPackage() {
        return result.getPackage();
      }
      public Builder setPackage(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasPackage = true;
        result.package_ = value;
        return this;
      }
      public Builder clearPackage() {
        result.hasPackage = false;
        result.package_ = getDefaultInstance().getPackage();
        return this;
      }
      
      // repeated string dependency = 3;
      public java.util.List<java.lang.String> getDependencyList() {
        return java.util.Collections.unmodifiableList(result.dependency_);
      }
      public int getDependencyCount() {
        return result.getDependencyCount();
      }
      public java.lang.String getDependency(int index) {
        return result.getDependency(index);
      }
      public Builder setDependency(int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.dependency_.set(index, value);
        return this;
      }
      public Builder addDependency(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  if (result.dependency_.isEmpty()) {
          result.dependency_ = new java.util.ArrayList<java.lang.String>();
        }
        result.dependency_.add(value);
        return this;
      }
      public Builder addAllDependency(
          java.lang.Iterable<? extends java.lang.String> values) {
        if (result.dependency_.isEmpty()) {
          result.dependency_ = new java.util.ArrayList<java.lang.String>();
        }
        super.addAll(values, result.dependency_);
        return this;
      }
      public Builder clearDependency() {
        result.dependency_ = java.util.Collections.emptyList();
        return this;
      }
      
      // repeated .google.protobuf.DescriptorProto message_type = 4;
      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getMessageTypeList() {
        return java.util.Collections.unmodifiableList(result.messageType_);
      }
      public int getMessageTypeCount() {
        return result.getMessageTypeCount();
      }
      public com.google.protobuf.DescriptorProtos.DescriptorProto getMessageType(int index) {
        return result.getMessageType(index);
      }
      public Builder setMessageType(int index, com.google.protobuf.DescriptorProtos.DescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.messageType_.set(index, value);
        return this;
      }
      public Builder setMessageType(int index, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        result.messageType_.set(index, builderForValue.build());
        return this;
      }
      public Builder addMessageType(com.google.protobuf.DescriptorProtos.DescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.messageType_.isEmpty()) {
          result.messageType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>();
        }
        result.messageType_.add(value);
        return this;
      }
      public Builder addMessageType(com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        if (result.messageType_.isEmpty()) {
          result.messageType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>();
        }
        result.messageType_.add(builderForValue.build());
        return this;
      }
      public Builder addAllMessageType(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.DescriptorProto> values) {
        if (result.messageType_.isEmpty()) {
          result.messageType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>();
        }
        super.addAll(values, result.messageType_);
        return this;
      }
      public Builder clearMessageType() {
        result.messageType_ = java.util.Collections.emptyList();
        return this;
      }
      
      // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
      public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() {
        return java.util.Collections.unmodifiableList(result.enumType_);
      }
      public int getEnumTypeCount() {
        return result.getEnumTypeCount();
      }
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
        return result.getEnumType(index);
      }
      public Builder setEnumType(int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.enumType_.set(index, value);
        return this;
      }
      public Builder setEnumType(int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        result.enumType_.set(index, builderForValue.build());
        return this;
      }
      public Builder addEnumType(com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.enumType_.isEmpty()) {
          result.enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>();
        }
        result.enumType_.add(value);
        return this;
      }
      public Builder addEnumType(com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        if (result.enumType_.isEmpty()) {
          result.enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>();
        }
        result.enumType_.add(builderForValue.build());
        return this;
      }
      public Builder addAllEnumType(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProto> values) {
        if (result.enumType_.isEmpty()) {
          result.enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>();
        }
        super.addAll(values, result.enumType_);
        return this;
      }
      public Builder clearEnumType() {
        result.enumType_ = java.util.Collections.emptyList();
        return this;
      }
      
      // repeated .google.protobuf.ServiceDescriptorProto service = 6;
      public java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> getServiceList() {
        return java.util.Collections.unmodifiableList(result.service_);
      }
      public int getServiceCount() {
        return result.getServiceCount();
      }
      public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getService(int index) {
        return result.getService(index);
      }
      public Builder setService(int index, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.service_.set(index, value);
        return this;
      }
      public Builder setService(int index, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder builderForValue) {
        result.service_.set(index, builderForValue.build());
        return this;
      }
      public Builder addService(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.service_.isEmpty()) {
          result.service_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto>();
        }
        result.service_.add(value);
        return this;
      }
      public Builder addService(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder builderForValue) {
        if (result.service_.isEmpty()) {
          result.service_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto>();
        }
        result.service_.add(builderForValue.build());
        return this;
      }
      public Builder addAllService(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> values) {
        if (result.service_.isEmpty()) {
          result.service_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto>();
        }
        super.addAll(values, result.service_);
        return this;
      }
      public Builder clearService() {
        result.service_ = java.util.Collections.emptyList();
        return this;
      }
      
      // repeated .google.protobuf.FieldDescriptorProto extension = 7;
      public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() {
        return java.util.Collections.unmodifiableList(result.extension_);
      }
      public int getExtensionCount() {
        return result.getExtensionCount();
      }
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
        return result.getExtension(index);
      }
      public Builder setExtension(int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.extension_.set(index, value);
        return this;
      }
      public Builder setExtension(int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        result.extension_.set(index, builderForValue.build());
        return this;
      }
      public Builder addExtension(com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.extension_.isEmpty()) {
          result.extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
        }
        result.extension_.add(value);
        return this;
      }
      public Builder addExtension(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        if (result.extension_.isEmpty()) {
          result.extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
        }
        result.extension_.add(builderForValue.build());
        return this;
      }
      public Builder addAllExtension(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProto> values) {
        if (result.extension_.isEmpty()) {
          result.extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
        }
        super.addAll(values, result.extension_);
        return this;
      }
      public Builder clearExtension() {
        result.extension_ = java.util.Collections.emptyList();
        return this;
      }
      
      // optional .google.protobuf.FileOptions options = 8;
      public boolean hasOptions() {
        return result.hasOptions();
      }
      public com.google.protobuf.DescriptorProtos.FileOptions getOptions() {
        return result.getOptions();
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.FileOptions value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.FileOptions.Builder builderForValue) {
        result.hasOptions = true;
        result.options_ = builderForValue.build();
        return this;
      }
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.FileOptions value) {
        if (result.hasOptions() &&
            result.options_ != com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance()) {
          result.options_ =
            com.google.protobuf.DescriptorProtos.FileOptions.newBuilder(result.options_).mergeFrom(value).buildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder clearOptions() {
        result.hasOptions = false;
        result.options_ = com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.FileDescriptorProto)
    }
    
    static {
      defaultInstance = new FileDescriptorProto(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorProto)
  }
  
  public static final class DescriptorProto extends
      com.google.protobuf.GeneratedMessage {
    // Use DescriptorProto.newBuilder() to construct.
    private DescriptorProto() {
      initFields();
    }
    private DescriptorProto(boolean noInit) {}
    
    private static final DescriptorProto defaultInstance;
    public static DescriptorProto getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public DescriptorProto getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_fieldAccessorTable;
    }
    
    public static final class ExtensionRange extends
        com.google.protobuf.GeneratedMessage {
      // Use ExtensionRange.newBuilder() to construct.
      private ExtensionRange() {
        initFields();
      }
      private ExtensionRange(boolean noInit) {}
      
      private static final ExtensionRange defaultInstance;
      public static ExtensionRange getDefaultInstance() {
        return defaultInstance;
      }
      
      @Override
	public ExtensionRange getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor;
      }
      
      @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable;
      }
      
      // optional int32 start = 1;
      public static final int START_FIELD_NUMBER = 1;
      private boolean hasStart;
      private int start_ = 0;
      public boolean hasStart() { return hasStart; }
      public int getStart() { return start_; }
      
      // optional int32 end = 2;
      public static final int END_FIELD_NUMBER = 2;
      private boolean hasEnd;
      private int end_ = 0;
      public boolean hasEnd() { return hasEnd; }
      public int getEnd() { return end_; }
      
      private void initFields() {
      }
      @Override
	public final boolean isInitialized() {
        return true;
      }
      
      @Override
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (hasStart()) {
          output.writeInt32(1, getStart());
        }
        if (hasEnd()) {
          output.writeInt32(2, getEnd());
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      @Override
	public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (hasStart()) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, getStart());
        }
        if (hasEnd()) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, getEnd());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      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 newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      @Override
	public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      @Override
	public Builder toBuilder() { return newBuilder(this); }
      
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder> {
        private com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange result;
        
        // Construct using com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.newBuilder()
        private Builder() {}
        
        private static Builder create() {
          Builder builder = new Builder();
          builder.result = new com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange();
          return builder;
        }
        
        @Override
		protected com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange internalGetResult() {
          return result;
        }
        
        @Override
		public Builder clear() {
          if (result == null) {
            throw new IllegalStateException(
              "Cannot call clear() after build().");
          }
          result = new com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange();
          return this;
        }
        
        @Override
		public Builder clone() {
          return create().mergeFrom(result);
        }
        
        @Override
		public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDescriptor();
        }
        
        @Override
		public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getDefaultInstanceForType() {
          return com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDefaultInstance();
        }
        
        @Override
		public boolean isInitialized() {
          return result.isInitialized();
        }
        @Override
		public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange build() {
          if (result != null && !isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return buildPartial();
        }
        
        private com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          if (!isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return buildPartial();
        }
        
        @Override
		public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange buildPartial() {
          if (result == null) {
            throw new IllegalStateException(
              "build() has already been called on this Builder.");
          }
          com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange returnMe = result;
          result = null;
          return returnMe;
        }
        
        @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());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        @Override
		public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  return this;
                }
                break;
              }
              case 8: {
                setStart(input.readInt32());
                break;
              }
              case 16: {
                setEnd(input.readInt32());
                break;
              }
            }
          }
        }
        
        
        // optional int32 start = 1;
        public boolean hasStart() {
          return result.hasStart();
        }
        public int getStart() {
          return result.getStart();
        }
        public Builder setStart(int value) {
          result.hasStart = true;
          result.start_ = value;
          return this;
        }
        public Builder clearStart() {
          result.hasStart = false;
          result.start_ = 0;
          return this;
        }
        
        // optional int32 end = 2;
        public boolean hasEnd() {
          return result.hasEnd();
        }
        public int getEnd() {
          return result.getEnd();
        }
        public Builder setEnd(int value) {
          result.hasEnd = true;
          result.end_ = value;
          return this;
        }
        public Builder clearEnd() {
          result.hasEnd = false;
          result.end_ = 0;
          return this;
        }
        
        // @@protoc_insertion_point(builder_scope:google.protobuf.DescriptorProto.ExtensionRange)
      }
      
      static {
        defaultInstance = new ExtensionRange(true);
        com.google.protobuf.DescriptorProtos.internalForceInit();
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto.ExtensionRange)
    }
    
    // optional string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private boolean hasName;
    private java.lang.String name_ = "";
    public boolean hasName() { return hasName; }
    public java.lang.String getName() { return name_; }
    
    // repeated .google.protobuf.FieldDescriptorProto field = 2;
    public static final int FIELD_FIELD_NUMBER = 2;
    private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> field_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getFieldList() {
      return field_;
    }
    public int getFieldCount() { return field_.size(); }
    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getField(int index) {
      return field_.get(index);
    }
    
    // repeated .google.protobuf.FieldDescriptorProto extension = 6;
    public static final int EXTENSION_FIELD_NUMBER = 6;
    private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> extension_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() {
      return extension_;
    }
    public int getExtensionCount() { return extension_.size(); }
    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
      return extension_.get(index);
    }
    
    // repeated .google.protobuf.DescriptorProto nested_type = 3;
    public static final int NESTED_TYPE_FIELD_NUMBER = 3;
    private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> nestedType_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getNestedTypeList() {
      return nestedType_;
    }
    public int getNestedTypeCount() { return nestedType_.size(); }
    public com.google.protobuf.DescriptorProtos.DescriptorProto getNestedType(int index) {
      return nestedType_.get(index);
    }
    
    // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
    public static final int ENUM_TYPE_FIELD_NUMBER = 4;
    private java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> enumType_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() {
      return enumType_;
    }
    public int getEnumTypeCount() { return enumType_.size(); }
    public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
      return enumType_.get(index);
    }
    
    // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
    public static final int EXTENSION_RANGE_FIELD_NUMBER = 5;
    private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> extensionRange_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> getExtensionRangeList() {
      return extensionRange_;
    }
    public int getExtensionRangeCount() { return extensionRange_.size(); }
    public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getExtensionRange(int index) {
      return extensionRange_.get(index);
    }
    
    // optional .google.protobuf.MessageOptions options = 7;
    public static final int OPTIONS_FIELD_NUMBER = 7;
    private boolean hasOptions;
    private com.google.protobuf.DescriptorProtos.MessageOptions options_;
    public boolean hasOptions() { return hasOptions; }
    public com.google.protobuf.DescriptorProtos.MessageOptions getOptions() { return options_; }
    
    private void initFields() {
      options_ = com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance();
    }
    @Override
	public final boolean isInitialized() {
      for (com.google.protobuf.DescriptorProtos.FieldDescriptorProto element : getFieldList()) {
        if (!element.isInitialized()) return false;
      }
      for (com.google.protobuf.DescriptorProtos.FieldDescriptorProto element : getExtensionList()) {
        if (!element.isInitialized()) return false;
      }
      for (com.google.protobuf.DescriptorProtos.DescriptorProto element : getNestedTypeList()) {
        if (!element.isInitialized()) return false;
      }
      for (com.google.protobuf.DescriptorProtos.EnumDescriptorProto element : getEnumTypeList()) {
        if (!element.isInitialized()) return false;
      }
      if (hasOptions()) {
        if (!getOptions().isInitialized()) return false;
      }
      return true;
    }
    
    @Override
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (hasName()) {
        output.writeString(1, getName());
      }
      for (com.google.protobuf.DescriptorProtos.FieldDescriptorProto element : getFieldList()) {
        output.writeMessage(2, element);
      }
      for (com.google.protobuf.DescriptorProtos.DescriptorProto element : getNestedTypeList()) {
        output.writeMessage(3, element);
      }
      for (com.google.protobuf.DescriptorProtos.EnumDescriptorProto element : getEnumTypeList()) {
        output.writeMessage(4, element);
      }
      for (com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange element : getExtensionRangeList()) {
        output.writeMessage(5, element);
      }
      for (com.google.protobuf.DescriptorProtos.FieldDescriptorProto element : getExtensionList()) {
        output.writeMessage(6, element);
      }
      if (hasOptions()) {
        output.writeMessage(7, getOptions());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasName()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(1, getName());
      }
      for (com.google.protobuf.DescriptorProtos.FieldDescriptorProto element : getFieldList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, element);
      }
      for (com.google.protobuf.DescriptorProtos.DescriptorProto element : getNestedTypeList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, element);
      }
      for (com.google.protobuf.DescriptorProtos.EnumDescriptorProto element : getEnumTypeList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, element);
      }
      for (com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange element : getExtensionRangeList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, element);
      }
      for (com.google.protobuf.DescriptorProtos.FieldDescriptorProto element : getExtensionList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, element);
      }
      if (hasOptions()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getOptions());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.DescriptorProto prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.google.protobuf.DescriptorProtos.DescriptorProto result;
      
      // Construct using com.google.protobuf.DescriptorProtos.DescriptorProto.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.DescriptorProto();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.DescriptorProto internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.DescriptorProto();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.DescriptorProto.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.DescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.DescriptorProto build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.DescriptorProto buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.DescriptorProto buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.field_ != java.util.Collections.EMPTY_LIST) {
          result.field_ =
            java.util.Collections.unmodifiableList(result.field_);
        }
        if (result.extension_ != java.util.Collections.EMPTY_LIST) {
          result.extension_ =
            java.util.Collections.unmodifiableList(result.extension_);
        }
        if (result.nestedType_ != java.util.Collections.EMPTY_LIST) {
          result.nestedType_ =
            java.util.Collections.unmodifiableList(result.nestedType_);
        }
        if (result.enumType_ != java.util.Collections.EMPTY_LIST) {
          result.enumType_ =
            java.util.Collections.unmodifiableList(result.enumType_);
        }
        if (result.extensionRange_ != java.util.Collections.EMPTY_LIST) {
          result.extensionRange_ =
            java.util.Collections.unmodifiableList(result.extensionRange_);
        }
        com.google.protobuf.DescriptorProtos.DescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      @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()) {
          setName(other.getName());
        }
        if (!other.field_.isEmpty()) {
          if (result.field_.isEmpty()) {
            result.field_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
          }
          result.field_.addAll(other.field_);
        }
        if (!other.extension_.isEmpty()) {
          if (result.extension_.isEmpty()) {
            result.extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
          }
          result.extension_.addAll(other.extension_);
        }
        if (!other.nestedType_.isEmpty()) {
          if (result.nestedType_.isEmpty()) {
            result.nestedType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>();
          }
          result.nestedType_.addAll(other.nestedType_);
        }
        if (!other.enumType_.isEmpty()) {
          if (result.enumType_.isEmpty()) {
            result.enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>();
          }
          result.enumType_.addAll(other.enumType_);
        }
        if (!other.extensionRange_.isEmpty()) {
          if (result.extensionRange_.isEmpty()) {
            result.extensionRange_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange>();
          }
          result.extensionRange_.addAll(other.extensionRange_);
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 10: {
              setName(input.readString());
              break;
            }
            case 18: {
              com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addField(subBuilder.buildPartial());
              break;
            }
            case 26: {
              com.google.protobuf.DescriptorProtos.DescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.DescriptorProto.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addNestedType(subBuilder.buildPartial());
              break;
            }
            case 34: {
              com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.EnumDescriptorProto.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addEnumType(subBuilder.buildPartial());
              break;
            }
            case 42: {
              com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder subBuilder = com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addExtensionRange(subBuilder.buildPartial());
              break;
            }
            case 50: {
              com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addExtension(subBuilder.buildPartial());
              break;
            }
            case 58: {
              com.google.protobuf.DescriptorProtos.MessageOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.MessageOptions.newBuilder();
              if (hasOptions()) {
                subBuilder.mergeFrom(getOptions());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setOptions(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // optional string name = 1;
      public boolean hasName() {
        return result.hasName();
      }
      public java.lang.String getName() {
        return result.getName();
      }
      public Builder setName(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder clearName() {
        result.hasName = false;
        result.name_ = getDefaultInstance().getName();
        return this;
      }
      
      // repeated .google.protobuf.FieldDescriptorProto field = 2;
      public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getFieldList() {
        return java.util.Collections.unmodifiableList(result.field_);
      }
      public int getFieldCount() {
        return result.getFieldCount();
      }
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getField(int index) {
        return result.getField(index);
      }
      public Builder setField(int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.field_.set(index, value);
        return this;
      }
      public Builder setField(int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        result.field_.set(index, builderForValue.build());
        return this;
      }
      public Builder addField(com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.field_.isEmpty()) {
          result.field_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
        }
        result.field_.add(value);
        return this;
      }
      public Builder addField(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        if (result.field_.isEmpty()) {
          result.field_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
        }
        result.field_.add(builderForValue.build());
        return this;
      }
      public Builder addAllField(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProto> values) {
        if (result.field_.isEmpty()) {
          result.field_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
        }
        super.addAll(values, result.field_);
        return this;
      }
      public Builder clearField() {
        result.field_ = java.util.Collections.emptyList();
        return this;
      }
      
      // repeated .google.protobuf.FieldDescriptorProto extension = 6;
      public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() {
        return java.util.Collections.unmodifiableList(result.extension_);
      }
      public int getExtensionCount() {
        return result.getExtensionCount();
      }
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) {
        return result.getExtension(index);
      }
      public Builder setExtension(int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.extension_.set(index, value);
        return this;
      }
      public Builder setExtension(int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        result.extension_.set(index, builderForValue.build());
        return this;
      }
      public Builder addExtension(com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.extension_.isEmpty()) {
          result.extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
        }
        result.extension_.add(value);
        return this;
      }
      public Builder addExtension(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        if (result.extension_.isEmpty()) {
          result.extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
        }
        result.extension_.add(builderForValue.build());
        return this;
      }
      public Builder addAllExtension(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProto> values) {
        if (result.extension_.isEmpty()) {
          result.extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>();
        }
        super.addAll(values, result.extension_);
        return this;
      }
      public Builder clearExtension() {
        result.extension_ = java.util.Collections.emptyList();
        return this;
      }
      
      // repeated .google.protobuf.DescriptorProto nested_type = 3;
      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getNestedTypeList() {
        return java.util.Collections.unmodifiableList(result.nestedType_);
      }
      public int getNestedTypeCount() {
        return result.getNestedTypeCount();
      }
      public com.google.protobuf.DescriptorProtos.DescriptorProto getNestedType(int index) {
        return result.getNestedType(index);
      }
      public Builder setNestedType(int index, com.google.protobuf.DescriptorProtos.DescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.nestedType_.set(index, value);
        return this;
      }
      public Builder setNestedType(int index, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        result.nestedType_.set(index, builderForValue.build());
        return this;
      }
      public Builder addNestedType(com.google.protobuf.DescriptorProtos.DescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.nestedType_.isEmpty()) {
          result.nestedType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>();
        }
        result.nestedType_.add(value);
        return this;
      }
      public Builder addNestedType(com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        if (result.nestedType_.isEmpty()) {
          result.nestedType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>();
        }
        result.nestedType_.add(builderForValue.build());
        return this;
      }
      public Builder addAllNestedType(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.DescriptorProto> values) {
        if (result.nestedType_.isEmpty()) {
          result.nestedType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>();
        }
        super.addAll(values, result.nestedType_);
        return this;
      }
      public Builder clearNestedType() {
        result.nestedType_ = java.util.Collections.emptyList();
        return this;
      }
      
      // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
      public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() {
        return java.util.Collections.unmodifiableList(result.enumType_);
      }
      public int getEnumTypeCount() {
        return result.getEnumTypeCount();
      }
      public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) {
        return result.getEnumType(index);
      }
      public Builder setEnumType(int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.enumType_.set(index, value);
        return this;
      }
      public Builder setEnumType(int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        result.enumType_.set(index, builderForValue.build());
        return this;
      }
      public Builder addEnumType(com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.enumType_.isEmpty()) {
          result.enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>();
        }
        result.enumType_.add(value);
        return this;
      }
      public Builder addEnumType(com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        if (result.enumType_.isEmpty()) {
          result.enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>();
        }
        result.enumType_.add(builderForValue.build());
        return this;
      }
      public Builder addAllEnumType(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProto> values) {
        if (result.enumType_.isEmpty()) {
          result.enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>();
        }
        super.addAll(values, result.enumType_);
        return this;
      }
      public Builder clearEnumType() {
        result.enumType_ = java.util.Collections.emptyList();
        return this;
      }
      
      // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
      public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> getExtensionRangeList() {
        return java.util.Collections.unmodifiableList(result.extensionRange_);
      }
      public int getExtensionRangeCount() {
        return result.getExtensionRangeCount();
      }
      public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getExtensionRange(int index) {
        return result.getExtensionRange(index);
      }
      public Builder setExtensionRange(int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.extensionRange_.set(index, value);
        return this;
      }
      public Builder setExtensionRange(int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder builderForValue) {
        result.extensionRange_.set(index, builderForValue.build());
        return this;
      }
      public Builder addExtensionRange(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.extensionRange_.isEmpty()) {
          result.extensionRange_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange>();
        }
        result.extensionRange_.add(value);
        return this;
      }
      public Builder addExtensionRange(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder builderForValue) {
        if (result.extensionRange_.isEmpty()) {
          result.extensionRange_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange>();
        }
        result.extensionRange_.add(builderForValue.build());
        return this;
      }
      public Builder addAllExtensionRange(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> values) {
        if (result.extensionRange_.isEmpty()) {
          result.extensionRange_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange>();
        }
        super.addAll(values, result.extensionRange_);
        return this;
      }
      public Builder clearExtensionRange() {
        result.extensionRange_ = java.util.Collections.emptyList();
        return this;
      }
      
      // optional .google.protobuf.MessageOptions options = 7;
      public boolean hasOptions() {
        return result.hasOptions();
      }
      public com.google.protobuf.DescriptorProtos.MessageOptions getOptions() {
        return result.getOptions();
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.MessageOptions value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.MessageOptions.Builder builderForValue) {
        result.hasOptions = true;
        result.options_ = builderForValue.build();
        return this;
      }
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.MessageOptions value) {
        if (result.hasOptions() &&
            result.options_ != com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance()) {
          result.options_ =
            com.google.protobuf.DescriptorProtos.MessageOptions.newBuilder(result.options_).mergeFrom(value).buildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder clearOptions() {
        result.hasOptions = false;
        result.options_ = com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.DescriptorProto)
    }
    
    static {
      defaultInstance = new DescriptorProto(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto)
  }
  
  public static final class FieldDescriptorProto extends
      com.google.protobuf.GeneratedMessage {
    // Use FieldDescriptorProto.newBuilder() to construct.
    private FieldDescriptorProto() {
      initFields();
    }
    private FieldDescriptorProto(boolean noInit) {}
    
    private static final FieldDescriptorProto defaultInstance;
    public static FieldDescriptorProto getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public FieldDescriptorProto getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable;
    }
    
    public enum Type
        implements com.google.protobuf.ProtocolMessageEnum {
      TYPE_DOUBLE(0, 1),
      TYPE_FLOAT(1, 2),
      TYPE_INT64(2, 3),
      TYPE_UINT64(3, 4),
      TYPE_INT32(4, 5),
      TYPE_FIXED64(5, 6),
      TYPE_FIXED32(6, 7),
      TYPE_BOOL(7, 8),
      TYPE_STRING(8, 9),
      TYPE_GROUP(9, 10),
      TYPE_MESSAGE(10, 11),
      TYPE_BYTES(11, 12),
      TYPE_UINT32(12, 13),
      TYPE_ENUM(13, 14),
      TYPE_SFIXED32(14, 15),
      TYPE_SFIXED64(15, 16),
      TYPE_SINT32(16, 17),
      TYPE_SINT64(17, 18),
      ;
      
      
      @Override
	public final int getNumber() { return value; }
      
      public static Type valueOf(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<Type>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap<Type>
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
              @Override
			public Type findValueByNumber(int number) {
                return Type.valueOf(number)
      ;        }
            };
      
      @Override
	public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(index);
      }
      @Override
	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 = {
        TYPE_DOUBLE, TYPE_FLOAT, TYPE_INT64, TYPE_UINT64, TYPE_INT32, TYPE_FIXED64, TYPE_FIXED32, TYPE_BOOL, TYPE_STRING, TYPE_GROUP, TYPE_MESSAGE, TYPE_BYTES, TYPE_UINT32, TYPE_ENUM, TYPE_SFIXED32, TYPE_SFIXED64, TYPE_SINT32, TYPE_SINT64, 
      };
      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 index;
      private final int value;
      private Type(int index, int value) {
        this.index = index;
        this.value = value;
      }
      
      static {
        com.google.protobuf.DescriptorProtos.getDescriptor();
      }
      
      // @@protoc_insertion_point(enum_scope:google.protobuf.FieldDescriptorProto.Type)
    }
    
    public enum Label
        implements com.google.protobuf.ProtocolMessageEnum {
      LABEL_OPTIONAL(0, 1),
      LABEL_REQUIRED(1, 2),
      LABEL_REPEATED(2, 3),
      ;
      
      
      @Override
	public final int getNumber() { return value; }
      
      public static Label valueOf(int value) {
        switch (value) {
          case 1: return LABEL_OPTIONAL;
          case 2: return LABEL_REQUIRED;
          case 3: return LABEL_REPEATED;
          default: return null;
        }
      }
      
      public static com.google.protobuf.Internal.EnumLiteMap<Label>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap<Label>
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Label>() {
              @Override
			public Label findValueByNumber(int number) {
                return Label.valueOf(number)
      ;        }
            };
      
      @Override
	public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(index);
      }
      @Override
	public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDescriptor().getEnumTypes().get(1);
      }
      
      private static final Label[] VALUES = {
        LABEL_OPTIONAL, LABEL_REQUIRED, LABEL_REPEATED, 
      };
      public static Label valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
      private final int index;
      private final int value;
      private Label(int index, int value) {
        this.index = index;
        this.value = value;
      }
      
      static {
        com.google.protobuf.DescriptorProtos.getDescriptor();
      }
      
      // @@protoc_insertion_point(enum_scope:google.protobuf.FieldDescriptorProto.Label)
    }
    
    // optional string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private boolean hasName;
    private java.lang.String name_ = "";
    public boolean hasName() { return hasName; }
    public java.lang.String getName() { return name_; }
    
    // optional int32 number = 3;
    public static final int NUMBER_FIELD_NUMBER = 3;
    private boolean hasNumber;
    private int number_ = 0;
    public boolean hasNumber() { return hasNumber; }
    public int getNumber() { return number_; }
    
    // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
    public static final int LABEL_FIELD_NUMBER = 4;
    private boolean hasLabel;
    private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label label_;
    public boolean hasLabel() { return hasLabel; }
    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel() { return label_; }
    
    // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
    public static final int TYPE_FIELD_NUMBER = 5;
    private boolean hasType;
    private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type type_;
    public boolean hasType() { return hasType; }
    public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType() { return type_; }
    
    // optional string type_name = 6;
    public static final int TYPE_NAME_FIELD_NUMBER = 6;
    private boolean hasTypeName;
    private java.lang.String typeName_ = "";
    public boolean hasTypeName() { return hasTypeName; }
    public java.lang.String getTypeName() { return typeName_; }
    
    // optional string extendee = 2;
    public static final int EXTENDEE_FIELD_NUMBER = 2;
    private boolean hasExtendee;
    private java.lang.String extendee_ = "";
    public boolean hasExtendee() { return hasExtendee; }
    public java.lang.String getExtendee() { return extendee_; }
    
    // optional string default_value = 7;
    public static final int DEFAULT_VALUE_FIELD_NUMBER = 7;
    private boolean hasDefaultValue;
    private java.lang.String defaultValue_ = "";
    public boolean hasDefaultValue() { return hasDefaultValue; }
    public java.lang.String getDefaultValue() { return defaultValue_; }
    
    // optional .google.protobuf.FieldOptions options = 8;
    public static final int OPTIONS_FIELD_NUMBER = 8;
    private boolean hasOptions;
    private com.google.protobuf.DescriptorProtos.FieldOptions options_;
    public boolean hasOptions() { return hasOptions; }
    public com.google.protobuf.DescriptorProtos.FieldOptions getOptions() { return options_; }
    
    private void initFields() {
      label_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL;
      type_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE;
      options_ = com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance();
    }
    @Override
	public final boolean isInitialized() {
      if (hasOptions()) {
        if (!getOptions().isInitialized()) return false;
      }
      return true;
    }
    
    @Override
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (hasName()) {
        output.writeString(1, getName());
      }
      if (hasExtendee()) {
        output.writeString(2, getExtendee());
      }
      if (hasNumber()) {
        output.writeInt32(3, getNumber());
      }
      if (hasLabel()) {
        output.writeEnum(4, getLabel().getNumber());
      }
      if (hasType()) {
        output.writeEnum(5, getType().getNumber());
      }
      if (hasTypeName()) {
        output.writeString(6, getTypeName());
      }
      if (hasDefaultValue()) {
        output.writeString(7, getDefaultValue());
      }
      if (hasOptions()) {
        output.writeMessage(8, getOptions());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasName()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(1, getName());
      }
      if (hasExtendee()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(2, getExtendee());
      }
      if (hasNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, getNumber());
      }
      if (hasLabel()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(4, getLabel().getNumber());
      }
      if (hasType()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, getType().getNumber());
      }
      if (hasTypeName()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(6, getTypeName());
      }
      if (hasDefaultValue()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(7, getDefaultValue());
      }
      if (hasOptions()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getOptions());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FieldDescriptorProto prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.google.protobuf.DescriptorProtos.FieldDescriptorProto result;
      
      // Construct using com.google.protobuf.DescriptorProtos.FieldDescriptorProto.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.FieldDescriptorProto();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.FieldDescriptorProto internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.FieldDescriptorProto();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.FieldDescriptorProto buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.FieldDescriptorProto buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        com.google.protobuf.DescriptorProtos.FieldDescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      @Override
	public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.FieldDescriptorProto) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.FieldDescriptorProto)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.FieldDescriptorProto other) {
        if (other == com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance()) return this;
        if (other.hasName()) {
          setName(other.getName());
        }
        if (other.hasNumber()) {
          setNumber(other.getNumber());
        }
        if (other.hasLabel()) {
          setLabel(other.getLabel());
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasTypeName()) {
          setTypeName(other.getTypeName());
        }
        if (other.hasExtendee()) {
          setExtendee(other.getExtendee());
        }
        if (other.hasDefaultValue()) {
          setDefaultValue(other.getDefaultValue());
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 10: {
              setName(input.readString());
              break;
            }
            case 18: {
              setExtendee(input.readString());
              break;
            }
            case 24: {
              setNumber(input.readInt32());
              break;
            }
            case 32: {
              int rawValue = input.readEnum();
              com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label value = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(4, rawValue);
              } else {
                setLabel(value);
              }
              break;
            }
            case 40: {
              int rawValue = input.readEnum();
              com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type value = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(5, rawValue);
              } else {
                setType(value);
              }
              break;
            }
            case 50: {
              setTypeName(input.readString());
              break;
            }
            case 58: {
              setDefaultValue(input.readString());
              break;
            }
            case 66: {
              com.google.protobuf.DescriptorProtos.FieldOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.FieldOptions.newBuilder();
              if (hasOptions()) {
                subBuilder.mergeFrom(getOptions());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setOptions(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // optional string name = 1;
      public boolean hasName() {
        return result.hasName();
      }
      public java.lang.String getName() {
        return result.getName();
      }
      public Builder setName(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder clearName() {
        result.hasName = false;
        result.name_ = getDefaultInstance().getName();
        return this;
      }
      
      // optional int32 number = 3;
      public boolean hasNumber() {
        return result.hasNumber();
      }
      public int getNumber() {
        return result.getNumber();
      }
      public Builder setNumber(int value) {
        result.hasNumber = true;
        result.number_ = value;
        return this;
      }
      public Builder clearNumber() {
        result.hasNumber = false;
        result.number_ = 0;
        return this;
      }
      
      // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
      public boolean hasLabel() {
        return result.hasLabel();
      }
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel() {
        return result.getLabel();
      }
      public Builder setLabel(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.hasLabel = true;
        result.label_ = value;
        return this;
      }
      public Builder clearLabel() {
        result.hasLabel = false;
        result.label_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL;
        return this;
      }
      
      // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
      public boolean hasType() {
        return result.hasType();
      }
      public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType() {
        return result.getType();
      }
      public Builder setType(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.hasType = true;
        result.type_ = value;
        return this;
      }
      public Builder clearType() {
        result.hasType = false;
        result.type_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE;
        return this;
      }
      
      // optional string type_name = 6;
      public boolean hasTypeName() {
        return result.hasTypeName();
      }
      public java.lang.String getTypeName() {
        return result.getTypeName();
      }
      public Builder setTypeName(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasTypeName = true;
        result.typeName_ = value;
        return this;
      }
      public Builder clearTypeName() {
        result.hasTypeName = false;
        result.typeName_ = getDefaultInstance().getTypeName();
        return this;
      }
      
      // optional string extendee = 2;
      public boolean hasExtendee() {
        return result.hasExtendee();
      }
      public java.lang.String getExtendee() {
        return result.getExtendee();
      }
      public Builder setExtendee(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasExtendee = true;
        result.extendee_ = value;
        return this;
      }
      public Builder clearExtendee() {
        result.hasExtendee = false;
        result.extendee_ = getDefaultInstance().getExtendee();
        return this;
      }
      
      // optional string default_value = 7;
      public boolean hasDefaultValue() {
        return result.hasDefaultValue();
      }
      public java.lang.String getDefaultValue() {
        return result.getDefaultValue();
      }
      public Builder setDefaultValue(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasDefaultValue = true;
        result.defaultValue_ = value;
        return this;
      }
      public Builder clearDefaultValue() {
        result.hasDefaultValue = false;
        result.defaultValue_ = getDefaultInstance().getDefaultValue();
        return this;
      }
      
      // optional .google.protobuf.FieldOptions options = 8;
      public boolean hasOptions() {
        return result.hasOptions();
      }
      public com.google.protobuf.DescriptorProtos.FieldOptions getOptions() {
        return result.getOptions();
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.FieldOptions value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.FieldOptions.Builder builderForValue) {
        result.hasOptions = true;
        result.options_ = builderForValue.build();
        return this;
      }
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.FieldOptions value) {
        if (result.hasOptions() &&
            result.options_ != com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance()) {
          result.options_ =
            com.google.protobuf.DescriptorProtos.FieldOptions.newBuilder(result.options_).mergeFrom(value).buildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder clearOptions() {
        result.hasOptions = false;
        result.options_ = com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.FieldDescriptorProto)
    }
    
    static {
      defaultInstance = new FieldDescriptorProto(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.FieldDescriptorProto)
  }
  
  public static final class EnumDescriptorProto extends
      com.google.protobuf.GeneratedMessage {
    // Use EnumDescriptorProto.newBuilder() to construct.
    private EnumDescriptorProto() {
      initFields();
    }
    private EnumDescriptorProto(boolean noInit) {}
    
    private static final EnumDescriptorProto defaultInstance;
    public static EnumDescriptorProto getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public EnumDescriptorProto getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable;
    }
    
    // optional string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private boolean hasName;
    private java.lang.String name_ = "";
    public boolean hasName() { return hasName; }
    public java.lang.String getName() { return name_; }
    
    // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
    public static final int VALUE_FIELD_NUMBER = 2;
    private java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> value_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> getValueList() {
      return value_;
    }
    public int getValueCount() { return value_.size(); }
    public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getValue(int index) {
      return value_.get(index);
    }
    
    // optional .google.protobuf.EnumOptions options = 3;
    public static final int OPTIONS_FIELD_NUMBER = 3;
    private boolean hasOptions;
    private com.google.protobuf.DescriptorProtos.EnumOptions options_;
    public boolean hasOptions() { return hasOptions; }
    public com.google.protobuf.DescriptorProtos.EnumOptions getOptions() { return options_; }
    
    private void initFields() {
      options_ = com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance();
    }
    @Override
	public final boolean isInitialized() {
      for (com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto element : getValueList()) {
        if (!element.isInitialized()) return false;
      }
      if (hasOptions()) {
        if (!getOptions().isInitialized()) return false;
      }
      return true;
    }
    
    @Override
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (hasName()) {
        output.writeString(1, getName());
      }
      for (com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto element : getValueList()) {
        output.writeMessage(2, element);
      }
      if (hasOptions()) {
        output.writeMessage(3, getOptions());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasName()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(1, getName());
      }
      for (com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto element : getValueList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, element);
      }
      if (hasOptions()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getOptions());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumDescriptorProto prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.google.protobuf.DescriptorProtos.EnumDescriptorProto result;
      
      // Construct using com.google.protobuf.DescriptorProtos.EnumDescriptorProto.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.EnumDescriptorProto();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.EnumDescriptorProto internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.EnumDescriptorProto();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.EnumDescriptorProto build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.EnumDescriptorProto buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.EnumDescriptorProto buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.value_ != java.util.Collections.EMPTY_LIST) {
          result.value_ =
            java.util.Collections.unmodifiableList(result.value_);
        }
        com.google.protobuf.DescriptorProtos.EnumDescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      @Override
	public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.EnumDescriptorProto) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.EnumDescriptorProto)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumDescriptorProto other) {
        if (other == com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance()) return this;
        if (other.hasName()) {
          setName(other.getName());
        }
        if (!other.value_.isEmpty()) {
          if (result.value_.isEmpty()) {
            result.value_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto>();
          }
          result.value_.addAll(other.value_);
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 10: {
              setName(input.readString());
              break;
            }
            case 18: {
              com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addValue(subBuilder.buildPartial());
              break;
            }
            case 26: {
              com.google.protobuf.DescriptorProtos.EnumOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.EnumOptions.newBuilder();
              if (hasOptions()) {
                subBuilder.mergeFrom(getOptions());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setOptions(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // optional string name = 1;
      public boolean hasName() {
        return result.hasName();
      }
      public java.lang.String getName() {
        return result.getName();
      }
      public Builder setName(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder clearName() {
        result.hasName = false;
        result.name_ = getDefaultInstance().getName();
        return this;
      }
      
      // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
      public java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> getValueList() {
        return java.util.Collections.unmodifiableList(result.value_);
      }
      public int getValueCount() {
        return result.getValueCount();
      }
      public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getValue(int index) {
        return result.getValue(index);
      }
      public Builder setValue(int index, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.value_.set(index, value);
        return this;
      }
      public Builder setValue(int index, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder builderForValue) {
        result.value_.set(index, builderForValue.build());
        return this;
      }
      public Builder addValue(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.value_.isEmpty()) {
          result.value_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto>();
        }
        result.value_.add(value);
        return this;
      }
      public Builder addValue(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder builderForValue) {
        if (result.value_.isEmpty()) {
          result.value_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto>();
        }
        result.value_.add(builderForValue.build());
        return this;
      }
      public Builder addAllValue(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> values) {
        if (result.value_.isEmpty()) {
          result.value_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto>();
        }
        super.addAll(values, result.value_);
        return this;
      }
      public Builder clearValue() {
        result.value_ = java.util.Collections.emptyList();
        return this;
      }
      
      // optional .google.protobuf.EnumOptions options = 3;
      public boolean hasOptions() {
        return result.hasOptions();
      }
      public com.google.protobuf.DescriptorProtos.EnumOptions getOptions() {
        return result.getOptions();
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.EnumOptions value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.EnumOptions.Builder builderForValue) {
        result.hasOptions = true;
        result.options_ = builderForValue.build();
        return this;
      }
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.EnumOptions value) {
        if (result.hasOptions() &&
            result.options_ != com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance()) {
          result.options_ =
            com.google.protobuf.DescriptorProtos.EnumOptions.newBuilder(result.options_).mergeFrom(value).buildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder clearOptions() {
        result.hasOptions = false;
        result.options_ = com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.EnumDescriptorProto)
    }
    
    static {
      defaultInstance = new EnumDescriptorProto(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.EnumDescriptorProto)
  }
  
  public static final class EnumValueDescriptorProto extends
      com.google.protobuf.GeneratedMessage {
    // Use EnumValueDescriptorProto.newBuilder() to construct.
    private EnumValueDescriptorProto() {
      initFields();
    }
    private EnumValueDescriptorProto(boolean noInit) {}
    
    private static final EnumValueDescriptorProto defaultInstance;
    public static EnumValueDescriptorProto getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public EnumValueDescriptorProto getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable;
    }
    
    // optional string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private boolean hasName;
    private java.lang.String name_ = "";
    public boolean hasName() { return hasName; }
    public java.lang.String getName() { return name_; }
    
    // optional int32 number = 2;
    public static final int NUMBER_FIELD_NUMBER = 2;
    private boolean hasNumber;
    private int number_ = 0;
    public boolean hasNumber() { return hasNumber; }
    public int getNumber() { return number_; }
    
    // optional .google.protobuf.EnumValueOptions options = 3;
    public static final int OPTIONS_FIELD_NUMBER = 3;
    private boolean hasOptions;
    private com.google.protobuf.DescriptorProtos.EnumValueOptions options_;
    public boolean hasOptions() { return hasOptions; }
    public com.google.protobuf.DescriptorProtos.EnumValueOptions getOptions() { return options_; }
    
    private void initFields() {
      options_ = com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance();
    }
    @Override
	public final boolean isInitialized() {
      if (hasOptions()) {
        if (!getOptions().isInitialized()) return false;
      }
      return true;
    }
    
    @Override
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (hasName()) {
        output.writeString(1, getName());
      }
      if (hasNumber()) {
        output.writeInt32(2, getNumber());
      }
      if (hasOptions()) {
        output.writeMessage(3, getOptions());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasName()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(1, getName());
      }
      if (hasNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, getNumber());
      }
      if (hasOptions()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getOptions());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto result;
      
      // Construct using com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      @Override
	public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto other) {
        if (other == com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.getDefaultInstance()) return this;
        if (other.hasName()) {
          setName(other.getName());
        }
        if (other.hasNumber()) {
          setNumber(other.getNumber());
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 10: {
              setName(input.readString());
              break;
            }
            case 16: {
              setNumber(input.readInt32());
              break;
            }
            case 26: {
              com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.EnumValueOptions.newBuilder();
              if (hasOptions()) {
                subBuilder.mergeFrom(getOptions());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setOptions(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // optional string name = 1;
      public boolean hasName() {
        return result.hasName();
      }
      public java.lang.String getName() {
        return result.getName();
      }
      public Builder setName(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder clearName() {
        result.hasName = false;
        result.name_ = getDefaultInstance().getName();
        return this;
      }
      
      // optional int32 number = 2;
      public boolean hasNumber() {
        return result.hasNumber();
      }
      public int getNumber() {
        return result.getNumber();
      }
      public Builder setNumber(int value) {
        result.hasNumber = true;
        result.number_ = value;
        return this;
      }
      public Builder clearNumber() {
        result.hasNumber = false;
        result.number_ = 0;
        return this;
      }
      
      // optional .google.protobuf.EnumValueOptions options = 3;
      public boolean hasOptions() {
        return result.hasOptions();
      }
      public com.google.protobuf.DescriptorProtos.EnumValueOptions getOptions() {
        return result.getOptions();
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.EnumValueOptions value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder builderForValue) {
        result.hasOptions = true;
        result.options_ = builderForValue.build();
        return this;
      }
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.EnumValueOptions value) {
        if (result.hasOptions() &&
            result.options_ != com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance()) {
          result.options_ =
            com.google.protobuf.DescriptorProtos.EnumValueOptions.newBuilder(result.options_).mergeFrom(value).buildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder clearOptions() {
        result.hasOptions = false;
        result.options_ = com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.EnumValueDescriptorProto)
    }
    
    static {
      defaultInstance = new EnumValueDescriptorProto(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.EnumValueDescriptorProto)
  }
  
  public static final class ServiceDescriptorProto extends
      com.google.protobuf.GeneratedMessage {
    // Use ServiceDescriptorProto.newBuilder() to construct.
    private ServiceDescriptorProto() {
      initFields();
    }
    private ServiceDescriptorProto(boolean noInit) {}
    
    private static final ServiceDescriptorProto defaultInstance;
    public static ServiceDescriptorProto getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public ServiceDescriptorProto getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable;
    }
    
    // optional string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private boolean hasName;
    private java.lang.String name_ = "";
    public boolean hasName() { return hasName; }
    public java.lang.String getName() { return name_; }
    
    // repeated .google.protobuf.MethodDescriptorProto method = 2;
    public static final int METHOD_FIELD_NUMBER = 2;
    private java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> method_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> getMethodList() {
      return method_;
    }
    public int getMethodCount() { return method_.size(); }
    public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getMethod(int index) {
      return method_.get(index);
    }
    
    // optional .google.protobuf.ServiceOptions options = 3;
    public static final int OPTIONS_FIELD_NUMBER = 3;
    private boolean hasOptions;
    private com.google.protobuf.DescriptorProtos.ServiceOptions options_;
    public boolean hasOptions() { return hasOptions; }
    public com.google.protobuf.DescriptorProtos.ServiceOptions getOptions() { return options_; }
    
    private void initFields() {
      options_ = com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance();
    }
    @Override
	public final boolean isInitialized() {
      for (com.google.protobuf.DescriptorProtos.MethodDescriptorProto element : getMethodList()) {
        if (!element.isInitialized()) return false;
      }
      if (hasOptions()) {
        if (!getOptions().isInitialized()) return false;
      }
      return true;
    }
    
    @Override
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (hasName()) {
        output.writeString(1, getName());
      }
      for (com.google.protobuf.DescriptorProtos.MethodDescriptorProto element : getMethodList()) {
        output.writeMessage(2, element);
      }
      if (hasOptions()) {
        output.writeMessage(3, getOptions());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasName()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(1, getName());
      }
      for (com.google.protobuf.DescriptorProtos.MethodDescriptorProto element : getMethodList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, element);
      }
      if (hasOptions()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getOptions());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.google.protobuf.DescriptorProtos.ServiceDescriptorProto result;
      
      // Construct using com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.ServiceDescriptorProto();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.ServiceDescriptorProto internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.ServiceDescriptorProto();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.ServiceDescriptorProto buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.method_ != java.util.Collections.EMPTY_LIST) {
          result.method_ =
            java.util.Collections.unmodifiableList(result.method_);
        }
        com.google.protobuf.DescriptorProtos.ServiceDescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      @Override
	public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.ServiceDescriptorProto) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.ServiceDescriptorProto)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto other) {
        if (other == com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.getDefaultInstance()) return this;
        if (other.hasName()) {
          setName(other.getName());
        }
        if (!other.method_.isEmpty()) {
          if (result.method_.isEmpty()) {
            result.method_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.MethodDescriptorProto>();
          }
          result.method_.addAll(other.method_);
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 10: {
              setName(input.readString());
              break;
            }
            case 18: {
              com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.MethodDescriptorProto.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addMethod(subBuilder.buildPartial());
              break;
            }
            case 26: {
              com.google.protobuf.DescriptorProtos.ServiceOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.ServiceOptions.newBuilder();
              if (hasOptions()) {
                subBuilder.mergeFrom(getOptions());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setOptions(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // optional string name = 1;
      public boolean hasName() {
        return result.hasName();
      }
      public java.lang.String getName() {
        return result.getName();
      }
      public Builder setName(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder clearName() {
        result.hasName = false;
        result.name_ = getDefaultInstance().getName();
        return this;
      }
      
      // repeated .google.protobuf.MethodDescriptorProto method = 2;
      public java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> getMethodList() {
        return java.util.Collections.unmodifiableList(result.method_);
      }
      public int getMethodCount() {
        return result.getMethodCount();
      }
      public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getMethod(int index) {
        return result.getMethod(index);
      }
      public Builder setMethod(int index, com.google.protobuf.DescriptorProtos.MethodDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.method_.set(index, value);
        return this;
      }
      public Builder setMethod(int index, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder builderForValue) {
        result.method_.set(index, builderForValue.build());
        return this;
      }
      public Builder addMethod(com.google.protobuf.DescriptorProtos.MethodDescriptorProto value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.method_.isEmpty()) {
          result.method_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.MethodDescriptorProto>();
        }
        result.method_.add(value);
        return this;
      }
      public Builder addMethod(com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder builderForValue) {
        if (result.method_.isEmpty()) {
          result.method_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.MethodDescriptorProto>();
        }
        result.method_.add(builderForValue.build());
        return this;
      }
      public Builder addAllMethod(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.MethodDescriptorProto> values) {
        if (result.method_.isEmpty()) {
          result.method_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.MethodDescriptorProto>();
        }
        super.addAll(values, result.method_);
        return this;
      }
      public Builder clearMethod() {
        result.method_ = java.util.Collections.emptyList();
        return this;
      }
      
      // optional .google.protobuf.ServiceOptions options = 3;
      public boolean hasOptions() {
        return result.hasOptions();
      }
      public com.google.protobuf.DescriptorProtos.ServiceOptions getOptions() {
        return result.getOptions();
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.ServiceOptions value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.ServiceOptions.Builder builderForValue) {
        result.hasOptions = true;
        result.options_ = builderForValue.build();
        return this;
      }
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.ServiceOptions value) {
        if (result.hasOptions() &&
            result.options_ != com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance()) {
          result.options_ =
            com.google.protobuf.DescriptorProtos.ServiceOptions.newBuilder(result.options_).mergeFrom(value).buildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder clearOptions() {
        result.hasOptions = false;
        result.options_ = com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.ServiceDescriptorProto)
    }
    
    static {
      defaultInstance = new ServiceDescriptorProto(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.ServiceDescriptorProto)
  }
  
  public static final class MethodDescriptorProto extends
      com.google.protobuf.GeneratedMessage {
    // Use MethodDescriptorProto.newBuilder() to construct.
    private MethodDescriptorProto() {
      initFields();
    }
    private MethodDescriptorProto(boolean noInit) {}
    
    private static final MethodDescriptorProto defaultInstance;
    public static MethodDescriptorProto getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public MethodDescriptorProto getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable;
    }
    
    // optional string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private boolean hasName;
    private java.lang.String name_ = "";
    public boolean hasName() { return hasName; }
    public java.lang.String getName() { return name_; }
    
    // optional string input_type = 2;
    public static final int INPUT_TYPE_FIELD_NUMBER = 2;
    private boolean hasInputType;
    private java.lang.String inputType_ = "";
    public boolean hasInputType() { return hasInputType; }
    public java.lang.String getInputType() { return inputType_; }
    
    // optional string output_type = 3;
    public static final int OUTPUT_TYPE_FIELD_NUMBER = 3;
    private boolean hasOutputType;
    private java.lang.String outputType_ = "";
    public boolean hasOutputType() { return hasOutputType; }
    public java.lang.String getOutputType() { return outputType_; }
    
    // optional .google.protobuf.MethodOptions options = 4;
    public static final int OPTIONS_FIELD_NUMBER = 4;
    private boolean hasOptions;
    private com.google.protobuf.DescriptorProtos.MethodOptions options_;
    public boolean hasOptions() { return hasOptions; }
    public com.google.protobuf.DescriptorProtos.MethodOptions getOptions() { return options_; }
    
    private void initFields() {
      options_ = com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance();
    }
    @Override
	public final boolean isInitialized() {
      if (hasOptions()) {
        if (!getOptions().isInitialized()) return false;
      }
      return true;
    }
    
    @Override
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (hasName()) {
        output.writeString(1, getName());
      }
      if (hasInputType()) {
        output.writeString(2, getInputType());
      }
      if (hasOutputType()) {
        output.writeString(3, getOutputType());
      }
      if (hasOptions()) {
        output.writeMessage(4, getOptions());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasName()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(1, getName());
      }
      if (hasInputType()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(2, getInputType());
      }
      if (hasOutputType()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(3, getOutputType());
      }
      if (hasOptions()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getOptions());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.MethodDescriptorProto prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.google.protobuf.DescriptorProtos.MethodDescriptorProto result;
      
      // Construct using com.google.protobuf.DescriptorProtos.MethodDescriptorProto.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.MethodDescriptorProto();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.MethodDescriptorProto internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.MethodDescriptorProto();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.MethodDescriptorProto.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.MethodDescriptorProto.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.MethodDescriptorProto build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.MethodDescriptorProto buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.MethodDescriptorProto buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        com.google.protobuf.DescriptorProtos.MethodDescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      @Override
	public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.MethodDescriptorProto) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.MethodDescriptorProto)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.MethodDescriptorProto other) {
        if (other == com.google.protobuf.DescriptorProtos.MethodDescriptorProto.getDefaultInstance()) return this;
        if (other.hasName()) {
          setName(other.getName());
        }
        if (other.hasInputType()) {
          setInputType(other.getInputType());
        }
        if (other.hasOutputType()) {
          setOutputType(other.getOutputType());
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 10: {
              setName(input.readString());
              break;
            }
            case 18: {
              setInputType(input.readString());
              break;
            }
            case 26: {
              setOutputType(input.readString());
              break;
            }
            case 34: {
              com.google.protobuf.DescriptorProtos.MethodOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.MethodOptions.newBuilder();
              if (hasOptions()) {
                subBuilder.mergeFrom(getOptions());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setOptions(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // optional string name = 1;
      public boolean hasName() {
        return result.hasName();
      }
      public java.lang.String getName() {
        return result.getName();
      }
      public Builder setName(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder clearName() {
        result.hasName = false;
        result.name_ = getDefaultInstance().getName();
        return this;
      }
      
      // optional string input_type = 2;
      public boolean hasInputType() {
        return result.hasInputType();
      }
      public java.lang.String getInputType() {
        return result.getInputType();
      }
      public Builder setInputType(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasInputType = true;
        result.inputType_ = value;
        return this;
      }
      public Builder clearInputType() {
        result.hasInputType = false;
        result.inputType_ = getDefaultInstance().getInputType();
        return this;
      }
      
      // optional string output_type = 3;
      public boolean hasOutputType() {
        return result.hasOutputType();
      }
      public java.lang.String getOutputType() {
        return result.getOutputType();
      }
      public Builder setOutputType(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasOutputType = true;
        result.outputType_ = value;
        return this;
      }
      public Builder clearOutputType() {
        result.hasOutputType = false;
        result.outputType_ = getDefaultInstance().getOutputType();
        return this;
      }
      
      // optional .google.protobuf.MethodOptions options = 4;
      public boolean hasOptions() {
        return result.hasOptions();
      }
      public com.google.protobuf.DescriptorProtos.MethodOptions getOptions() {
        return result.getOptions();
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.MethodOptions value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder setOptions(com.google.protobuf.DescriptorProtos.MethodOptions.Builder builderForValue) {
        result.hasOptions = true;
        result.options_ = builderForValue.build();
        return this;
      }
      public Builder mergeOptions(com.google.protobuf.DescriptorProtos.MethodOptions value) {
        if (result.hasOptions() &&
            result.options_ != com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance()) {
          result.options_ =
            com.google.protobuf.DescriptorProtos.MethodOptions.newBuilder(result.options_).mergeFrom(value).buildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder clearOptions() {
        result.hasOptions = false;
        result.options_ = com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.MethodDescriptorProto)
    }
    
    static {
      defaultInstance = new MethodDescriptorProto(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.MethodDescriptorProto)
  }
  
  public static final class FileOptions extends
      com.google.protobuf.GeneratedMessage.ExtendableMessage<
        FileOptions> {
    // Use FileOptions.newBuilder() to construct.
    private FileOptions() {
      initFields();
    }
    private FileOptions(boolean noInit) {}
    
    private static final FileOptions defaultInstance;
    public static FileOptions getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public FileOptions getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_fieldAccessorTable;
    }
    
    public enum OptimizeMode
        implements com.google.protobuf.ProtocolMessageEnum {
      SPEED(0, 1),
      CODE_SIZE(1, 2),
      LITE_RUNTIME(2, 3),
      ;
      
      
      @Override
	public final int getNumber() { return value; }
      
      public static OptimizeMode valueOf(int value) {
        switch (value) {
          case 1: return SPEED;
          case 2: return CODE_SIZE;
          case 3: return LITE_RUNTIME;
          default: return null;
        }
      }
      
      public static com.google.protobuf.Internal.EnumLiteMap<OptimizeMode>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap<OptimizeMode>
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<OptimizeMode>() {
              @Override
			public OptimizeMode findValueByNumber(int number) {
                return OptimizeMode.valueOf(number)
      ;        }
            };
      
      @Override
	public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(index);
      }
      @Override
	public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.FileOptions.getDescriptor().getEnumTypes().get(0);
      }
      
      private static final OptimizeMode[] VALUES = {
        SPEED, CODE_SIZE, LITE_RUNTIME, 
      };
      public static OptimizeMode valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
      private final int index;
      private final int value;
      private OptimizeMode(int index, int value) {
        this.index = index;
        this.value = value;
      }
      
      static {
        com.google.protobuf.DescriptorProtos.getDescriptor();
      }
      
      // @@protoc_insertion_point(enum_scope:google.protobuf.FileOptions.OptimizeMode)
    }
    
    // optional string java_package = 1;
    public static final int JAVA_PACKAGE_FIELD_NUMBER = 1;
    private boolean hasJavaPackage;
    private java.lang.String javaPackage_ = "";
    public boolean hasJavaPackage() { return hasJavaPackage; }
    public java.lang.String getJavaPackage() { return javaPackage_; }
    
    // optional string java_outer_classname = 8;
    public static final int JAVA_OUTER_CLASSNAME_FIELD_NUMBER = 8;
    private boolean hasJavaOuterClassname;
    private java.lang.String javaOuterClassname_ = "";
    public boolean hasJavaOuterClassname() { return hasJavaOuterClassname; }
    public java.lang.String getJavaOuterClassname() { return javaOuterClassname_; }
    
    // optional bool java_multiple_files = 10 [default = false];
    public static final int JAVA_MULTIPLE_FILES_FIELD_NUMBER = 10;
    private boolean hasJavaMultipleFiles;
    private boolean javaMultipleFiles_ = false;
    public boolean hasJavaMultipleFiles() { return hasJavaMultipleFiles; }
    public boolean getJavaMultipleFiles() { return javaMultipleFiles_; }
    
    // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
    public static final int OPTIMIZE_FOR_FIELD_NUMBER = 9;
    private boolean hasOptimizeFor;
    private com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode optimizeFor_;
    public boolean hasOptimizeFor() { return hasOptimizeFor; }
    public com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor() { return optimizeFor_; }
    
    // optional bool cc_generic_services = 16 [default = true];
    public static final int CC_GENERIC_SERVICES_FIELD_NUMBER = 16;
    private boolean hasCcGenericServices;
    private boolean ccGenericServices_ = true;
    public boolean hasCcGenericServices() { return hasCcGenericServices; }
    public boolean getCcGenericServices() { return ccGenericServices_; }
    
    // optional bool java_generic_services = 17 [default = true];
    public static final int JAVA_GENERIC_SERVICES_FIELD_NUMBER = 17;
    private boolean hasJavaGenericServices;
    private boolean javaGenericServices_ = true;
    public boolean hasJavaGenericServices() { return hasJavaGenericServices; }
    public boolean getJavaGenericServices() { return javaGenericServices_; }
    
    // optional bool py_generic_services = 18 [default = true];
    public static final int PY_GENERIC_SERVICES_FIELD_NUMBER = 18;
    private boolean hasPyGenericServices;
    private boolean pyGenericServices_ = true;
    public boolean hasPyGenericServices() { return hasPyGenericServices; }
    public boolean getPyGenericServices() { return pyGenericServices_; }
    
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
    private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
      return uninterpretedOption_;
    }
    public int getUninterpretedOptionCount() { return uninterpretedOption_.size(); }
    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
      return uninterpretedOption_.get(index);
    }
    
    private void initFields() {
      optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED;
    }
    @Override
	public final boolean isInitialized() {
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        if (!element.isInitialized()) return false;
      }
      if (!extensionsAreInitialized()) return false;
      return true;
    }
    
    @Override
	@SuppressWarnings("unchecked")
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      com.google.protobuf.GeneratedMessage.ExtendableMessage
        .ExtensionWriter extensionWriter = newExtensionWriter();
      if (hasJavaPackage()) {
        output.writeString(1, getJavaPackage());
      }
      if (hasJavaOuterClassname()) {
        output.writeString(8, getJavaOuterClassname());
      }
      if (hasOptimizeFor()) {
        output.writeEnum(9, getOptimizeFor().getNumber());
      }
      if (hasJavaMultipleFiles()) {
        output.writeBool(10, getJavaMultipleFiles());
      }
      if (hasCcGenericServices()) {
        output.writeBool(16, getCcGenericServices());
      }
      if (hasJavaGenericServices()) {
        output.writeBool(17, getJavaGenericServices());
      }
      if (hasPyGenericServices()) {
        output.writeBool(18, getPyGenericServices());
      }
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        output.writeMessage(999, element);
      }
      extensionWriter.writeUntil(536870912, output);
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasJavaPackage()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(1, getJavaPackage());
      }
      if (hasJavaOuterClassname()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(8, getJavaOuterClassname());
      }
      if (hasOptimizeFor()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(9, getOptimizeFor().getNumber());
      }
      if (hasJavaMultipleFiles()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, getJavaMultipleFiles());
      }
      if (hasCcGenericServices()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(16, getCcGenericServices());
      }
      if (hasJavaGenericServices()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(17, getJavaGenericServices());
      }
      if (hasPyGenericServices()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(18, getPyGenericServices());
      }
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(999, element);
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FileOptions prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
          com.google.protobuf.DescriptorProtos.FileOptions, Builder> {
      private com.google.protobuf.DescriptorProtos.FileOptions result;
      
      // Construct using com.google.protobuf.DescriptorProtos.FileOptions.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.FileOptions();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.FileOptions internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.FileOptions();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.FileOptions.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.FileOptions getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.FileOptions build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.FileOptions buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.FileOptions buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.uninterpretedOption_ != java.util.Collections.EMPTY_LIST) {
          result.uninterpretedOption_ =
            java.util.Collections.unmodifiableList(result.uninterpretedOption_);
        }
        com.google.protobuf.DescriptorProtos.FileOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      @Override
	public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.FileOptions) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.FileOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.FileOptions other) {
        if (other == com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance()) return this;
        if (other.hasJavaPackage()) {
          setJavaPackage(other.getJavaPackage());
        }
        if (other.hasJavaOuterClassname()) {
          setJavaOuterClassname(other.getJavaOuterClassname());
        }
        if (other.hasJavaMultipleFiles()) {
          setJavaMultipleFiles(other.getJavaMultipleFiles());
        }
        if (other.hasOptimizeFor()) {
          setOptimizeFor(other.getOptimizeFor());
        }
        if (other.hasCcGenericServices()) {
          setCcGenericServices(other.getCcGenericServices());
        }
        if (other.hasJavaGenericServices()) {
          setJavaGenericServices(other.getJavaGenericServices());
        }
        if (other.hasPyGenericServices()) {
          setPyGenericServices(other.getPyGenericServices());
        }
        if (!other.uninterpretedOption_.isEmpty()) {
          if (result.uninterpretedOption_.isEmpty()) {
            result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
          }
          result.uninterpretedOption_.addAll(other.uninterpretedOption_);
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 10: {
              setJavaPackage(input.readString());
              break;
            }
            case 66: {
              setJavaOuterClassname(input.readString());
              break;
            }
            case 72: {
              int rawValue = input.readEnum();
              com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode value = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(9, rawValue);
              } else {
                setOptimizeFor(value);
              }
              break;
            }
            case 80: {
              setJavaMultipleFiles(input.readBool());
              break;
            }
            case 128: {
              setCcGenericServices(input.readBool());
              break;
            }
            case 136: {
              setJavaGenericServices(input.readBool());
              break;
            }
            case 144: {
              setPyGenericServices(input.readBool());
              break;
            }
            case 7994: {
              com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addUninterpretedOption(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // optional string java_package = 1;
      public boolean hasJavaPackage() {
        return result.hasJavaPackage();
      }
      public java.lang.String getJavaPackage() {
        return result.getJavaPackage();
      }
      public Builder setJavaPackage(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasJavaPackage = true;
        result.javaPackage_ = value;
        return this;
      }
      public Builder clearJavaPackage() {
        result.hasJavaPackage = false;
        result.javaPackage_ = getDefaultInstance().getJavaPackage();
        return this;
      }
      
      // optional string java_outer_classname = 8;
      public boolean hasJavaOuterClassname() {
        return result.hasJavaOuterClassname();
      }
      public java.lang.String getJavaOuterClassname() {
        return result.getJavaOuterClassname();
      }
      public Builder setJavaOuterClassname(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasJavaOuterClassname = true;
        result.javaOuterClassname_ = value;
        return this;
      }
      public Builder clearJavaOuterClassname() {
        result.hasJavaOuterClassname = false;
        result.javaOuterClassname_ = getDefaultInstance().getJavaOuterClassname();
        return this;
      }
      
      // optional bool java_multiple_files = 10 [default = false];
      public boolean hasJavaMultipleFiles() {
        return result.hasJavaMultipleFiles();
      }
      public boolean getJavaMultipleFiles() {
        return result.getJavaMultipleFiles();
      }
      public Builder setJavaMultipleFiles(boolean value) {
        result.hasJavaMultipleFiles = true;
        result.javaMultipleFiles_ = value;
        return this;
      }
      public Builder clearJavaMultipleFiles() {
        result.hasJavaMultipleFiles = false;
        result.javaMultipleFiles_ = false;
        return this;
      }
      
      // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
      public boolean hasOptimizeFor() {
        return result.hasOptimizeFor();
      }
      public com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor() {
        return result.getOptimizeFor();
      }
      public Builder setOptimizeFor(com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.hasOptimizeFor = true;
        result.optimizeFor_ = value;
        return this;
      }
      public Builder clearOptimizeFor() {
        result.hasOptimizeFor = false;
        result.optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED;
        return this;
      }
      
      // optional bool cc_generic_services = 16 [default = true];
      public boolean hasCcGenericServices() {
        return result.hasCcGenericServices();
      }
      public boolean getCcGenericServices() {
        return result.getCcGenericServices();
      }
      public Builder setCcGenericServices(boolean value) {
        result.hasCcGenericServices = true;
        result.ccGenericServices_ = value;
        return this;
      }
      public Builder clearCcGenericServices() {
        result.hasCcGenericServices = false;
        result.ccGenericServices_ = true;
        return this;
      }
      
      // optional bool java_generic_services = 17 [default = true];
      public boolean hasJavaGenericServices() {
        return result.hasJavaGenericServices();
      }
      public boolean getJavaGenericServices() {
        return result.getJavaGenericServices();
      }
      public Builder setJavaGenericServices(boolean value) {
        result.hasJavaGenericServices = true;
        result.javaGenericServices_ = value;
        return this;
      }
      public Builder clearJavaGenericServices() {
        result.hasJavaGenericServices = false;
        result.javaGenericServices_ = true;
        return this;
      }
      
      // optional bool py_generic_services = 18 [default = true];
      public boolean hasPyGenericServices() {
        return result.hasPyGenericServices();
      }
      public boolean getPyGenericServices() {
        return result.getPyGenericServices();
      }
      public Builder setPyGenericServices(boolean value) {
        result.hasPyGenericServices = true;
        result.pyGenericServices_ = value;
        return this;
      }
      public Builder clearPyGenericServices() {
        result.hasPyGenericServices = false;
        result.pyGenericServices_ = true;
        return this;
      }
      
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
        return java.util.Collections.unmodifiableList(result.uninterpretedOption_);
      }
      public int getUninterpretedOptionCount() {
        return result.getUninterpretedOptionCount();
      }
      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
        return result.getUninterpretedOption(index);
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.uninterpretedOption_.set(index, value);
        return this;
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        result.uninterpretedOption_.set(index, builderForValue.build());
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(value);
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(builderForValue.build());
        return this;
      }
      public Builder addAllUninterpretedOption(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        super.addAll(values, result.uninterpretedOption_);
        return this;
      }
      public Builder clearUninterpretedOption() {
        result.uninterpretedOption_ = java.util.Collections.emptyList();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.FileOptions)
    }
    
    static {
      defaultInstance = new FileOptions(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.FileOptions)
  }
  
  public static final class MessageOptions extends
      com.google.protobuf.GeneratedMessage.ExtendableMessage<
        MessageOptions> {
    // Use MessageOptions.newBuilder() to construct.
    private MessageOptions() {
      initFields();
    }
    private MessageOptions(boolean noInit) {}
    
    private static final MessageOptions defaultInstance;
    public static MessageOptions getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public MessageOptions getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_fieldAccessorTable;
    }
    
    // optional bool message_set_wire_format = 1 [default = false];
    public static final int MESSAGE_SET_WIRE_FORMAT_FIELD_NUMBER = 1;
    private boolean hasMessageSetWireFormat;
    private boolean messageSetWireFormat_ = false;
    public boolean hasMessageSetWireFormat() { return hasMessageSetWireFormat; }
    public boolean getMessageSetWireFormat() { return messageSetWireFormat_; }
    
    // optional bool no_standard_descriptor_accessor = 2 [default = false];
    public static final int NO_STANDARD_DESCRIPTOR_ACCESSOR_FIELD_NUMBER = 2;
    private boolean hasNoStandardDescriptorAccessor;
    private boolean noStandardDescriptorAccessor_ = false;
    public boolean hasNoStandardDescriptorAccessor() { return hasNoStandardDescriptorAccessor; }
    public boolean getNoStandardDescriptorAccessor() { return noStandardDescriptorAccessor_; }
    
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
    private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
      return uninterpretedOption_;
    }
    public int getUninterpretedOptionCount() { return uninterpretedOption_.size(); }
    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
      return uninterpretedOption_.get(index);
    }
    
    private void initFields() {
    }
    @Override
	public final boolean isInitialized() {
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        if (!element.isInitialized()) return false;
      }
      if (!extensionsAreInitialized()) return false;
      return true;
    }
    
    @Override
	@SuppressWarnings("unchecked")
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      com.google.protobuf.GeneratedMessage.ExtendableMessage
        .ExtensionWriter extensionWriter = newExtensionWriter();
      if (hasMessageSetWireFormat()) {
        output.writeBool(1, getMessageSetWireFormat());
      }
      if (hasNoStandardDescriptorAccessor()) {
        output.writeBool(2, getNoStandardDescriptorAccessor());
      }
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        output.writeMessage(999, element);
      }
      extensionWriter.writeUntil(536870912, output);
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasMessageSetWireFormat()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, getMessageSetWireFormat());
      }
      if (hasNoStandardDescriptorAccessor()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, getNoStandardDescriptorAccessor());
      }
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(999, element);
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.MessageOptions prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
          com.google.protobuf.DescriptorProtos.MessageOptions, Builder> {
      private com.google.protobuf.DescriptorProtos.MessageOptions result;
      
      // Construct using com.google.protobuf.DescriptorProtos.MessageOptions.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.MessageOptions();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.MessageOptions internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.MessageOptions();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.MessageOptions.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.MessageOptions getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.MessageOptions build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.MessageOptions buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.MessageOptions buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.uninterpretedOption_ != java.util.Collections.EMPTY_LIST) {
          result.uninterpretedOption_ =
            java.util.Collections.unmodifiableList(result.uninterpretedOption_);
        }
        com.google.protobuf.DescriptorProtos.MessageOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      @Override
	public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.MessageOptions) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.MessageOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.MessageOptions other) {
        if (other == com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance()) return this;
        if (other.hasMessageSetWireFormat()) {
          setMessageSetWireFormat(other.getMessageSetWireFormat());
        }
        if (other.hasNoStandardDescriptorAccessor()) {
          setNoStandardDescriptorAccessor(other.getNoStandardDescriptorAccessor());
        }
        if (!other.uninterpretedOption_.isEmpty()) {
          if (result.uninterpretedOption_.isEmpty()) {
            result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
          }
          result.uninterpretedOption_.addAll(other.uninterpretedOption_);
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 8: {
              setMessageSetWireFormat(input.readBool());
              break;
            }
            case 16: {
              setNoStandardDescriptorAccessor(input.readBool());
              break;
            }
            case 7994: {
              com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addUninterpretedOption(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // optional bool message_set_wire_format = 1 [default = false];
      public boolean hasMessageSetWireFormat() {
        return result.hasMessageSetWireFormat();
      }
      public boolean getMessageSetWireFormat() {
        return result.getMessageSetWireFormat();
      }
      public Builder setMessageSetWireFormat(boolean value) {
        result.hasMessageSetWireFormat = true;
        result.messageSetWireFormat_ = value;
        return this;
      }
      public Builder clearMessageSetWireFormat() {
        result.hasMessageSetWireFormat = false;
        result.messageSetWireFormat_ = false;
        return this;
      }
      
      // optional bool no_standard_descriptor_accessor = 2 [default = false];
      public boolean hasNoStandardDescriptorAccessor() {
        return result.hasNoStandardDescriptorAccessor();
      }
      public boolean getNoStandardDescriptorAccessor() {
        return result.getNoStandardDescriptorAccessor();
      }
      public Builder setNoStandardDescriptorAccessor(boolean value) {
        result.hasNoStandardDescriptorAccessor = true;
        result.noStandardDescriptorAccessor_ = value;
        return this;
      }
      public Builder clearNoStandardDescriptorAccessor() {
        result.hasNoStandardDescriptorAccessor = false;
        result.noStandardDescriptorAccessor_ = false;
        return this;
      }
      
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
        return java.util.Collections.unmodifiableList(result.uninterpretedOption_);
      }
      public int getUninterpretedOptionCount() {
        return result.getUninterpretedOptionCount();
      }
      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
        return result.getUninterpretedOption(index);
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.uninterpretedOption_.set(index, value);
        return this;
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        result.uninterpretedOption_.set(index, builderForValue.build());
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(value);
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(builderForValue.build());
        return this;
      }
      public Builder addAllUninterpretedOption(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        super.addAll(values, result.uninterpretedOption_);
        return this;
      }
      public Builder clearUninterpretedOption() {
        result.uninterpretedOption_ = java.util.Collections.emptyList();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.MessageOptions)
    }
    
    static {
      defaultInstance = new MessageOptions(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.MessageOptions)
  }
  
  public static final class FieldOptions extends
      com.google.protobuf.GeneratedMessage.ExtendableMessage<
        FieldOptions> {
    // Use FieldOptions.newBuilder() to construct.
    private FieldOptions() {
      initFields();
    }
    private FieldOptions(boolean noInit) {}
    
    private static final FieldOptions defaultInstance;
    public static FieldOptions getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public FieldOptions getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldOptions_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldOptions_fieldAccessorTable;
    }
    
    public enum CType
        implements com.google.protobuf.ProtocolMessageEnum {
      STRING(0, 0),
      CORD(1, 1),
      STRING_PIECE(2, 2),
      ;
      
      
      @Override
	public final int getNumber() { return value; }
      
      public static CType valueOf(int value) {
        switch (value) {
          case 0: return STRING;
          case 1: return CORD;
          case 2: return STRING_PIECE;
          default: return null;
        }
      }
      
      public static com.google.protobuf.Internal.EnumLiteMap<CType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap<CType>
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<CType>() {
              @Override
			public CType findValueByNumber(int number) {
                return CType.valueOf(number)
      ;        }
            };
      
      @Override
	public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(index);
      }
      @Override
	public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.FieldOptions.getDescriptor().getEnumTypes().get(0);
      }
      
      private static final CType[] VALUES = {
        STRING, CORD, STRING_PIECE, 
      };
      public static CType 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 index;
      private final int value;
      private CType(int index, int value) {
        this.index = index;
        this.value = value;
      }
      
      static {
        com.google.protobuf.DescriptorProtos.getDescriptor();
      }
      
      // @@protoc_insertion_point(enum_scope:google.protobuf.FieldOptions.CType)
    }
    
    // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
    public static final int CTYPE_FIELD_NUMBER = 1;
    private boolean hasCtype;
    private com.google.protobuf.DescriptorProtos.FieldOptions.CType ctype_;
    public boolean hasCtype() { return hasCtype; }
    public com.google.protobuf.DescriptorProtos.FieldOptions.CType getCtype() { return ctype_; }
    
    // optional bool packed = 2;
    public static final int PACKED_FIELD_NUMBER = 2;
    private boolean hasPacked;
    private boolean packed_ = false;
    public boolean hasPacked() { return hasPacked; }
    public boolean getPacked() { return packed_; }
    
    // optional bool deprecated = 3 [default = false];
    public static final int DEPRECATED_FIELD_NUMBER = 3;
    private boolean hasDeprecated;
    private boolean deprecated_ = false;
    public boolean hasDeprecated() { return hasDeprecated; }
    public boolean getDeprecated() { return deprecated_; }
    
    // optional string experimental_map_key = 9;
    public static final int EXPERIMENTAL_MAP_KEY_FIELD_NUMBER = 9;
    private boolean hasExperimentalMapKey;
    private java.lang.String experimentalMapKey_ = "";
    public boolean hasExperimentalMapKey() { return hasExperimentalMapKey; }
    public java.lang.String getExperimentalMapKey() { return experimentalMapKey_; }
    
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
    private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
      return uninterpretedOption_;
    }
    public int getUninterpretedOptionCount() { return uninterpretedOption_.size(); }
    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
      return uninterpretedOption_.get(index);
    }
    
    private void initFields() {
      ctype_ = com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING;
    }
    @Override
	public final boolean isInitialized() {
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        if (!element.isInitialized()) return false;
      }
      if (!extensionsAreInitialized()) return false;
      return true;
    }
    
    @Override
	@SuppressWarnings("unchecked")
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      com.google.protobuf.GeneratedMessage.ExtendableMessage
        .ExtensionWriter extensionWriter = newExtensionWriter();
      if (hasCtype()) {
        output.writeEnum(1, getCtype().getNumber());
      }
      if (hasPacked()) {
        output.writeBool(2, getPacked());
      }
      if (hasDeprecated()) {
        output.writeBool(3, getDeprecated());
      }
      if (hasExperimentalMapKey()) {
        output.writeString(9, getExperimentalMapKey());
      }
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        output.writeMessage(999, element);
      }
      extensionWriter.writeUntil(536870912, output);
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasCtype()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, getCtype().getNumber());
      }
      if (hasPacked()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, getPacked());
      }
      if (hasDeprecated()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, getDeprecated());
      }
      if (hasExperimentalMapKey()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(9, getExperimentalMapKey());
      }
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(999, element);
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.FieldOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FieldOptions prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
          com.google.protobuf.DescriptorProtos.FieldOptions, Builder> {
      private com.google.protobuf.DescriptorProtos.FieldOptions result;
      
      // Construct using com.google.protobuf.DescriptorProtos.FieldOptions.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.FieldOptions();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.FieldOptions internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.FieldOptions();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.FieldOptions.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.FieldOptions getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.FieldOptions build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.FieldOptions buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.FieldOptions buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.uninterpretedOption_ != java.util.Collections.EMPTY_LIST) {
          result.uninterpretedOption_ =
            java.util.Collections.unmodifiableList(result.uninterpretedOption_);
        }
        com.google.protobuf.DescriptorProtos.FieldOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      @Override
	public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.FieldOptions) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.FieldOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.FieldOptions other) {
        if (other == com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance()) return this;
        if (other.hasCtype()) {
          setCtype(other.getCtype());
        }
        if (other.hasPacked()) {
          setPacked(other.getPacked());
        }
        if (other.hasDeprecated()) {
          setDeprecated(other.getDeprecated());
        }
        if (other.hasExperimentalMapKey()) {
          setExperimentalMapKey(other.getExperimentalMapKey());
        }
        if (!other.uninterpretedOption_.isEmpty()) {
          if (result.uninterpretedOption_.isEmpty()) {
            result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
          }
          result.uninterpretedOption_.addAll(other.uninterpretedOption_);
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              com.google.protobuf.DescriptorProtos.FieldOptions.CType value = com.google.protobuf.DescriptorProtos.FieldOptions.CType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                setCtype(value);
              }
              break;
            }
            case 16: {
              setPacked(input.readBool());
              break;
            }
            case 24: {
              setDeprecated(input.readBool());
              break;
            }
            case 74: {
              setExperimentalMapKey(input.readString());
              break;
            }
            case 7994: {
              com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addUninterpretedOption(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
      public boolean hasCtype() {
        return result.hasCtype();
      }
      public com.google.protobuf.DescriptorProtos.FieldOptions.CType getCtype() {
        return result.getCtype();
      }
      public Builder setCtype(com.google.protobuf.DescriptorProtos.FieldOptions.CType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.hasCtype = true;
        result.ctype_ = value;
        return this;
      }
      public Builder clearCtype() {
        result.hasCtype = false;
        result.ctype_ = com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING;
        return this;
      }
      
      // optional bool packed = 2;
      public boolean hasPacked() {
        return result.hasPacked();
      }
      public boolean getPacked() {
        return result.getPacked();
      }
      public Builder setPacked(boolean value) {
        result.hasPacked = true;
        result.packed_ = value;
        return this;
      }
      public Builder clearPacked() {
        result.hasPacked = false;
        result.packed_ = false;
        return this;
      }
      
      // optional bool deprecated = 3 [default = false];
      public boolean hasDeprecated() {
        return result.hasDeprecated();
      }
      public boolean getDeprecated() {
        return result.getDeprecated();
      }
      public Builder setDeprecated(boolean value) {
        result.hasDeprecated = true;
        result.deprecated_ = value;
        return this;
      }
      public Builder clearDeprecated() {
        result.hasDeprecated = false;
        result.deprecated_ = false;
        return this;
      }
      
      // optional string experimental_map_key = 9;
      public boolean hasExperimentalMapKey() {
        return result.hasExperimentalMapKey();
      }
      public java.lang.String getExperimentalMapKey() {
        return result.getExperimentalMapKey();
      }
      public Builder setExperimentalMapKey(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasExperimentalMapKey = true;
        result.experimentalMapKey_ = value;
        return this;
      }
      public Builder clearExperimentalMapKey() {
        result.hasExperimentalMapKey = false;
        result.experimentalMapKey_ = getDefaultInstance().getExperimentalMapKey();
        return this;
      }
      
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
        return java.util.Collections.unmodifiableList(result.uninterpretedOption_);
      }
      public int getUninterpretedOptionCount() {
        return result.getUninterpretedOptionCount();
      }
      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
        return result.getUninterpretedOption(index);
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.uninterpretedOption_.set(index, value);
        return this;
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        result.uninterpretedOption_.set(index, builderForValue.build());
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(value);
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(builderForValue.build());
        return this;
      }
      public Builder addAllUninterpretedOption(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        super.addAll(values, result.uninterpretedOption_);
        return this;
      }
      public Builder clearUninterpretedOption() {
        result.uninterpretedOption_ = java.util.Collections.emptyList();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.FieldOptions)
    }
    
    static {
      defaultInstance = new FieldOptions(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.FieldOptions)
  }
  
  public static final class EnumOptions extends
      com.google.protobuf.GeneratedMessage.ExtendableMessage<
        EnumOptions> {
    // Use EnumOptions.newBuilder() to construct.
    private EnumOptions() {
      initFields();
    }
    private EnumOptions(boolean noInit) {}
    
    private static final EnumOptions defaultInstance;
    public static EnumOptions getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public EnumOptions getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumOptions_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumOptions_fieldAccessorTable;
    }
    
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
    private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
      return uninterpretedOption_;
    }
    public int getUninterpretedOptionCount() { return uninterpretedOption_.size(); }
    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
      return uninterpretedOption_.get(index);
    }
    
    private void initFields() {
    }
    @Override
	public final boolean isInitialized() {
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        if (!element.isInitialized()) return false;
      }
      if (!extensionsAreInitialized()) return false;
      return true;
    }
    
    @Override
	@SuppressWarnings("unchecked")
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      com.google.protobuf.GeneratedMessage.ExtendableMessage
        .ExtensionWriter extensionWriter = newExtensionWriter();
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        output.writeMessage(999, element);
      }
      extensionWriter.writeUntil(536870912, output);
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(999, element);
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.EnumOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumOptions prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
          com.google.protobuf.DescriptorProtos.EnumOptions, Builder> {
      private com.google.protobuf.DescriptorProtos.EnumOptions result;
      
      // Construct using com.google.protobuf.DescriptorProtos.EnumOptions.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.EnumOptions();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.EnumOptions internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.EnumOptions();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.EnumOptions.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.EnumOptions getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.EnumOptions build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.EnumOptions buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.EnumOptions buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.uninterpretedOption_ != java.util.Collections.EMPTY_LIST) {
          result.uninterpretedOption_ =
            java.util.Collections.unmodifiableList(result.uninterpretedOption_);
        }
        com.google.protobuf.DescriptorProtos.EnumOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      @Override
	public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.EnumOptions) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.EnumOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumOptions other) {
        if (other == com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance()) return this;
        if (!other.uninterpretedOption_.isEmpty()) {
          if (result.uninterpretedOption_.isEmpty()) {
            result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
          }
          result.uninterpretedOption_.addAll(other.uninterpretedOption_);
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 7994: {
              com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addUninterpretedOption(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
        return java.util.Collections.unmodifiableList(result.uninterpretedOption_);
      }
      public int getUninterpretedOptionCount() {
        return result.getUninterpretedOptionCount();
      }
      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
        return result.getUninterpretedOption(index);
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.uninterpretedOption_.set(index, value);
        return this;
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        result.uninterpretedOption_.set(index, builderForValue.build());
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(value);
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(builderForValue.build());
        return this;
      }
      public Builder addAllUninterpretedOption(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        super.addAll(values, result.uninterpretedOption_);
        return this;
      }
      public Builder clearUninterpretedOption() {
        result.uninterpretedOption_ = java.util.Collections.emptyList();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.EnumOptions)
    }
    
    static {
      defaultInstance = new EnumOptions(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.EnumOptions)
  }
  
  public static final class EnumValueOptions extends
      com.google.protobuf.GeneratedMessage.ExtendableMessage<
        EnumValueOptions> {
    // Use EnumValueOptions.newBuilder() to construct.
    private EnumValueOptions() {
      initFields();
    }
    private EnumValueOptions(boolean noInit) {}
    
    private static final EnumValueOptions defaultInstance;
    public static EnumValueOptions getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public EnumValueOptions getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable;
    }
    
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
    private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
      return uninterpretedOption_;
    }
    public int getUninterpretedOptionCount() { return uninterpretedOption_.size(); }
    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
      return uninterpretedOption_.get(index);
    }
    
    private void initFields() {
    }
    @Override
	public final boolean isInitialized() {
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        if (!element.isInitialized()) return false;
      }
      if (!extensionsAreInitialized()) return false;
      return true;
    }
    
    @Override
	@SuppressWarnings("unchecked")
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      com.google.protobuf.GeneratedMessage.ExtendableMessage
        .ExtensionWriter extensionWriter = newExtensionWriter();
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        output.writeMessage(999, element);
      }
      extensionWriter.writeUntil(536870912, output);
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(999, element);
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumValueOptions prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
          com.google.protobuf.DescriptorProtos.EnumValueOptions, Builder> {
      private com.google.protobuf.DescriptorProtos.EnumValueOptions result;
      
      // Construct using com.google.protobuf.DescriptorProtos.EnumValueOptions.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.EnumValueOptions();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.EnumValueOptions internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.EnumValueOptions();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.EnumValueOptions.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.EnumValueOptions getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.EnumValueOptions build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.EnumValueOptions buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.EnumValueOptions buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.uninterpretedOption_ != java.util.Collections.EMPTY_LIST) {
          result.uninterpretedOption_ =
            java.util.Collections.unmodifiableList(result.uninterpretedOption_);
        }
        com.google.protobuf.DescriptorProtos.EnumValueOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      @Override
	public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.EnumValueOptions) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.EnumValueOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumValueOptions other) {
        if (other == com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance()) return this;
        if (!other.uninterpretedOption_.isEmpty()) {
          if (result.uninterpretedOption_.isEmpty()) {
            result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
          }
          result.uninterpretedOption_.addAll(other.uninterpretedOption_);
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 7994: {
              com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addUninterpretedOption(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
        return java.util.Collections.unmodifiableList(result.uninterpretedOption_);
      }
      public int getUninterpretedOptionCount() {
        return result.getUninterpretedOptionCount();
      }
      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
        return result.getUninterpretedOption(index);
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.uninterpretedOption_.set(index, value);
        return this;
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        result.uninterpretedOption_.set(index, builderForValue.build());
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(value);
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(builderForValue.build());
        return this;
      }
      public Builder addAllUninterpretedOption(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        super.addAll(values, result.uninterpretedOption_);
        return this;
      }
      public Builder clearUninterpretedOption() {
        result.uninterpretedOption_ = java.util.Collections.emptyList();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.EnumValueOptions)
    }
    
    static {
      defaultInstance = new EnumValueOptions(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.EnumValueOptions)
  }
  
  public static final class ServiceOptions extends
      com.google.protobuf.GeneratedMessage.ExtendableMessage<
        ServiceOptions> {
    // Use ServiceOptions.newBuilder() to construct.
    private ServiceOptions() {
      initFields();
    }
    private ServiceOptions(boolean noInit) {}
    
    private static final ServiceOptions defaultInstance;
    public static ServiceOptions getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public ServiceOptions getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_fieldAccessorTable;
    }
    
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
    private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
      return uninterpretedOption_;
    }
    public int getUninterpretedOptionCount() { return uninterpretedOption_.size(); }
    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
      return uninterpretedOption_.get(index);
    }
    
    private void initFields() {
    }
    @Override
	public final boolean isInitialized() {
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        if (!element.isInitialized()) return false;
      }
      if (!extensionsAreInitialized()) return false;
      return true;
    }
    
    @Override
	@SuppressWarnings("unchecked")
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      com.google.protobuf.GeneratedMessage.ExtendableMessage
        .ExtensionWriter extensionWriter = newExtensionWriter();
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        output.writeMessage(999, element);
      }
      extensionWriter.writeUntil(536870912, output);
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(999, element);
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.ServiceOptions prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
          com.google.protobuf.DescriptorProtos.ServiceOptions, Builder> {
      private com.google.protobuf.DescriptorProtos.ServiceOptions result;
      
      // Construct using com.google.protobuf.DescriptorProtos.ServiceOptions.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.ServiceOptions();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.ServiceOptions internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.ServiceOptions();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.ServiceOptions.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.ServiceOptions getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.ServiceOptions build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.ServiceOptions buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.ServiceOptions buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.uninterpretedOption_ != java.util.Collections.EMPTY_LIST) {
          result.uninterpretedOption_ =
            java.util.Collections.unmodifiableList(result.uninterpretedOption_);
        }
        com.google.protobuf.DescriptorProtos.ServiceOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      @Override
	public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.ServiceOptions) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.ServiceOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.ServiceOptions other) {
        if (other == com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance()) return this;
        if (!other.uninterpretedOption_.isEmpty()) {
          if (result.uninterpretedOption_.isEmpty()) {
            result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
          }
          result.uninterpretedOption_.addAll(other.uninterpretedOption_);
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 7994: {
              com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addUninterpretedOption(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
        return java.util.Collections.unmodifiableList(result.uninterpretedOption_);
      }
      public int getUninterpretedOptionCount() {
        return result.getUninterpretedOptionCount();
      }
      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
        return result.getUninterpretedOption(index);
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.uninterpretedOption_.set(index, value);
        return this;
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        result.uninterpretedOption_.set(index, builderForValue.build());
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(value);
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(builderForValue.build());
        return this;
      }
      public Builder addAllUninterpretedOption(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        super.addAll(values, result.uninterpretedOption_);
        return this;
      }
      public Builder clearUninterpretedOption() {
        result.uninterpretedOption_ = java.util.Collections.emptyList();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.ServiceOptions)
    }
    
    static {
      defaultInstance = new ServiceOptions(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.ServiceOptions)
  }
  
  public static final class MethodOptions extends
      com.google.protobuf.GeneratedMessage.ExtendableMessage<
        MethodOptions> {
    // Use MethodOptions.newBuilder() to construct.
    private MethodOptions() {
      initFields();
    }
    private MethodOptions(boolean noInit) {}
    
    private static final MethodOptions defaultInstance;
    public static MethodOptions getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public MethodOptions getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodOptions_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodOptions_fieldAccessorTable;
    }
    
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999;
    private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
      return uninterpretedOption_;
    }
    public int getUninterpretedOptionCount() { return uninterpretedOption_.size(); }
    public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
      return uninterpretedOption_.get(index);
    }
    
    private void initFields() {
    }
    @Override
	public final boolean isInitialized() {
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        if (!element.isInitialized()) return false;
      }
      if (!extensionsAreInitialized()) return false;
      return true;
    }
    
    @Override
	@SuppressWarnings("unchecked")
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      com.google.protobuf.GeneratedMessage.ExtendableMessage
        .ExtensionWriter extensionWriter = newExtensionWriter();
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        output.writeMessage(999, element);
      }
      extensionWriter.writeUntil(536870912, output);
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption element : getUninterpretedOptionList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(999, element);
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.MethodOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.MethodOptions prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.ExtendableBuilder<
          com.google.protobuf.DescriptorProtos.MethodOptions, Builder> {
      private com.google.protobuf.DescriptorProtos.MethodOptions result;
      
      // Construct using com.google.protobuf.DescriptorProtos.MethodOptions.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.MethodOptions();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.MethodOptions internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.MethodOptions();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.MethodOptions.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.MethodOptions getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.MethodOptions build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.MethodOptions buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.MethodOptions buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.uninterpretedOption_ != java.util.Collections.EMPTY_LIST) {
          result.uninterpretedOption_ =
            java.util.Collections.unmodifiableList(result.uninterpretedOption_);
        }
        com.google.protobuf.DescriptorProtos.MethodOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      @Override
	public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.MethodOptions) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.MethodOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.MethodOptions other) {
        if (other == com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance()) return this;
        if (!other.uninterpretedOption_.isEmpty()) {
          if (result.uninterpretedOption_.isEmpty()) {
            result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
          }
          result.uninterpretedOption_.addAll(other.uninterpretedOption_);
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 7994: {
              com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addUninterpretedOption(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() {
        return java.util.Collections.unmodifiableList(result.uninterpretedOption_);
      }
      public int getUninterpretedOptionCount() {
        return result.getUninterpretedOptionCount();
      }
      public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) {
        return result.getUninterpretedOption(index);
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.uninterpretedOption_.set(index, value);
        return this;
      }
      public Builder setUninterpretedOption(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        result.uninterpretedOption_.set(index, builderForValue.build());
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(value);
        return this;
      }
      public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        result.uninterpretedOption_.add(builderForValue.build());
        return this;
      }
      public Builder addAllUninterpretedOption(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) {
        if (result.uninterpretedOption_.isEmpty()) {
          result.uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>();
        }
        super.addAll(values, result.uninterpretedOption_);
        return this;
      }
      public Builder clearUninterpretedOption() {
        result.uninterpretedOption_ = java.util.Collections.emptyList();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.MethodOptions)
    }
    
    static {
      defaultInstance = new MethodOptions(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.MethodOptions)
  }
  
  public static final class UninterpretedOption extends
      com.google.protobuf.GeneratedMessage {
    // Use UninterpretedOption.newBuilder() to construct.
    private UninterpretedOption() {
      initFields();
    }
    private UninterpretedOption(boolean noInit) {}
    
    private static final UninterpretedOption defaultInstance;
    public static UninterpretedOption getDefaultInstance() {
      return defaultInstance;
    }
    
    @Override
	public UninterpretedOption getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_descriptor;
    }
    
    @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable;
    }
    
    public static final class NamePart extends
        com.google.protobuf.GeneratedMessage {
      // Use NamePart.newBuilder() to construct.
      private NamePart() {
        initFields();
      }
      private NamePart(boolean noInit) {}
      
      private static final NamePart defaultInstance;
      public static NamePart getDefaultInstance() {
        return defaultInstance;
      }
      
      @Override
	public NamePart getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor;
      }
      
      @Override
	protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable;
      }
      
      // required string name_part = 1;
      public static final int NAME_PART_FIELD_NUMBER = 1;
      private boolean hasNamePart;
      private java.lang.String namePart_ = "";
      public boolean hasNamePart() { return hasNamePart; }
      public java.lang.String getNamePart() { return namePart_; }
      
      // required bool is_extension = 2;
      public static final int IS_EXTENSION_FIELD_NUMBER = 2;
      private boolean hasIsExtension;
      private boolean isExtension_ = false;
      public boolean hasIsExtension() { return hasIsExtension; }
      public boolean getIsExtension() { return isExtension_; }
      
      private void initFields() {
      }
      @Override
	public final boolean isInitialized() {
        if (!hasNamePart) return false;
        if (!hasIsExtension) return false;
        return true;
      }
      
      @Override
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (hasNamePart()) {
          output.writeString(1, getNamePart());
        }
        if (hasIsExtension()) {
          output.writeBool(2, getIsExtension());
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      @Override
	public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (hasNamePart()) {
          size += com.google.protobuf.CodedOutputStream
            .computeStringSize(1, getNamePart());
        }
        if (hasIsExtension()) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(2, getIsExtension());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      @Override
	public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      @Override
	public Builder toBuilder() { return newBuilder(this); }
      
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder> {
        private com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart result;
        
        // Construct using com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.newBuilder()
        private Builder() {}
        
        private static Builder create() {
          Builder builder = new Builder();
          builder.result = new com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart();
          return builder;
        }
        
        @Override
		protected com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart internalGetResult() {
          return result;
        }
        
        @Override
		public Builder clear() {
          if (result == null) {
            throw new IllegalStateException(
              "Cannot call clear() after build().");
          }
          result = new com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart();
          return this;
        }
        
        @Override
		public Builder clone() {
          return create().mergeFrom(result);
        }
        
        @Override
		public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.getDescriptor();
        }
        
        @Override
		public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getDefaultInstanceForType() {
          return com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.getDefaultInstance();
        }
        
        @Override
		public boolean isInitialized() {
          return result.isInitialized();
        }
        @Override
		public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart build() {
          if (result != null && !isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return buildPartial();
        }
        
        private com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          if (!isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return buildPartial();
        }
        
        @Override
		public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart buildPartial() {
          if (result == null) {
            throw new IllegalStateException(
              "build() has already been called on this Builder.");
          }
          com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart returnMe = result;
          result = null;
          return returnMe;
        }
        
        @Override
		public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart) {
            return mergeFrom((com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart other) {
          if (other == com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.getDefaultInstance()) return this;
          if (other.hasNamePart()) {
            setNamePart(other.getNamePart());
          }
          if (other.hasIsExtension()) {
            setIsExtension(other.getIsExtension());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        @Override
		public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  return this;
                }
                break;
              }
              case 10: {
                setNamePart(input.readString());
                break;
              }
              case 16: {
                setIsExtension(input.readBool());
                break;
              }
            }
          }
        }
        
        
        // required string name_part = 1;
        public boolean hasNamePart() {
          return result.hasNamePart();
        }
        public java.lang.String getNamePart() {
          return result.getNamePart();
        }
        public Builder setNamePart(java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  result.hasNamePart = true;
          result.namePart_ = value;
          return this;
        }
        public Builder clearNamePart() {
          result.hasNamePart = false;
          result.namePart_ = getDefaultInstance().getNamePart();
          return this;
        }
        
        // required bool is_extension = 2;
        public boolean hasIsExtension() {
          return result.hasIsExtension();
        }
        public boolean getIsExtension() {
          return result.getIsExtension();
        }
        public Builder setIsExtension(boolean value) {
          result.hasIsExtension = true;
          result.isExtension_ = value;
          return this;
        }
        public Builder clearIsExtension() {
          result.hasIsExtension = false;
          result.isExtension_ = false;
          return this;
        }
        
        // @@protoc_insertion_point(builder_scope:google.protobuf.UninterpretedOption.NamePart)
      }
      
      static {
        defaultInstance = new NamePart(true);
        com.google.protobuf.DescriptorProtos.internalForceInit();
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption.NamePart)
    }
    
    // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
    public static final int NAME_FIELD_NUMBER = 2;
    private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> name_ =
      java.util.Collections.emptyList();
    public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> getNameList() {
      return name_;
    }
    public int getNameCount() { return name_.size(); }
    public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getName(int index) {
      return name_.get(index);
    }
    
    // optional string identifier_value = 3;
    public static final int IDENTIFIER_VALUE_FIELD_NUMBER = 3;
    private boolean hasIdentifierValue;
    private java.lang.String identifierValue_ = "";
    public boolean hasIdentifierValue() { return hasIdentifierValue; }
    public java.lang.String getIdentifierValue() { return identifierValue_; }
    
    // optional uint64 positive_int_value = 4;
    public static final int POSITIVE_INT_VALUE_FIELD_NUMBER = 4;
    private boolean hasPositiveIntValue;
    private long positiveIntValue_ = 0L;
    public boolean hasPositiveIntValue() { return hasPositiveIntValue; }
    public long getPositiveIntValue() { return positiveIntValue_; }
    
    // optional int64 negative_int_value = 5;
    public static final int NEGATIVE_INT_VALUE_FIELD_NUMBER = 5;
    private boolean hasNegativeIntValue;
    private long negativeIntValue_ = 0L;
    public boolean hasNegativeIntValue() { return hasNegativeIntValue; }
    public long getNegativeIntValue() { return negativeIntValue_; }
    
    // optional double double_value = 6;
    public static final int DOUBLE_VALUE_FIELD_NUMBER = 6;
    private boolean hasDoubleValue;
    private double doubleValue_ = 0D;
    public boolean hasDoubleValue() { return hasDoubleValue; }
    public double getDoubleValue() { return doubleValue_; }
    
    // optional bytes string_value = 7;
    public static final int STRING_VALUE_FIELD_NUMBER = 7;
    private boolean hasStringValue;
    private com.google.protobuf.ByteString stringValue_ = com.google.protobuf.ByteString.EMPTY;
    public boolean hasStringValue() { return hasStringValue; }
    public com.google.protobuf.ByteString getStringValue() { return stringValue_; }
    
    private void initFields() {
    }
    @Override
	public final boolean isInitialized() {
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart element : getNameList()) {
        if (!element.isInitialized()) return false;
      }
      return true;
    }
    
    @Override
	public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart element : getNameList()) {
        output.writeMessage(2, element);
      }
      if (hasIdentifierValue()) {
        output.writeString(3, getIdentifierValue());
      }
      if (hasPositiveIntValue()) {
        output.writeUInt64(4, getPositiveIntValue());
      }
      if (hasNegativeIntValue()) {
        output.writeInt64(5, getNegativeIntValue());
      }
      if (hasDoubleValue()) {
        output.writeDouble(6, getDoubleValue());
      }
      if (hasStringValue()) {
        output.writeBytes(7, getStringValue());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    @Override
	public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      for (com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart element : getNameList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, element);
      }
      if (hasIdentifierValue()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(3, getIdentifierValue());
      }
      if (hasPositiveIntValue()) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(4, getPositiveIntValue());
      }
      if (hasNegativeIntValue()) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, getNegativeIntValue());
      }
      if (hasDoubleValue()) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(6, getDoubleValue());
      }
      if (hasStringValue()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, getStringValue());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    @Override
	public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.google.protobuf.DescriptorProtos.UninterpretedOption prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    @Override
	public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.google.protobuf.DescriptorProtos.UninterpretedOption result;
      
      // Construct using com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.google.protobuf.DescriptorProtos.UninterpretedOption();
        return builder;
      }
      
      @Override
	protected com.google.protobuf.DescriptorProtos.UninterpretedOption internalGetResult() {
        return result;
      }
      
      @Override
	public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.google.protobuf.DescriptorProtos.UninterpretedOption();
        return this;
      }
      
      @Override
	public Builder clone() {
        return create().mergeFrom(result);
      }
      
      @Override
	public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.protobuf.DescriptorProtos.UninterpretedOption.getDescriptor();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.UninterpretedOption getDefaultInstanceForType() {
        return com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance();
      }
      
      @Override
	public boolean isInitialized() {
        return result.isInitialized();
      }
      @Override
	public com.google.protobuf.DescriptorProtos.UninterpretedOption build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.google.protobuf.DescriptorProtos.UninterpretedOption buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      @Override
	public com.google.protobuf.DescriptorProtos.UninterpretedOption buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.name_ != java.util.Collections.EMPTY_LIST) {
          result.name_ =
            java.util.Collections.unmodifiableList(result.name_);
        }
        com.google.protobuf.DescriptorProtos.UninterpretedOption returnMe = result;
        result = null;
        return returnMe;
      }
      
      @Override
	public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.protobuf.DescriptorProtos.UninterpretedOption) {
          return mergeFrom((com.google.protobuf.DescriptorProtos.UninterpretedOption)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.google.protobuf.DescriptorProtos.UninterpretedOption other) {
        if (other == com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()) return this;
        if (!other.name_.isEmpty()) {
          if (result.name_.isEmpty()) {
            result.name_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart>();
          }
          result.name_.addAll(other.name_);
        }
        if (other.hasIdentifierValue()) {
          setIdentifierValue(other.getIdentifierValue());
        }
        if (other.hasPositiveIntValue()) {
          setPositiveIntValue(other.getPositiveIntValue());
        }
        if (other.hasNegativeIntValue()) {
          setNegativeIntValue(other.getNegativeIntValue());
        }
        if (other.hasDoubleValue()) {
          setDoubleValue(other.getDoubleValue());
        }
        if (other.hasStringValue()) {
          setStringValue(other.getStringValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      @Override
	public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 18: {
              com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addName(subBuilder.buildPartial());
              break;
            }
            case 26: {
              setIdentifierValue(input.readString());
              break;
            }
            case 32: {
              setPositiveIntValue(input.readUInt64());
              break;
            }
            case 40: {
              setNegativeIntValue(input.readInt64());
              break;
            }
            case 49: {
              setDoubleValue(input.readDouble());
              break;
            }
            case 58: {
              setStringValue(input.readBytes());
              break;
            }
          }
        }
      }
      
      
      // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
      public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> getNameList() {
        return java.util.Collections.unmodifiableList(result.name_);
      }
      public int getNameCount() {
        return result.getNameCount();
      }
      public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getName(int index) {
        return result.getName(index);
      }
      public Builder setName(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.name_.set(index, value);
        return this;
      }
      public Builder setName(int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder builderForValue) {
        result.name_.set(index, builderForValue.build());
        return this;
      }
      public Builder addName(com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.name_.isEmpty()) {
          result.name_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart>();
        }
        result.name_.add(value);
        return this;
      }
      public Builder addName(com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder builderForValue) {
        if (result.name_.isEmpty()) {
          result.name_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart>();
        }
        result.name_.add(builderForValue.build());
        return this;
      }
      public Builder addAllName(
          java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> values) {
        if (result.name_.isEmpty()) {
          result.name_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart>();
        }
        super.addAll(values, result.name_);
        return this;
      }
      public Builder clearName() {
        result.name_ = java.util.Collections.emptyList();
        return this;
      }
      
      // optional string identifier_value = 3;
      public boolean hasIdentifierValue() {
        return result.hasIdentifierValue();
      }
      public java.lang.String getIdentifierValue() {
        return result.getIdentifierValue();
      }
      public Builder setIdentifierValue(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasIdentifierValue = true;
        result.identifierValue_ = value;
        return this;
      }
      public Builder clearIdentifierValue() {
        result.hasIdentifierValue = false;
        result.identifierValue_ = getDefaultInstance().getIdentifierValue();
        return this;
      }
      
      // optional uint64 positive_int_value = 4;
      public boolean hasPositiveIntValue() {
        return result.hasPositiveIntValue();
      }
      public long getPositiveIntValue() {
        return result.getPositiveIntValue();
      }
      public Builder setPositiveIntValue(long value) {
        result.hasPositiveIntValue = true;
        result.positiveIntValue_ = value;
        return this;
      }
      public Builder clearPositiveIntValue() {
        result.hasPositiveIntValue = false;
        result.positiveIntValue_ = 0L;
        return this;
      }
      
      // optional int64 negative_int_value = 5;
      public boolean hasNegativeIntValue() {
        return result.hasNegativeIntValue();
      }
      public long getNegativeIntValue() {
        return result.getNegativeIntValue();
      }
      public Builder setNegativeIntValue(long value) {
        result.hasNegativeIntValue = true;
        result.negativeIntValue_ = value;
        return this;
      }
      public Builder clearNegativeIntValue() {
        result.hasNegativeIntValue = false;
        result.negativeIntValue_ = 0L;
        return this;
      }
      
      // optional double double_value = 6;
      public boolean hasDoubleValue() {
        return result.hasDoubleValue();
      }
      public double getDoubleValue() {
        return result.getDoubleValue();
      }
      public Builder setDoubleValue(double value) {
        result.hasDoubleValue = true;
        result.doubleValue_ = value;
        return this;
      }
      public Builder clearDoubleValue() {
        result.hasDoubleValue = false;
        result.doubleValue_ = 0D;
        return this;
      }
      
      // optional bytes string_value = 7;
      public boolean hasStringValue() {
        return result.hasStringValue();
      }
      public com.google.protobuf.ByteString getStringValue() {
        return result.getStringValue();
      }
      public Builder setStringValue(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasStringValue = true;
        result.stringValue_ = value;
        return this;
      }
      public Builder clearStringValue() {
        result.hasStringValue = false;
        result.stringValue_ = getDefaultInstance().getStringValue();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:google.protobuf.UninterpretedOption)
    }
    
    static {
      defaultInstance = new UninterpretedOption(true);
      com.google.protobuf.DescriptorProtos.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption)
  }
  
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_FileDescriptorSet_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_FileDescriptorProto_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_DescriptorProto_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_DescriptorProto_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_FieldDescriptorProto_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_EnumDescriptorProto_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_EnumValueDescriptorProto_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_ServiceDescriptorProto_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_MethodDescriptorProto_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_FileOptions_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_FileOptions_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_MessageOptions_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_MessageOptions_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_FieldOptions_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_FieldOptions_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_EnumOptions_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_EnumOptions_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_EnumValueOptions_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_ServiceOptions_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_ServiceOptions_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_MethodOptions_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_MethodOptions_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_UninterpretedOption_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable;
  
  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n google/protobuf/descriptor.proto\022\017goog" +
      "le.protobuf\"G\n\021FileDescriptorSet\0222\n\004file" +
      "\030\001 \003(\0132$.google.protobuf.FileDescriptorP" +
      "roto\"\334\002\n\023FileDescriptorProto\022\014\n\004name\030\001 \001" +
      "(\t\022\017\n\007package\030\002 \001(\t\022\022\n\ndependency\030\003 \003(\t\022" +
      "6\n\014message_type\030\004 \003(\0132 .google.protobuf." +
      "DescriptorProto\0227\n\tenum_type\030\005 \003(\0132$.goo" +
      "gle.protobuf.EnumDescriptorProto\0228\n\007serv" +
      "ice\030\006 \003(\0132\'.google.protobuf.ServiceDescr" +
      "iptorProto\0228\n\textension\030\007 \003(\0132%.google.p",
      "rotobuf.FieldDescriptorProto\022-\n\007options\030" +
      "\010 \001(\0132\034.google.protobuf.FileOptions\"\251\003\n\017" +
      "DescriptorProto\022\014\n\004name\030\001 \001(\t\0224\n\005field\030\002" +
      " \003(\0132%.google.protobuf.FieldDescriptorPr" +
      "oto\0228\n\textension\030\006 \003(\0132%.google.protobuf" +
      ".FieldDescriptorProto\0225\n\013nested_type\030\003 \003" +
      "(\0132 .google.protobuf.DescriptorProto\0227\n\t" +
      "enum_type\030\004 \003(\0132$.google.protobuf.EnumDe" +
      "scriptorProto\022H\n\017extension_range\030\005 \003(\0132/" +
      ".google.protobuf.DescriptorProto.Extensi",
      "onRange\0220\n\007options\030\007 \001(\0132\037.google.protob" +
      "uf.MessageOptions\032,\n\016ExtensionRange\022\r\n\005s" +
      "tart\030\001 \001(\005\022\013\n\003end\030\002 \001(\005\"\224\005\n\024FieldDescrip" +
      "torProto\022\014\n\004name\030\001 \001(\t\022\016\n\006number\030\003 \001(\005\022:" +
      "\n\005label\030\004 \001(\0162+.google.protobuf.FieldDes" +
      "criptorProto.Label\0228\n\004type\030\005 \001(\0162*.googl" +
      "e.protobuf.FieldDescriptorProto.Type\022\021\n\t" +
      "type_name\030\006 \001(\t\022\020\n\010extendee\030\002 \001(\t\022\025\n\rdef" +
      "ault_value\030\007 \001(\t\022.\n\007options\030\010 \001(\0132\035.goog" +
      "le.protobuf.FieldOptions\"\266\002\n\004Type\022\017\n\013TYP",
      "E_DOUBLE\020\001\022\016\n\nTYPE_FLOAT\020\002\022\016\n\nTYPE_INT64" +
      "\020\003\022\017\n\013TYPE_UINT64\020\004\022\016\n\nTYPE_INT32\020\005\022\020\n\014T" +
      "YPE_FIXED64\020\006\022\020\n\014TYPE_FIXED32\020\007\022\r\n\tTYPE_" +
      "BOOL\020\010\022\017\n\013TYPE_STRING\020\t\022\016\n\nTYPE_GROUP\020\n\022" +
      "\020\n\014TYPE_MESSAGE\020\013\022\016\n\nTYPE_BYTES\020\014\022\017\n\013TYP" +
      "E_UINT32\020\r\022\r\n\tTYPE_ENUM\020\016\022\021\n\rTYPE_SFIXED" +
      "32\020\017\022\021\n\rTYPE_SFIXED64\020\020\022\017\n\013TYPE_SINT32\020\021" +
      "\022\017\n\013TYPE_SINT64\020\022\"C\n\005Label\022\022\n\016LABEL_OPTI" +
      "ONAL\020\001\022\022\n\016LABEL_REQUIRED\020\002\022\022\n\016LABEL_REPE" +
      "ATED\020\003\"\214\001\n\023EnumDescriptorProto\022\014\n\004name\030\001",
      " \001(\t\0228\n\005value\030\002 \003(\0132).google.protobuf.En" +
      "umValueDescriptorProto\022-\n\007options\030\003 \001(\0132" +
      "\034.google.protobuf.EnumOptions\"l\n\030EnumVal" +
      "ueDescriptorProto\022\014\n\004name\030\001 \001(\t\022\016\n\006numbe" +
      "r\030\002 \001(\005\0222\n\007options\030\003 \001(\0132!.google.protob" +
      "uf.EnumValueOptions\"\220\001\n\026ServiceDescripto" +
      "rProto\022\014\n\004name\030\001 \001(\t\0226\n\006method\030\002 \003(\0132&.g" +
      "oogle.protobuf.MethodDescriptorProto\0220\n\007" +
      "options\030\003 \001(\0132\037.google.protobuf.ServiceO" +
      "ptions\"\177\n\025MethodDescriptorProto\022\014\n\004name\030",
      "\001 \001(\t\022\022\n\ninput_type\030\002 \001(\t\022\023\n\013output_type" +
      "\030\003 \001(\t\022/\n\007options\030\004 \001(\0132\036.google.protobu" +
      "f.MethodOptions\"\244\003\n\013FileOptions\022\024\n\014java_" +
      "package\030\001 \001(\t\022\034\n\024java_outer_classname\030\010 " +
      "\001(\t\022\"\n\023java_multiple_files\030\n \001(\010:\005false\022" +
      "F\n\014optimize_for\030\t \001(\0162).google.protobuf." +
      "FileOptions.OptimizeMode:\005SPEED\022!\n\023cc_ge" +
      "neric_services\030\020 \001(\010:\004true\022#\n\025java_gener" +
      "ic_services\030\021 \001(\010:\004true\022!\n\023py_generic_se" +
      "rvices\030\022 \001(\010:\004true\022C\n\024uninterpreted_opti",
      "on\030\347\007 \003(\0132$.google.protobuf.Uninterprete" +
      "dOption\":\n\014OptimizeMode\022\t\n\005SPEED\020\001\022\r\n\tCO" +
      "DE_SIZE\020\002\022\020\n\014LITE_RUNTIME\020\003*\t\010\350\007\020\200\200\200\200\002\"\270" +
      "\001\n\016MessageOptions\022&\n\027message_set_wire_fo" +
      "rmat\030\001 \001(\010:\005false\022.\n\037no_standard_descrip" +
      "tor_accessor\030\002 \001(\010:\005false\022C\n\024uninterpret" +
      "ed_option\030\347\007 \003(\0132$.google.protobuf.Unint" +
      "erpretedOption*\t\010\350\007\020\200\200\200\200\002\"\224\002\n\014FieldOptio" +
      "ns\022:\n\005ctype\030\001 \001(\0162#.google.protobuf.Fiel" +
      "dOptions.CType:\006STRING\022\016\n\006packed\030\002 \001(\010\022\031",
      "\n\ndeprecated\030\003 \001(\010:\005false\022\034\n\024experimenta" +
      "l_map_key\030\t \001(\t\022C\n\024uninterpreted_option\030" +
      "\347\007 \003(\0132$.google.protobuf.UninterpretedOp" +
      "tion\"/\n\005CType\022\n\n\006STRING\020\000\022\010\n\004CORD\020\001\022\020\n\014S" +
      "TRING_PIECE\020\002*\t\010\350\007\020\200\200\200\200\002\"]\n\013EnumOptions\022" +
      "C\n\024uninterpreted_option\030\347\007 \003(\0132$.google." +
      "protobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"" +
      "b\n\020EnumValueOptions\022C\n\024uninterpreted_opt" +
      "ion\030\347\007 \003(\0132$.google.protobuf.Uninterpret" +
      "edOption*\t\010\350\007\020\200\200\200\200\002\"`\n\016ServiceOptions\022C\n",
      "\024uninterpreted_option\030\347\007 \003(\0132$.google.pr" +
      "otobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"_\n" +
      "\rMethodOptions\022C\n\024uninterpreted_option\030\347" +
      "\007 \003(\0132$.google.protobuf.UninterpretedOpt" +
      "ion*\t\010\350\007\020\200\200\200\200\002\"\205\002\n\023UninterpretedOption\022;" +
      "\n\004name\030\002 \003(\0132-.google.protobuf.Uninterpr" +
      "etedOption.NamePart\022\030\n\020identifier_value\030" +
      "\003 \001(\t\022\032\n\022positive_int_value\030\004 \001(\004\022\032\n\022neg" +
      "ative_int_value\030\005 \001(\003\022\024\n\014double_value\030\006 " +
      "\001(\001\022\024\n\014string_value\030\007 \001(\014\0323\n\010NamePart\022\021\n",
      "\tname_part\030\001 \002(\t\022\024\n\014is_extension\030\002 \002(\010B)" +
      "\n\023com.google.protobufB\020DescriptorProtosH" +
      "\001"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        @Override
		public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_google_protobuf_FileDescriptorSet_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_FileDescriptorSet_descriptor,
              new java.lang.String[] { "File", },
              com.google.protobuf.DescriptorProtos.FileDescriptorSet.class,
              com.google.protobuf.DescriptorProtos.FileDescriptorSet.Builder.class);
          internal_static_google_protobuf_FileDescriptorProto_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_FileDescriptorProto_descriptor,
              new java.lang.String[] { "Name", "Package", "Dependency", "MessageType", "EnumType", "Service", "Extension", "Options", },
              com.google.protobuf.DescriptorProtos.FileDescriptorProto.class,
              com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder.class);
          internal_static_google_protobuf_DescriptorProto_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_google_protobuf_DescriptorProto_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_DescriptorProto_descriptor,
              new java.lang.String[] { "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "Options", },
              com.google.protobuf.DescriptorProtos.DescriptorProto.class,
              com.google.protobuf.DescriptorProtos.DescriptorProto.Builder.class);
          internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor =
            internal_static_google_protobuf_DescriptorProto_descriptor.getNestedTypes().get(0);
          internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor,
              new java.lang.String[] { "Start", "End", },
              com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.class,
              com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder.class);
          internal_static_google_protobuf_FieldDescriptorProto_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_FieldDescriptorProto_descriptor,
              new java.lang.String[] { "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "Options", },
              com.google.protobuf.DescriptorProtos.FieldDescriptorProto.class,
              com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder.class);
          internal_static_google_protobuf_EnumDescriptorProto_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_EnumDescriptorProto_descriptor,
              new java.lang.String[] { "Name", "Value", "Options", },
              com.google.protobuf.DescriptorProtos.EnumDescriptorProto.class,
              com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder.class);
          internal_static_google_protobuf_EnumValueDescriptorProto_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_EnumValueDescriptorProto_descriptor,
              new java.lang.String[] { "Name", "Number", "Options", },
              com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.class,
              com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder.class);
          internal_static_google_protobuf_ServiceDescriptorProto_descriptor =
            getDescriptor().getMessageTypes().get(6);
          internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_ServiceDescriptorProto_descriptor,
              new java.lang.String[] { "Name", "Method", "Options", },
              com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.class,
              com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder.class);
          internal_static_google_protobuf_MethodDescriptorProto_descriptor =
            getDescriptor().getMessageTypes().get(7);
          internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_MethodDescriptorProto_descriptor,
              new java.lang.String[] { "Name", "InputType", "OutputType", "Options", },
              com.google.protobuf.DescriptorProtos.MethodDescriptorProto.class,
              com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder.class);
          internal_static_google_protobuf_FileOptions_descriptor =
            getDescriptor().getMessageTypes().get(8);
          internal_static_google_protobuf_FileOptions_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_FileOptions_descriptor,
              new java.lang.String[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "OptimizeFor", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "UninterpretedOption", },
              com.google.protobuf.DescriptorProtos.FileOptions.class,
              com.google.protobuf.DescriptorProtos.FileOptions.Builder.class);
          internal_static_google_protobuf_MessageOptions_descriptor =
            getDescriptor().getMessageTypes().get(9);
          internal_static_google_protobuf_MessageOptions_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_MessageOptions_descriptor,
              new java.lang.String[] { "MessageSetWireFormat", "NoStandardDescriptorAccessor", "UninterpretedOption", },
              com.google.protobuf.DescriptorProtos.MessageOptions.class,
              com.google.protobuf.DescriptorProtos.MessageOptions.Builder.class);
          internal_static_google_protobuf_FieldOptions_descriptor =
            getDescriptor().getMessageTypes().get(10);
          internal_static_google_protobuf_FieldOptions_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_FieldOptions_descriptor,
              new java.lang.String[] { "Ctype", "Packed", "Deprecated", "ExperimentalMapKey", "UninterpretedOption", },
              com.google.protobuf.DescriptorProtos.FieldOptions.class,
              com.google.protobuf.DescriptorProtos.FieldOptions.Builder.class);
          internal_static_google_protobuf_EnumOptions_descriptor =
            getDescriptor().getMessageTypes().get(11);
          internal_static_google_protobuf_EnumOptions_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_EnumOptions_descriptor,
              new java.lang.String[] { "UninterpretedOption", },
              com.google.protobuf.DescriptorProtos.EnumOptions.class,
              com.google.protobuf.DescriptorProtos.EnumOptions.Builder.class);
          internal_static_google_protobuf_EnumValueOptions_descriptor =
            getDescriptor().getMessageTypes().get(12);
          internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_EnumValueOptions_descriptor,
              new java.lang.String[] { "UninterpretedOption", },
              com.google.protobuf.DescriptorProtos.EnumValueOptions.class,
              com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder.class);
          internal_static_google_protobuf_ServiceOptions_descriptor =
            getDescriptor().getMessageTypes().get(13);
          internal_static_google_protobuf_ServiceOptions_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_ServiceOptions_descriptor,
              new java.lang.String[] { "UninterpretedOption", },
              com.google.protobuf.DescriptorProtos.ServiceOptions.class,
              com.google.protobuf.DescriptorProtos.ServiceOptions.Builder.class);
          internal_static_google_protobuf_MethodOptions_descriptor =
            getDescriptor().getMessageTypes().get(14);
          internal_static_google_protobuf_MethodOptions_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_MethodOptions_descriptor,
              new java.lang.String[] { "UninterpretedOption", },
              com.google.protobuf.DescriptorProtos.MethodOptions.class,
              com.google.protobuf.DescriptorProtos.MethodOptions.Builder.class);
          internal_static_google_protobuf_UninterpretedOption_descriptor =
            getDescriptor().getMessageTypes().get(15);
          internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_UninterpretedOption_descriptor,
              new java.lang.String[] { "Name", "IdentifierValue", "PositiveIntValue", "NegativeIntValue", "DoubleValue", "StringValue", },
              com.google.protobuf.DescriptorProtos.UninterpretedOption.class,
              com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder.class);
          internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor =
            internal_static_google_protobuf_UninterpretedOption_descriptor.getNestedTypes().get(0);
          internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor,
              new java.lang.String[] { "NamePart", "IsExtension", },
              com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.class,
              com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder.class);
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }
  
  public static void internalForceInit() {}
  
  // @@protoc_insertion_point(outer_class_scope)
}
